Page tree
Skip to end of metadata
Go to start of metadata

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2

  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

  • Astra Linux Common Edition 2.12

Создание структуры репозитория

Установить пакет reprepro:

sudo apt install reprepro
Создать каталог для размещения репозитория:
sudo mkdir <путь_к_репозиторию>

Создать в каталоге репозитория подкаталог conf:

sudo mkdir <путь_к_репозиторию>/conf

Создать в подкаталоге conf файл distributions следующего содержания:

Origin: Debian
Codename: smolensk
Suite: stable
Version: 1.6.0
Architectures: amd64
Components: main contrib non-free
UDebComponents: main
SignWith: yes

где:

  • Codename: smolensk - кодовое имя дистрибутива:
    • Для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 - 1.7_x86-64;
    • Для Astra Linux Special Edition РУСБ.10152-02 очередное обновление 1.7 - 4.7_arm64;
    • Для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 - smolensk;
    • Для Astra Linux Common Edition - orel.
  • Suite: stable - ветка дистрибутива:
    • stable
    • current
    • unstable
  • Version: 1.6.0 - номер версии (можно использовать номер очередного обновления и актуально оперативного обновления);
  • Architectures: архитектура дистрибутива:
      •  i386 (в Astra Linux не используется);
      • amd64;
      • source (если репозиторий будет содержать исходный код пакетов);
  • Components: компоненты дистрибутива:
    • main - свободно распространяемое ПО
    • contrib - свободно распространяемое ПО с зависимостями от несвободного ПО
    • non-free - несвободное ПО
  • UDebComponents: main - Udeb-пакеты
  • Contents: - файлы со списком содержимого каждого пакета
  • SignWith: yes - подпись репозитория (можно не указывать, если не планируете подписывать репозиторий ключом gnupg)


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

sudo reprepro -b <путь_к_репозиторию> clearvanished


Далее выполнить команду:

sudo reprepro -b <путь_к_репозиторию> export
После этого можно наполнять репозиторий пакетами.

Добавление бинарного deb пакета:

sudo reprepro -b <путь_к_репозиторию> includedeb <кодовое_имя_дистрибутива> <путь_к_пакету/имя_пакета>.deb
Добавление всех пакетов deb:
sudo reprepro -b <путь_к_репозиторию> includedeb <кодовое_имя_дистрибутива> <путь_к_пакетам>/*.deb

При появлении ошибки: No priority given for '<имя_пакета>', skipping выполнить добавление пакета с игнорированием приоритета с помощью опции -P:

sudo reprepro -P -V -b <путь_к_репозиторию> includedeb <кодовое_имя_дистрибутива> <путь_к_пакету/имя_пакета>.deb

Добавление бинарного udeb пакета:

sudo reprepro -b <путь_к_репозиторию> includeudeb <кодовое_имя_дистрибутива> <путь_к_пакету/имя_пакета>.udeb
Добавление пакета с исходным текстом:
sudo reprepro -b <путь_к_репозиторию> includedsc <кодовое_имя_дистрибутива> <путь_к_пакету/имя_пакета>.dsc
Удаление пакета:
sudo reprepro -b <путь_к_репозиторию> remove <кодовое_имя_дистрибутива> <имя_пакета_без_версии>

Использование неподписанного репозитория

Использование неподписанных репозиториев по умолчанию запрещено. Рекомендуется использовать только подписанные репозитории. См. далее Подписание репозитория.

Для того, чтобы разрешить использовать неподписанные репозитории следует в описание репозитория на компьютере, на котором выполняется установка, добавить переметр [trusted=yes]. При этом строка описания репозитория будет выглядеть так:

deb [trusted=yes] https://download.astralinux.ru/astra/stable/orel/repository orel contrib main non-free

Подробнее см. Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов.

Подписание репозитория

Сгенерировать gpg-ключ (RSA или DSA):

gpg --gen-key
Команда генерации ключа запросит:

  • имя пользователя;
  • адрес e-main пользователя; 
  • пароль;

Ввести запрошенные данные и подтвердить создание ключа.

Убедиться, что в фале <путь_к_репозиторию>/conf/distributions присутствует строка:

SignWith: yes

Далее выполнить команду:

sudo reprepro --ask-passphrase -b <путь_к_репозиторию/имя> export
(параметр --ask-passphrase запрашивает пароль для gpg-ключа), после чего наполнить репозиторий:
sudo reprepro --ask-passphrase -b <путь_к_репозиторию/имя> includedeb <кодовое имя дистрибутива> <имя_пакета>.deb
Чтобы пользоваться подписанным репозиторием необходимо:

  1. На компьютере где создавался репозиторий получить список ключей:

    gpg --list-keys

    gpg: проверка таблицы доверия
    gpg: marginals needed: 3  completes needed: 1  trust model: pgp
    gpg: глубина: 0  достоверных:   1  подписанных:   0  доверие: 0-, 0q, 0n, 0m, 0f, 1u
    gpg: срок следующей проверки таблицы доверия 2024-02-10
    /home/le/.gnupg/pubring.kbx
    ---------------------------
    pub   rsa3072 2022-02-10 [SC] [   годен до: 2024-02-10]
          ECBD2F097D49CD738EB378201623A5978DBFC107
    uid         [  абсолютно ] support <support@astralinux.ru>
    sub   rsa3072 2022-02-10 [E] [   годен до: 2024-02-10]

  2. Выполнить экспорт ключа, используя адрес электронной почты:

    sudo gpg --armor --output repo_gpg.key --export support@astralinux.ru
    В результате будет получен файл repo_gpg.key в текущем каталоге, который необходимо скопировать на компьютер, где будет использоваться данный репозиторий, и добавить его в систему (для добавления ключа нужны привилегии суперпользовтаеля):
    sudo apt-key add repo_gpg.key

Apache2 + reprepro

Установить пакет:

sudo apt install apache2

Если репозиторий расположен вне каталога /var/www/html, например, в каталоге /srv/repo, то при необходимости создать симлинк с репозиторием:

sudo ln -s /srv/repo /var/www/html/repo

В /etc/apache2/sites-enabled/000-default.conf после строки DocumentRoot /var/www/html добавить:

<Directory /var/www/html/repo>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order Deny,Allow
    Allow from all
</Directory>

Перезапустить службу apache2:

sudo systemctl restart apache2