Содержание

Skip to end of metadata
Go to start of metadata

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

  • 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

где:

  • Codename: smolensk - кодовое имя дистрибутива:
    • smolensk
    • orel
  • Suite: stable - ветка дистрибутива:
    • stable
    • current
    • unstable
  • Version: 1.6.0 - номер версии
  • Architectures: архитектура дистрибутива:
      •  i386
      • amd64
      • source (если репозиторий будет содержать исходный код пакетов)
  • Components: компоненты дистрибутива:
    • main - свободно распространяемое ПО
    • contrib - свободно распространяемое ПО с зависимостями от несвободного ПО
    • non-free - несвободное ПО
  • UDebComponents: main - Udeb-пакеты
  • Contents: - файлы со списком содержимого каждого пакета
  • SignWith: yes - подпись репозитория (можно не указывать, если не планируете подписывать репозиторий ключом gnupg)

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

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

После этого можно наполнять репозиторий пакетами.

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

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

Добавление всех пакетов deb:

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


При появлении ошибки: No priority given for '<имя_пакета>', skipping.

Выполнить добавление пакета с игнорированием приоритета с помощью опции -P:

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

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

sudo reprepro -b <путь_к_репозиторию> includeudeb <кодовое_имя_дистрибутива(smolensk)> <путь_к_пакету/имя_пакета>.udeb

Добавление пакета с исходным текстом:

sudo reprepro -b <путь_к_репозиторию> includedsc <кодовое_имя_дистрибутива(smolensk)> <путь_к_пакету/имя_пакета>.dsc

Удаление пакета:

sudo reprepro -b <путь_к_репозиторию> remove <кодовое_имя_дистрибутива(smolensk)> <имя_пакета_без_версии>

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

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

sudo gpg --gen-key

Добавить в <путь_к_репозиторию>/conf/distributions строку:

SignWith: yes

Далее выполнить:

sudo reprepro --ask-passphrase -b <путь_к_репозиторию/имя> export (параметр --ask-passphrase запрашивает пароль для gpg-ключа)

и наполнить репозиторий:

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

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

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

sudo gpg --list-keys

В результате получится примерно такой результат:

pub    2048R/2578DA4E 2017-06-19
uid RusBITech (Key for signing) <mail@rusbitech.ru>

Далее выполнить:

sudo gpg --armor --output repo_gpg.key --export 2578DA4E

В результате получим файл repo_gpg.key в текущем каталоге, который необходимо скопировать на компьютер, где будет использоваться данный репозиторий, и добавить его в систему:

sudo apt-key add repo_gpg.key

Apache2 + reprepro

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

sudo apt install apache2

Если репозиторий расположен по другому пути, например, /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