Создание локального репозитария ALTLinux
Добавлено: 26 июн 2010, 11:19
http://www.altlinux.org/Apt/IsoFromRepository
Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT.
Структура APT-RPM репозитория
APT-RPM репозиторий выглядит достаточно просто:
Код: Выделить всё
i586/
base/ # метаинформация
release
pkglist.reponame.bz2
...
RPMS.reponame/ # пакеты архитектуры i586
foobar-1.2-5.i586.rpm
x86_64/
base/ # метаинформация
release
pkglist.reponame.bz2
RPMS.reponame/ # пакеты архитектуры x86_64
foobar-1.2-5.x86_64.rpm
noarch/
base/ # метаинформация
release
pkglist.reponame.bz2
RPMS.reponame/ # архитектурно-независимые пакеты
foobar-doc-1.2-5.noarch.rpm</pre>
Код: Выделить всё
rpm file:<base directory> i586 reponame
rpm file:<base directory> x86_64 reponame
rpm file:<base directory> noarch reponame
Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.src.rpm), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один - reponame), можно посмотреть, к примеру, в репозитории ALT Linux Server. Обратите внимание, что в этом репозитории используется отдельная директория files для хранения всех пакетов, и директории RPMS.*/SRPMS.* являются символическими ссылками на поддиректории из files.
Размещение пакетов
Просто разложите пакеты по директориям {i586,i686,x86_64,noarch}/RPMS.reponame в зависимости от архитектуры пакета.
Создание/обновление метаинформации
Для создания/обновления метаинформации (файлов, хранящихся в директории base), используйте утилиту genbasedir из пакета apt-repo-tools (до 5.0/branch включительно -- apt-utils):
Код: Выделить всё
#!/bin/sh
REPO_DIR="$1"
REPO_NAME="$2"
for arch in i586 i686 x86_64 noarch; do
genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME
done
Создание «скелета» репозитория
Код: Выделить всё
#!/bin/sh
REPO_DIR="$1"
REPO_NAME="$2"
for i in i586 i686 x86_64 noarch; do
mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME"
done
Перед запуском этого скрипта, возможно нужно будет установить недостающие пакеты:
Код: Выделить всё
apt-get install /usr/bin/packages
После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.
Создание репозитория на основе содержимого кэша APT
Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).
втоматизация добавления пакетов в репозиторий
Воспользуйтесь скриптами из пакета sisyphus.