APT в ALT Linux/OwnRepo: различия между версиями
Mattaku (обсуждение | вклад) Нет описания правки |
Klark (обсуждение | вклад) |
||
(не показано 5 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
= Создание собственного репозитория = | == Создание собственного репозитория == | ||
Задача: создать собственный репозиторий со своими пакетами. | Задача: создать собственный репозиторий со своими пакетами. | ||
== Добавляем свой компонент == | === Добавляем свой компонент === | ||
Новый компонент будет называться '''extra'''. | Новый компонент будет называться '''extra'''. | ||
Репозиторий будет находится в каталоге {{path|/var/www/repo/extra}}. Создадим необходимую структуру для нового компонента: | |||
<source lang="text" highlight="1"># mkdir -p /var/www/repo/extra/x86_64/RPMS.extra</source> | |||
x86_64 | где: | ||
extra | *x86_64 — архитектура компонента; | ||
*extra — суффикс компонента. | |||
== Наполнение компонента и создание индексов == | === Наполнение компонента и создание индексов === | ||
Установим apt-repo-tools: | Установим {{pkg|apt-repo-tools}}: | ||
<source lang="text" highlight="1"># apt-get install apt-repo-tools</source> | |||
Скопируем пакеты RPM в каталог {{path|/var/www/repo/extra/x86_64/RPMS.extra}}: | Скопируем пакеты RPM в каталог {{path|/var/www/repo/extra/x86_64/RPMS.extra}}: | ||
<source lang="text" highlight="1"># cp -v *.rpm /var/www/repo/extra/x86_64/RPMS.extra</source> | |||
=== Создание ключей GPG === | |||
Создаем пару ключей GPG: | |||
<source lang="text" highlight="1"># gpg --gen-key | |||
Создаем пару ключей GPG | |||
Выберите тип ключа: | Выберите тип ключа: | ||
(1) RSA и RSA (по умолчанию) | (1) RSA и RSA (по умолчанию) | ||
Строка 34: | Строка 32: | ||
(3) DSA (только для подписи) | (3) DSA (только для подписи) | ||
(4) RSA (только для подписи) | (4) RSA (только для подписи) | ||
Ваш выбор? | Ваш выбор? </source> | ||
// '''Пишем 1'''. Так как нам необходим тип ключа RSA и RSA | // '''Пишем 1'''. Так как нам необходим тип ключа RSA и RSA | ||
длина ключей RSA может быть от 1024 до 4096 бит. | <source lang="text">длина ключей RSA может быть от 1024 до 4096 бит. | ||
Какой размер ключа Вам необходим? | Какой размер ключа Вам необходим? (2048)</source> | ||
// Пишем размер ключа '''2048''' | // Пишем размер ключа '''2048''' | ||
Запрошенный размер ключа - 2048 бит | <source lang="text">Запрошенный размер ключа - 2048 бит | ||
Выберите срок действия ключа. | Выберите срок действия ключа. | ||
0 = без ограничения срока действия | 0 = без ограничения срока действия | ||
Строка 50: | Строка 48: | ||
<n>m = срок действия - n месяцев | <n>m = срок действия - n месяцев | ||
<n>y = срок действия - n лет | <n>y = срок действия - n лет | ||
Срок действия ключа? | Срок действия ключа? (0)</source> | ||
// '''Ставим 0''' без ограничения срока действия. | // '''Ставим 0''' без ограничения срока действия. | ||
<source lang="text">Срок действия ключа не ограничен | |||
Все верно? (y/N) | Все верно? (y/N) </source> | ||
// '''Ставим y''' | // '''Ставим y''' | ||
Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его | <source lang="text">Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его | ||
из Вашего имени, комментария и адреса электронной почты в виде: | из Вашего имени, комментария и адреса электронной почты в виде: | ||
"Baba Yaga (pensioner) <yaga@deepforest.ru>" | "Baba Yaga (pensioner) <yaga@deepforest.ru>" | ||
Строка 69: | Строка 67: | ||
"Repo Signer <admin@company.net>" | "Repo Signer <admin@company.net>" | ||
Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход? | Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход? </source> | ||
// '''Пишем O''' (Принять) | // '''Пишем O''' (Принять) | ||
Строка 75: | Строка 73: | ||
Для защиты секретного ключа необходима фраза-пароль. | Для защиты секретного ключа необходима фраза-пароль. | ||
Далее, система предложит | Далее, система предложит сгенерировать случайные числа. Для этого нужно следовать инструкции, которая будет написана в нашем терминале (движение мышкой, набор текста и т.д). | ||
В конце, когда сформируется отпечаток ключа GPG, можно увидеть сформированный ID | В конце, когда сформируется отпечаток ключа GPG, можно увидеть сформированный ID. Пример: | ||
<source lang="text"> | |||
pub 2048R/AE3F8179 2022-04-20 | |||
Отпечаток | Отпечаток ключа = 5C1D 67E3 F163 EC94 A1BC 202B 68E6 302C AE3F 8179 | ||
</source> | |||
где, AE3F8179 — ID GPG ключа | |||
=== Создание индексов и подписи === | |||
Теперь | Теперь необходимо применить наш ID GPG ключа для создания и подписи индексов: | ||
<source lang="text" highlight="1"># genbasedir --create --bloat --progress --sign --default-key=AE3F8179 --topdir=/var/www/repo/extra x86_64 extra</source> | |||
{{Attention|Обратите внимание, что в поле --default-key нужно использовать наш ID (в данном случае AE3F8179).}} | |||
Далее, вводим фразу-пароль для доступа к секретному ключу пользователя. | Далее, вводим фразу-пароль для доступа к секретному ключу пользователя. | ||
Добавляем свой ключ, использованный для подписанного репозитория: | Добавляем свой ключ, использованный для подписанного репозитория: | ||
Создаем файл: | #Создаем файл: | ||
#:<source lang="text" highlight="1"># nano /etc/apt/vendors.list.d/own.list</source> | |||
#И в этом файле (own.list) прописываем отпечаток ключа (fingerprint) и имя: | |||
#:<source lang="text"> | |||
simple-key "own" { | |||
Fingerprint "5C1D67E3F163EC94A1BC202B68E6302CAE3F8179"; | |||
Name "Ваше имя <ваша электронная почта>"; | |||
}</source> | |||
{{Attention|Не забудьте поставить ; после поля Fingerprint и name.}} | |||
{{Attention|Отпечаток (Fingerprint) необходимо указать без пробелов.}} | |||
Импортируем публичный ключ в общую базу alt-gpgkeys: | |||
<source lang="text" highlight="1-2"># gpg --output ~/repo.gpg --export AE3F8179 | |||
# gpg --no-default-keyring --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import ~/repo.gpg</source> | |||
{{Attention|При обновлении пакета alt-gpgkeys ключ подписи репозитория будет удалён. Необходимо или поставить пакет {{pkg|alt-gpgkeys}} на Hold (https://www.altlinux.org/Hold) или написать filetrigger по добавлению ключа в эту базу при обновлении пакета. Пример опакечивания такого filetrigger см. ниже. Но следует иметь ввиду, что внесение изменений в связку ключей несёт риск утраты к ней доверия со стороны пользователей, а для сертифицированных ОС это ещё и нарушение КСЗ дистрибутива, не допускаемое формуляром.}} | |||
== Примеры пакетов == | |||
Ссылка на ваш репозиторий может быть опакечена в основной репозиторий любым маинтейнером. | |||
# Только ссылка на репозиторий: https://git.altlinux.org/gears/a/akvis-repo.git | |||
# Ссылка с GPG-подписью: https://git.altlinux.org/gears/a/angie-pro-repo.git | |||
== Добавление репозитория == | |||
Добавляем свой репозиторий с ключом для проверки (должен быть установлен пакет {{pkg|apt-repo}}): | |||
<source lang="text" highlight="1"># apt-repo add "rpm [own] file:/var/extra x86_64 extra"</source> | |||
[[Категория:APT]] | [[Категория:APT]] | ||
{{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}} |
Версия от 19:13, 27 апреля 2023
Создание собственного репозитория
Задача: создать собственный репозиторий со своими пакетами.
Добавляем свой компонент
Новый компонент будет называться extra.
Репозиторий будет находится в каталоге /var/www/repo/extra. Создадим необходимую структуру для нового компонента:
# mkdir -p /var/www/repo/extra/x86_64/RPMS.extra
где:
- x86_64 — архитектура компонента;
- extra — суффикс компонента.
Наполнение компонента и создание индексов
Установим apt-repo-tools:
# 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:
# gpg --gen-key
Выберите тип ключа:
(1) RSA и RSA (по умолчанию)
(2) DSA и Elgamal
(3) DSA (только для подписи)
(4) RSA (только для подписи)
Ваш выбор?
// Пишем 1. Так как нам необходим тип ключа RSA и RSA
длина ключей RSA может быть от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)
// Пишем размер ключа 2048
Запрошенный размер ключа - 2048 бит
Выберите срок действия ключа.
0 = без ограничения срока действия
<n> = срок действия - n дней
<n>w = срок действия - n недель
<n>m = срок действия - n месяцев
<n>y = срок действия - n лет
Срок действия ключа? (0)
// Ставим 0 без ограничения срока действия.
Срок действия ключа не ограничен
Все верно? (y/N)
// Ставим y
Для идентификации Вашего ключа необходим ID пользователя. Программа создаст его
из Вашего имени, комментария и адреса электронной почты в виде:
"Baba Yaga (pensioner) <yaga@deepforest.ru>"
Ваше настоящее имя: (Пишем наше настоящее имя)
Адрес электронной почты: (Пишем адрес электронной почты)
Комментарий:
Вы выбрали следующий ID пользователя:
"Repo Signer <admin@company.net>"
Сменить (N)Имя, (C)Комментарий, (E)адрес или (O)Принять/(Q)Выход?
// Пишем O (Принять)
Для защиты секретного ключа необходима фраза-пароль.
Далее, система предложит сгенерировать случайные числа. Для этого нужно следовать инструкции, которая будет написана в нашем терминале (движение мышкой, набор текста и т.д).
В конце, когда сформируется отпечаток ключа 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
Далее, вводим фразу-пароль для доступа к секретному ключу пользователя.
Добавляем свой ключ, использованный для подписанного репозитория:
- Создаем файл:
# nano /etc/apt/vendors.list.d/own.list
- И в этом файле (own.list) прописываем отпечаток ключа (fingerprint) и имя:
simple-key "own" { Fingerprint "5C1D67E3F163EC94A1BC202B68E6302CAE3F8179"; Name "Ваше имя <ваша электронная почта>"; }
Импортируем публичный ключ в общую базу alt-gpgkeys:
# gpg --output ~/repo.gpg --export AE3F8179
# gpg --no-default-keyring --keyring /usr/lib/alt-gpgkeys/pubring.gpg --import ~/repo.gpg
Примеры пакетов
Ссылка на ваш репозиторий может быть опакечена в основной репозиторий любым маинтейнером.
- Только ссылка на репозиторий: https://git.altlinux.org/gears/a/akvis-repo.git
- Ссылка с GPG-подписью: https://git.altlinux.org/gears/a/angie-pro-repo.git
Добавление репозитория
Добавляем свой репозиторий с ключом для проверки (должен быть установлен пакет apt-repo):
# apt-repo add "rpm [own] file:/var/extra x86_64 extra"