Site icon IT Draft

Локальный APT (Debian / Ubuntu) репозиторий на Centos 7

Локальный APT (Debian / Ubuntu) репозиторий на Centos 7

local apt repo

Репозиторий — место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.
Среди дистрибутивов Linux популярны репозитории с форматом метаданных YUM для дистрибутивов на базе RPM-пакетов, и репозитории с метаданными APT для дистрибутивов на основе DEB-пакетов.

Добавляем репозиторий EPEL и устанавливаем софт

$ sudo yum -y install epel-release
$ sudo yum -y install debmirror

Создаем каталог, где будет находиться репозиторий

$ mkdir -p /var/www/repo/debian

Запускаем синхронизацию и зеркалом Яндекса

$ debmirror --progress --i18n --method=rsync --host=mirror.yandex.ru --dist=buster --ignore-small-errors --ignore-release-gpg --exclude="games" --nosource --arch=amd64 /var/www/repo/debian

Автоматическое обновление репозиториев

Создаем скрипты для автоматического обновления локального зеркала с источником

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


$ nano /home/debmirror-debian.sh
#!/bin/sh
arch=amd64
section=main,contrib,non-free
release=buster,buster-updates
server=mirror.yandex.ru
inPath=debian
proto=rsync
outPath=/var/www/repo/debian/
debmirror --arch $arch \
--passive \
--progress \
--nosource \
--i18n \
--ignore-small-errors \
--ignore-release-gpg \
--exclude='games' \
--exclude='/Translation-.*\.bz2' \
--include='/Translation-en.*\.bz2' \
--include='/Translation-ru.*\.bz2' \
--section $section \
--host $server \
--dist $release \
--method $proto \
--root $inPath \
$outPath
$ nano /home/debmirror-debian-security.sh
#!/bin/sh
arch=amd64
section=main,contrib,non-free
release=buster/updates
server=mirror.yandex.ru
inPath=debian-security
proto=rsync
outPath=/var/www/repo/debian-security/
debmirror --arch $arch \
--passive \
--progress \
--nosource \
--i18n \
--ignore-small-errors \
--ignore-release-gpg \
--exclude='games' \
--exclude='/Translation-.*\.bz2' \
--include='/Translation-en.*\.bz2' \
--include='/Translation-ru.*\.bz2' \
--section $section \
--host $server \
--dist $release \
--method $proto \
--root $inPath \
$outPath

Используемые параметры:

Делаем скрипты исполняемыми

$ sudo chmod +x /home/debmirror-debian.sh
$ sudo chmod +x /home/debmirror-debian-security.sh

Приписываем эти скрипты в crontab для автоматическоей синхронизации по рассписанию

$ crontab -e
# ежедневно в два часа ночи
0 2 * * * /home/debmirror-debian.sh
# ежедневно в три часа ночи
0 3 * * * /home/debmirror-debian-security.sh

Для нормально работы с цифровой подписью надо установить GnuPG и импортировать подпись репозитория

Репозиторий на диске занимает приблизительно 150 Gb

Далее надо поднять вэб-сервер.
Пример конфигурации NGINX:

$ sudo cat /etc/nginx/site-avaliable/repo.conf
server {
    listen 80 default_server;
    server_name _;
    root /var/www/repo;
    charset UTF-8;
    default_type text/plain;

    location / {
        autoindex_exact_size off;
        autoindex on;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

Некоторые ошибки, которые встречаются в процессе обновления локального репозитория с источником

При первом запуске, будут ошибки:

...
[GNUPG:] NO_PUBKEY 04EE7237B7D453EC
...
[GNUPG:] NO_PUBKEY 648ACFD622F3D138
...
[GNUPG:] NO_PUBKEY DCC9EFBF77E11517
$ gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 04EE7237B7D453EC
$ gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 648ACFD622F3D138
$ gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys DCC9EFBF77E11517

Посмотреть список gpg-ключей

$ gpg --list-keys
$ gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --list-key

Еще некоторые ошибки:

Errors:
 Download of dists/sid/Release failed
Failed to download some Release or Release.gpg files!

Решение, редактируем файл /etc/debmirror.conf, комментируем строки

@dists="sid";
@sections="main,main/debian-installer,contrib,non-free";
@arches="i386";

Еще одна ошибка

firewall blocking port 11371

Решение

$ gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E084DAB9
$ gpg -a --export E084DAB9 | sudo apt-key add -

Добавить локальные репозитории на клиентские ПК / сервера

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

$ sudo nano /etc/apt/suorces.list
deb http://10.2.12.21/debian buster main contrib non-free
deb http://10.2.12.21/debian buster-updates main contrib non-free
deb http://10.2.12.21/debian-security buster/updates main contrib non-free
Exit mobile version