Настройка локальных репозиториев с ‘apt-mirror’ в системах Ubuntu и Debian

Когда сегодня скорость передачи данных и обычные скорости интернета измеряются в десятках гигабайт за мгновение даже для обычных интернет-клиентов, вы можете спросить: “Какова цель установки локального кэша репозитория в ЛВС?”

Setup Local Repositories in Ubuntu

Одной из причин является сокращение интернет-пропускной способности и высокая скорость загрузки пакетов из локального кэша. Но еще одной основной причиной должна быть конфиденциальность. Представьте себе, что клиенты вашей организации ограничены в доступе к Интернету, но их Linux-системам необходимы регулярные обновления системного программного обеспечения и безопасности, или просто требуются новые программные пакеты. Для упрощения представления, сервер, работающий в частной сети, содержит и предоставляет секретную конфиденциальную информацию только для ограниченного сегмента сети и быть никогда не должен быть подвергнут публичному интернету.

Это лишь несколько причин, почему вам следует создать локальное зеркало репозитория в вашей ЛВС, назначить краевой сервер для этой задачи и настроить внутренних клиентов для загрузки программного обеспечения из его зеркального кэша.

Ubuntu предоставляет пакет apt-mirror для синхронизации локального кэша с официальными репозиториями Ubuntu, зеркало, которое можно настроить через HTTP или FTP сервер для обмена своими программными пакетами с локальными клиентами системы.

Для полного кэша зеркала вашему серверу требуется как минимум 120G свободного места, зарезервированного для локальных репозиториев.

Требования

  1. Минимум 120G свободного места
  2. Установленный и настроенный сервер Proftpd в анонимном режиме.

Шаг 1: Настройка сервера

1. Первое, что вам может захотеться сделать, это определить ближайшие и самые быстрые зеркала Ubuntu поблизости от вашего местоположения, посетив страницу Зеркало архива Ubuntu и выбрав страну.

Ubuntu Archive Mirror

Если ваша страна предоставляет несколько зеркал, вам следует определить адрес зеркала и выполнить некоторые тесты на основе результатов ping или traceroute.

Select Mirror Location

2. Следующим шагом будет установка необходимого программного обеспечения для настройки локального зеркала репозитория. Установите пакеты apt-mirror и proftpd и настройте proftpd как демон автономной системы.

$ sudo apt-get install apt-mirror proftpd-basic
Install apt-mirror Proftpd
ProFTPD Configuration

3. Теперь пришло время настроить сервер apt-mirror. Откройте и отредактируйте файл /etc/apt/mirror.list, добавив ваши ближайшие местоположения (Шаг 1) – необязательно, если стандартные зеркала достаточно быстрые или вам не торопиться – и выберите путь в вашей системе, куда должны быть загружены пакеты. По умолчанию apt-mirror использует местоположение локального кэша /var/spool/apt-mirror, но в этом учебнике мы собираемся использовать измененный путь системы и указать директиву set base_path на местоположение /opt/apt-mirror.

$ sudo nano /etc/apt/mirror.list
Configure apt-mirror Server.

Также вы можете раскомментировать или добавить другие исходные списки перед директивой clean – включая исходные списки Debian – в зависимости от того, какие версии Ubuntu используют ваши клиенты. Вы можете добавить источники из 12.04, если хотите, но имейте в виду, что добавление дополнительных источников требует больше свободного места.

Для списков исходных файлов Debian посетите вики Debian или генератор списка исходных файлов Debian.

4. Все, что вам нужно сделать сейчас, – просто создать путь каталога и выполнить команду apt-mirror для синхронизации официальных репозиториев Ubuntu с нашим локальным зеркалом.

$ sudo mkdir -p /opt/apt-mirror
$ sudo apt-mirror
Create apt-mirror Paths

Как видите, apt-mirror продолжает с индексацией и загрузкой архивов, представляя общее количество загруженных пакетов и их размер. Как мы можем представить, 110–120 ГБ достаточно большой объем, чтобы потребовалось некоторое время для загрузки.

Вы можете выполнить команду ls, чтобы просмотреть содержимое каталога.

Verify apt-mirror Paths

После завершения первоначальной загрузки будущие загрузки будут маленькими.

5. Пока apt-mirror загружает пакеты, вы можете настроить свой сервер Proftpd. Первое, что вам нужно сделать, это создать конфигурационный файл без учетной записи для proftpd, запустив следующую команду.

$ sudo nano /etc/proftpd/conf.d/anonymous.conf

Затем добавьте следующее содержимое в файл anonymous.conf и перезапустите службу proftd.

<Anonymous ~ftp>
   User                    ftp
   Group                nogroup
   UserAlias         anonymous ftp
   RequireValidShell        off
#   MaxClients                   10
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>
 </Anonymous>
Configure ProFTPD

6. Следующим шагом является привязка пути apt-mirror к пути proftpd путем выполнения привязочного монтирования, выполнив команду.

$ sudo mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/  /srv/ftp/
Mount apt-mirror to ProFTP Path

Чтобы проверить это, выполните команду mount без параметров или опций.

$ mount
Verify Paths

7. Последним шагом является убедиться, что сервер Proftpd автоматически запускается после перезагрузки системы и директория mirror-cache также автоматически монтируется на пути FTP-сервера. Для автоматического включения proftpd выполните следующую команду.

$ sudo update-rc.d proftpd enable

Чтобы автоматически монтировать кэш apt-mirror на proftpd, откройте и отредактируйте файл /etc/rc.local.

$ sudo nano /etc/rc.local

Добавьте следующую строку перед директивой exit 0. Также используйте задержку 5 секунд перед попыткой монтирования.

sleep 5
sudo mount --bind  /opt/apt-mirror/mirror/archive.ubuntu.com/ /srv/ftp/
Auto Mount Apt Mirrors

Если вы загружаете пакеты из репозиториев Debian, выполните следующие команды и убедитесь, что соответствующие настройки для файла rc.local активированы.

$ sudo mkdir /srv/ftp/debian
$ sudo mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/debian/ /srv/ftp/debian/
Debian Repository Setup

8. Для ежедневной синхронизации apt-mirror вы также можете создать задание системного расписания, которое будет выполняться в 2 часа ночи каждый день. Запустите команду crontab, выберите предпочтительный редактор, затем добавьте следующий синтаксис строки.

$ sudo crontab –e
Daily apt-mirror Synchronization

На последней строке добавьте следующую строку.

0  2  *  *  *  /usr/bin/apt-mirror >> /opt/apt-mirror/mirror/archive.ubuntu.com/ubuntu/apt-mirror.log
Add Cron Entry for Synchronization

Теперь каждый день в 2 часа ночи ваш кэш репозитория системы будет синхронизироваться с официальными зеркалами Ubuntu и создавать файл журнала.

Шаг 2: Настройка клиентов

9. Чтобы настроить локальных клиентов Ubuntu, отредактируйте файл /etc/apt/source.list на клиентских компьютерах, указав IP-адрес или имя хоста сервера apt-mirror – замените протокол http на ftp, затем обновите систему.

deb ftp://192.168.1.13/ubuntu trusty universe
deb ftp://192.168.1.13/ubuntu trusty main restricted
deb ftp://192.168.1.13/ubuntu trusty-updates main restricted
## Ad so on….
Configure Clients

10. Чтобы просмотреть репозитории, фактически вы можете открыть браузер и указать IP-адрес сервера или его доменное имя, используя протокол FTP.

View Local Repositories

Та же система также применяется к клиентам и серверам Debian, единственное изменение, которое требуется, – это зеркало Debian и список источников.

Также, если вы устанавливаете свежую систему Ubuntu или Debian, укажите ваше локальное зеркало вручную с протоколом ftp, когда установщик спрашивает, какой репозиторий использовать.

Замечательно то, что у вас есть собственные локальные зеркала репозиториев, в том, что вы всегда находитесь в актуальном состоянии, и ваши локальные клиенты не должны подключаться к Интернету для установки обновлений или программного обеспечения.

Source:
https://www.tecmint.com/setup-local-repositories-in-ubuntu/