Локальный репозиторий alt linux

Содержание
  1. APT в ALT Linux/OwnRepo
  2. Добавляем свой компонент
  3. Наполнение компонента и создание индексов
  4. Создание ключей GPG
  5. Создание индексов и подписи
  6. Примеры пакетов
  7. Добавление репозитория
  8. APT в ALT Linux/CreateRepository
  9. Структура APT-RPM репозитория
  10. Размещение пакетов
  11. Создание/обновление метаинформации
  12. Полезные советы
  13. Создание «скелета» репозитория
  14. Добавление произвольного набора пакетов в репозиторий
  15. Создание репозитория на основе содержимого кэша APT
  16. Автоматизация добавления пакетов в репозиторий
  17. Запись репозитория на CD/DVD
  18. rpm-dir
  19. Git.alt/Путь пакета в сизиф
  20. Добавляем нужное содержимое и коммитим
  21. Отправляем содержимое локального git на gitery.altlinux.org
  22. Отправляем tag локального git на gitery.alt
  23. Запускаем сборку
  24. APT в ALT Linux/CreateRepository
  25. Структура APT-RPM репозитория
  26. Размещение пакетов
  27. Создание/обновление метаинформации
  28. Полезные советы
  29. Создание «скелета» репозитория
  30. Добавление произвольного набора пакетов в репозиторий
  31. Создание репозитория на основе содержимого кэша APT
  32. Автоматизация добавления пакетов в репозиторий
  33. Запись репозитория на CD/DVD
  34. rpm-dir

APT в ALT Linux/OwnRepo

Задача: создать собственный репозиторий со своими пакетами.

Добавляем свой компонент

Новый компонент будет называться extra.

Репозиторий будет находится в каталоге /var/www/repo/extra . Создадим необходимую структуру для нового компонента:

# mkdir -p /var/www/repo/extra/x86_64/RPMS.extra 

Наполнение компонента и создание индексов

# apt-get install apt-repo-tools 

Скопируем пакеты RPM в каталог /var/www/repo/extra/x86_64/RPMS.extra :

# cp -v *.rpm /var/www/repo/extra/x86_64/RPMS.extra 

Создание ключей GPG

# gpg --gen-key Выберите тип ключа: (1) RSA и RSA (по умолчанию) (2) DSA и Elgamal (3) DSA (только для подписи) (4) RSA (только для подписи) Ваш выбор?

// Пишем 1. Так как нам необходим тип ключа RSA и RSA

длина ключей RSA может быть от 1024 до 4096 бит. Какой размер ключа Вам необходим? (2048)

// Пишем размер ключа 2048

Запрошенный размер ключа - 2048 бит Выберите срок действия ключа. 0 = без ограничения срока действия = срок действия - n дней w = срок действия - n недель m = срок действия - n месяцев y = срок действия - n лет Срок действия ключа? (0)

// Ставим 0 без ограничения срока действия.

Срок действия ключа не ограничен Все верно? (y/N)
Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его из Вашего имени, комментария и адреса электронной почты в виде: "Baba Yaga (pensioner) " Ваше настоящее имя: (Пишем наше настоящее имя) Адрес электронной почты: (Пишем адрес электронной почты) Комментарий: Вы выбрали следующий ID пользователя: "Repo Signer " Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход?

Для защиты секретного ключа необходима фраза-пароль.

Далее, система предложит сгенерировать случайные числа. Для этого нужно следовать инструкции, которая будет написана в нашем терминале (движение мышкой, набор текста и т.д).

В конце, когда сформируется отпечаток ключа GPG, можно увидеть сформированный ID. Пример:

pub 2048R/AE3F8179 2022-04-20 Отпечаток ключа = 5C1D 67E3 F163 EC94 A1BC 202B 68E6 302C AE3F 8179

где, AE3F8179 — ID GPG ключа

Создание индексов и подписи

Теперь необходимо применить наш ID GPG ключа для создания и подписи индексов:

# genbasedir --create --bloat --progress --sign --default-key=AE3F8179 --topdir=/var/www/repo/extra x86_64 extra 

Внимание! Обратите внимание, что в поле —default-key нужно использовать наш ID (в данном случае AE3F8179).

Читайте также:  Установка консультанта плюс linux

Далее, вводим фразу-пароль для доступа к секретному ключу пользователя.

Добавляем свой ключ, использованный для подписанного репозитория:

# nano /etc/apt/vendors.list.d/own.list 

Импортируем публичный ключ в общую базу alt-gpgkeys:

# gpg --output ~/repo.gpg --export AE3F8179 # gpg --no-default-keyring --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import ~/repo.gpg 

Внимание! При обновлении пакета alt-gpgkeys ключ подписи репозитория будет удалён. Необходимо или поставить пакет alt-gpgkeys на Hold (https://www.altlinux.org/Hold) или написать filetrigger по добавлению ключа в эту базу при обновлении пакета. Пример опакечивания такого filetrigger см. ниже. Но следует иметь ввиду, что внесение изменений в связку ключей несёт риск утраты к ней доверия со стороны пользователей, а для сертифицированных ОС это ещё и нарушение КСЗ дистрибутива, не допускаемое формуляром.

Примеры пакетов

Ссылка на ваш репозиторий может быть опакечена в основной репозиторий любым маинтейнером.

Добавление репозитория

Добавляем свой репозиторий с ключом для проверки (должен быть установлен пакет apt-repo ):

# apt-repo add "rpm [own] file:/var/extra x86_64 extra" 

Источник

APT в ALT Linux/CreateRepository

Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней 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

Такая структура формирует три источника для APT ( — место, где располагается репозиторий):

rpm file: i586 reponame rpm file: x86_64 reponame rpm file: noarch reponame

NB: указываем noarch и один из архитектурно-зависимых репозиториев, всё в кучу не надо!

Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.src.rpm), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один — reponame), можно посмотреть, к примеру, в репозитории ALT Linux Server. Обратите внимание, что в этом репозитории используется отдельная директория files для хранения всех пакетов, и директории RPMS.*/SRPMS.* являются символическими ссылками на поддиректории из files.

Размещение пакетов

Просто разложите пакеты по директориям /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

Вот скрипт для добавления пакетов: Файл:Addpackages.sh

После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.

Читайте также:  Xorg server linux mint

Создание репозитория на основе содержимого кэша APT

Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).

Автоматизация добавления пакетов в репозиторий

Воспользуйтесь скриптами из пакета sisyphus.

Запись репозитория на CD/DVD

rpm-dir

Можно создать репозиторий в виде одного каталога без всяких индексов.

1. Создайте два вложенных каталога:

Примечание: Обратите внимание на наименование архитектуры (x86_64) и компонент dir (после RPMS.). Можете выбрать любые слова.

2. Скопируйте все файлы (например, все файлы *.rpm из /var/cache/apt/archives/ , которые устанавливались вручную или через обновления системы). Делать это нужно под root!

3. На машине, где нужны эти обновления, пропишите репозторий:

apt-repo add 'rpm-dir file:/ x86_64 dir'

Источник

Git.alt/Путь пакета в сизиф

Связываем локальный репозиторий с репозитарием на gitery.altlinux.org:

git remote add origin git.alt:packages/guake.git

Добавляем нужное содержимое и коммитим

Простейший вариант — есть чистые исходники.

Добавляем исходники в локальный репозиторий:

$ git commit -m "Upstream at `date +%F`"
$ git tag -s -m "0.4.0-alt0.2" 0.4.0-alt0.2

Тут есть тонкости с расположением файлов, .gear/rules и пр.

Другой вариант — когда уже собран SRPM.

$ gear-srpmimport quake-0.4.0-alt0.2.src.rpm

Если в gnupg по умолчанию стоит другой ключ, указываем нужный в опции «-u» (список своих ключей смотрим командой gpg -K ):

$ gear-create-tag -fu FAF2CACE
arc@arc-laptop ~/Documents/ALTLinux/devel/quake $ gear-create-tag -f Необходим пароль для доступа к секретному ключу пользователя: "Anton A. Vinogradov (for altlinux.org) " 1024-бит DSA ключ, ID FAF2CACE, создан 2009-12-27

Отправляем содержимое локального git на gitery.altlinux.org

Команда: git push origin master

arc@arc-netbook ALTLinux/devel/quake $ git push origin master Counting objects: 207, done. Delta compression using up to 2 threads. Compressing objects: 100% (109/109), done. Writing objects: 100% (115/115), 67.51 KiB, done. Total 115 (delta 84), reused 0 (delta 0) girar-sendmail: email notification about `refs/heads/master' update sent. Repacking repository. done Updating committer date cache. done To ssh://git.alt/people/arc/packages/quake.git 6e1f660..d90e600 master -> master

Отправляем tag локального git на gitery.alt

Команда: git push —tags или git push origin master —tags

arc@arc-netbook ALTLinux/devel/quake $ git push --tags Counting objects: 10, done. Delta compression using up to 2 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.14 KiB, done. Total 6 (delta 2), reused 0 (delta 0) girar-sendmail: email notification about `refs/tags/0.4.0-alt0.2' update sent. Repacking repository. done Updating committer date cache. done To ssh://git.alt/people/arc/packages/quake.git * [new tag] 0.4.0-alt0.2 -> 0.4.0-alt0.2

Если где-то ошиблись и нужно «передвинуть» тэг:

git tag -f -s -m "Move 0.4.0-alt0.2" 0.4.0-alt0.2 git push -f --tags

Запускаем сборку

Команда: ssh girar build packages/имя-пакета.git версия

arc@arc-netbook ALTLinux/devel/quake $ ssh girar build packages/quake.git 0.4.0-alt0.2 new task #22846: owner=arc repo=sisyphus task #22846: added #1: build tag 0.4.0-alt0.2 from /people/arc/packages/quake.git task #22846: queued, result will be emailed to arc@altlinux.org

Результат смотрим в почте и на странице http://git.altlinux.org/tasks/22846

Источник

APT в ALT Linux/CreateRepository

Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT.

Читайте также:  Top linux to file

Структура 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/ # архитектурно-независимые пакеты

Такая структура формирует три источника для APT ( — место, где располагается репозиторий):

rpm file: i586 reponame rpm file: x86_64 reponame rpm file: noarch reponame

NB: указываем noarch и один из архитектурно-зависимых репозиториев, всё в кучу не надо!

Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.src.rpm), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один — reponame), можно посмотреть, к примеру, в репозитории ALT Linux Server. Обратите внимание, что в этом репозитории используется отдельная директория files для хранения всех пакетов, и директории RPMS.*/SRPMS.* являются символическими ссылками на поддиректории из files.

Размещение пакетов

Просто разложите пакеты по директориям /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

Вот скрипт для добавления пакетов: Файл:Addpackages.sh

После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.

Создание репозитория на основе содержимого кэша APT

Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).

Автоматизация добавления пакетов в репозиторий

Воспользуйтесь скриптами из пакета sisyphus.

Запись репозитория на CD/DVD

rpm-dir

Можно создать репозиторий в виде одного каталога без всяких индексов.

1. Создайте два вложенных каталога:

Примечание: Обратите внимание на наименование архитектуры (x86_64) и компонент dir (после RPMS.). Можете выбрать любые слова.

2. Скопируйте все файлы (например, все файлы *.rpm из /var/cache/apt/archives/ , которые устанавливались вручную или через обновления системы). Делать это нужно под root!

3. На машине, где нужны эти обновления, пропишите репозиторий:

apt-repo add 'rpm-dir file:/ x86_64 dir'

rpm-dir используется в случае, когда в репозитории нет каталога base с индексом пакетов. Его удобно использовать, например, для подключения репозитория с несколькими свежесобранными пакетами. Так делает hasher в режиме по умолчанию (—with-stuff). Однако в этом случае apt-get update будет открывать каждый пакет в репозитории, для большого набора (в частности, для зеркала) такой способ не годится.

Источник

Оцените статью
Adblock
detector