Создание локального репозитория Astra Linux

Создаем структуру каталогов

# tree -L 2 /repo
/repo
+-- aptftp.conf
+-- aptgenerate.con_
+-- aptgenerate.conf
+-- dists
¦   +-- 1.7_x86-64
¦   L-- stable -> 1.7_x86-64
+-- lost+found
+-- packages-amd64.db
+-- pool
¦   +-- contrib
¦   +-- main
¦   +-- non-free
¦   L-- Packages.gz
+-- repository-gostsums.txt
+-- sources-contrib.db
+-- sources-main.db
L-- sources-non-free.db

Создаем конфигурационные файлы

aptftp.conf

APT::FTPArchive::Release {
  Origin "GPN VKC Astra Linux";
  Label "Astra Linux 1.7";
  Suite "stable";
  Codename "sid";
  Architectures "amd64 i386 source";
  Components "main contrib non-free";
  Description "Astra Linux Packages";
};

aptgenerate.conf

Dir::ArchiveDir ".";
Dir::CacheDir ".";
TreeDefault::Directory "repo/";
#TreeDefault::SrcDirectory "repo/";
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Sources::Compress ". gzip bzip2";
Default::Contents::Compress "gzip bzip2";

BinDirectory "dists/stable/main/binary-amd64" {
  Packages "dists/stable/main/binary-amd64/Packages";
  Contents "dists/stable/Contents-amd64";
  SrcPackages "dists/stable/main/source/Sources";
};

Tree "dists/stable" {
  Sections "main contrib non-free"; # contrib non-free";
  Architectures "amd64 source";
};

Индексируем каталог

Надо находясь в каталоге hci выполнить

dpkg-scanpackages --arch amd64 ./ > dists/xena/main/binary-amd64/Packages

Другой вариант

dpkg-scanpackages -t deb /repo/pool | gzip | cat > /repo/Packages.gz
или
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Создаем Release-файлы

for pp in main contrib non-free do;
   apt-ftparchive release -c=aptftp.conf /repo/pool/$pp > /repo/pool/$pp/Release
done

Настройка Apache

Отключить авторизацию можно, задав “AstraMode off” в /etc/apache2/apache2.conf. При отключении авторизации Apache2 осуществляет все запросы только от одной системной учетной записи (по умолчанию www-data). Часть 1 РУСБ.10015-01 95 01-1, пункт 6.2.

Создаем конфигурацию виртуального хоста

    <VirtualHost *:80>
    ServerName repo 
    ServerAdmin webmaster@localhost
    DocumentRoot /repo/pool

    <Directory /repo/pool/>
    AuthType None
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    Order allow,deny
    Allow from all
    </Directory>

    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/repo_err.log
    CustomLog ${APACHE_LOG_DIR}/repo_acc.log combined
    </VirtualHost>

Создаем ключ репозитория

mkdir /var/www/repo.ovtsolutions.ru/keys
cd /var/www/repo.ovtsolutions.ru/keys

Генерирование ключа

gpg --gen-key

Далее ввести информацию о себе и подтвердить.

По завершении генерации будет выведена информация о сгенерированном ключе.

Выполнить экспорт ключа

gpg --armor --export > ovt-repo.asc

Где ovt-repo.asc.asc это имя файла ключа.

Добавление ключа в apt

apt-key add ovt-repo.asc

После этого можно проверить наличие ключа в списке apt:

apt-key list

Выведет все ключи, в том числе и созданный.

Если нужно удалить ключ из apt, то это выполняется командой:

apt-key del ID_ключа

Создаем Release

cd /var/www/repo.ovtsolutions.ru/hci/
apt-ftparchive release -c=/var/www/repo.ovtsolutions.ru/aptftp.conf dists/xena > dists/xena/Release

Подпишем Release

cd /var/www/repo.ovtsolutions.ru/hci/dists/xena
gpg --armor -o Release.gpg -sb Release

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

Создаем файл /etc/apt/sources.list.d/astra-vkc.list со следующим содержимым:

Локально

deb [trusted=yes] file:///repo/pool ./

Удаленно по http

deb http://10.55.82.106 /

17.05.2022