APT в ALT Linux/CreateRepository
Материал из ALT Linux Wiki
(Import from freesource.info) |
(→Запись репозитория на CD/DVD) |
||
(14 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | |||
- | |||
== Создание локального репозитория == | == Создание локального репозитория == | ||
Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT. | Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT. | ||
Строка 7: | Строка 5: | ||
APT-RPM репозиторий выглядит достаточно просто: | APT-RPM репозиторий выглядит достаточно просто: | ||
- | + | i586/ | |
- | + | base/ # метаинформация | |
- | + | release | |
- | + | pkglist.reponame.bz2 | |
- | + | ... | |
- | + | RPMS.reponame/ # пакеты архитектуры i586 | |
- | + | foobar-1.2-5.i586.rpm | |
- | x86_64/ | + | x86_64/ |
- | + | base/ # метаинформация | |
- | + | release | |
- | + | pkglist.reponame.bz2 | |
- | + | RPMS.reponame/ # пакеты архитектуры x86_64 | |
- | + | foobar-1.2-5.x86_64.rpm | |
- | noarch/ | + | noarch/ |
- | + | base/ # метаинформация | |
- | + | release | |
- | + | pkglist.reponame.bz2 | |
- | + | RPMS.reponame/ # архитектурно-независимые пакеты | |
- | + | foobar-doc-1.2-5.noarch.rpm</pre> | |
Такая структура формирует три источника для APT (<base directory> - место, где располагается репозиторий): | Такая структура формирует три источника для APT (<base directory> - место, где располагается репозиторий): | ||
- | + | rpm file:<base directory> i586 reponame | |
- | rpm file:<base directory> x86_64 reponame | + | rpm file:<base directory> x86_64 reponame |
- | rpm file:<base directory> noarch reponame | + | rpm file:<base directory> noarch reponame |
+ | |||
+ | '''NB:''' указываем noarch и ''один'' из архитектурно-зависимых репозиториев, всё в кучу не надо! | ||
Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (<tt>.src.rpm</tt>), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один - <tt>reponame</tt>), можно посмотреть, к примеру, в [http://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/Server/current/ репозитории ALT Linux Server]. Обратите внимание, что в этом репозитории используется отдельная директория <tt>files</tt> для хранения всех пакетов, и директории <tt>RPMS.*/SRPMS.*</tt> являются символическими ссылками на поддиректории из <tt>files</tt>. | Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (<tt>.src.rpm</tt>), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один - <tt>reponame</tt>), можно посмотреть, к примеру, в [http://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/Server/current/ репозитории ALT Linux Server]. Обратите внимание, что в этом репозитории используется отдельная директория <tt>files</tt> для хранения всех пакетов, и директории <tt>RPMS.*/SRPMS.*</tt> являются символическими ссылками на поддиректории из <tt>files</tt>. | ||
Строка 39: | Строка 39: | ||
== Создание/обновление метаинформации == | == Создание/обновление метаинформации == | ||
- | Для создания/обновления метаинформации (файлов, хранящихся в директории <tt>base</tt>), используйте утилиту <tt>genbasedir</tt> из пакета <tt>apt-utils</tt>: | + | Для создания/обновления метаинформации (файлов, хранящихся в директории <tt>base</tt>), используйте утилиту <tt>genbasedir</tt> из пакета <tt>apt-repo-tools</tt> (до 5.0/branch включительно -- <tt>apt-utils</tt>): |
- | < | + | <source lang="bash"> |
+ | #!/bin/sh | ||
REPO_DIR="$1" | REPO_DIR="$1" | ||
REPO_NAME="$2" | REPO_NAME="$2" | ||
for arch in i586 i686 x86_64 noarch; do | for arch in i586 i686 x86_64 noarch; do | ||
- | genbasedir --progress --topdir=$REPO_DIR $arch $REPO_NAME | + | genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME |
- | done</ | + | done |
+ | </source> | ||
+ | (подробнее про [http://lists.altlinux.org/pipermail/sisyphus/2009-July/340789.html --bloat]) | ||
== Полезные советы == | == Полезные советы == | ||
- | === Создание | + | === Создание «скелета» репозитория === |
- | < | + | <source lang="bash"> |
+ | #!/bin/sh | ||
REPO_DIR="$1" | REPO_DIR="$1" | ||
REPO_NAME="$2" | REPO_NAME="$2" | ||
for i in i586 i686 x86_64 noarch; do | for i in i586 i686 x86_64 noarch; do | ||
mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME" | mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME" | ||
- | done</ | + | done |
+ | </source> | ||
=== Добавление произвольного набора пакетов в репозиторий === | === Добавление произвольного набора пакетов в репозиторий === | ||
- | < | + | Перед запуском этого скрипта, возможно нужно будет установить недостающие пакеты: |
- | + | <source lang="bash"> | |
- | + | apt-get install /usr/bin/packages | |
- | + | </source> | |
- | + | Вот скрипт для добавления пакетов: | |
- | + | [[Файл:Addpackages.sh]] | |
- | + | ||
- | + | ||
- | + | ||
- | После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к | + | |
+ | После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду. | ||
=== Создание репозитория на основе содержимого кэша APT === | === Создание репозитория на основе содержимого кэша APT === | ||
Строка 86: | Строка 89: | ||
См. [[Apt/IsoFromRepository|Создание образов CD/DVD из репозитория]]. | См. [[Apt/IsoFromRepository|Создание образов CD/DVD из репозитория]]. | ||
+ | |||
+ | |||
+ | == rpm-dir == | ||
+ | |||
+ | Можно создать репозиторий в виде одного каталога без всяких индексов. | ||
+ | |||
+ | 1. Создайте два вложенных каталога: | ||
+ | |||
+ | mkdir -p x86-64/RPMS.dir | ||
+ | |||
+ | {{Note|Обратите внимание на наименование архитектуры (x86_64) и компонент dir (после RPMS.). Можете выбрать любые слова.}} | ||
+ | |||
+ | 2. Скопируйте все файлы (например, все файлы *.rpm из {{path|/var/cache/apt/archives/}}, которые устанавливались вручную или через обновления системы). Делать это нужно под root! | ||
+ | |||
+ | 3. На машине, где нужны эти обновления, пропишите репозторий: | ||
+ | |||
+ | apt-repo add 'rpm-dir file:/<путь-к-репозиторию> x86_64 dir' | ||
+ | |||
+ | |||
+ | {{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 10:17, 9 марта 2017
Содержание |
Создание локального репозитория
Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней 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>
Такая структура формирует три источника для APT (<base directory> - место, где располагается репозиторий):
rpm file:<base directory> i586 reponame rpm file:<base directory> x86_64 reponame rpm file:<base directory> noarch reponame
NB: указываем noarch и один из архитектурно-зависимых репозиториев, всё в кучу не надо!
Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.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
(подробнее про --bloat)
Полезные советы
Создание «скелета» репозитория
#!/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
Вот скрипт для добавления пакетов: Файл:Addpackages.sh
После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.
Создание репозитория на основе содержимого кэша APT
Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).
Автоматизация добавления пакетов в репозиторий
Воспользуйтесь скриптами из пакета sisyphus.
Запись репозитория на CD/DVD
См. Создание образов CD/DVD из репозитория.
rpm-dir
Можно создать репозиторий в виде одного каталога без всяких индексов.
1. Создайте два вложенных каталога:
mkdir -p x86-64/RPMS.dir
2. Скопируйте все файлы (например, все файлы *.rpm из /var/cache/apt/archives/, которые устанавливались вручную или через обновления системы). Делать это нужно под root!
3. На машине, где нужны эти обновления, пропишите репозторий:
apt-repo add 'rpm-dir file:/<путь-к-репозиторию> x86_64 dir'