Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

 

Одна из причин, по которой вы можете подумать о настройке локального сервера репозитория apt, — это минимизировать требуемую полосу пропускания, если у вас есть несколько экземпляров Ubuntu для обновления. Возьмем, к примеру, ситуацию, когда у вас около 20 серверов, которые необходимо обновлять дважды в неделю. Вы можете значительно сэкономить полосу пропускания, потому что все, что вам нужно сделать, это обновить все ваши системы по локальной сети с локального сервера репозитория.

В этом руководстве вы узнаете, как настроить локальный сервер репозитория apt в Ubuntu 20.04 LTS.

Предпосылки

  • Система Ubuntu 20.04 LTS
  • Веб-сервер Apache
  • Минимум 170 ГБ свободного дискового пространства в файловой системе / var / www / html
  • Стабильное интернет-соединение

Шаг 1) Создайте локальный веб-сервер Apache

Прежде всего, войдите в свой Ubuntu 20.04 и настройте веб-сервер Apache, как показано.

$ sudo apt install -y apache2

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

$ sudo systemctl enable apache2

Корневой каталог документов Apache по умолчанию находится по пути / var / www / html . Позже мы собираемся создать каталог репозитория по этому пути, который будет содержать необходимые пакеты.

Шаг 2) Создайте каталог репозитория пакетов

Затем мы создадим локальный каталог репозитория с именем ubuntu в пути / var / www / html.

$ sudo mkdir -p /var/www/html/ubuntu

Установите необходимые разрешения для созданного выше каталога.

$ sudo chown www-data:www-data /var/www/html/ubuntu

Шаг 3) Установите apt-mirror

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

$ sudo apt update
$ sudo apt install -y apt-mirror

Шаг 4) Настройте репозитории для зеркалирования или синхронизации

После установки apt-mirror его конфигурация « /etc/apt/mirrror.list » создается автоматически. Этот файл содержит список репозиториев, которые будут загружены или синхронизированы в локальной папке нашего сервера Ubuntu. В нашем случае локальная папка — это /var/www/html / ubuntu / . Прежде чем вносить изменения в этот файл, сначала сделайте резервную копию.

$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list-bak

Теперь отредактируйте файл с помощью редактора vi и обновите base_path и репозитории, как показано ниже.

$ sudo vi /etc/apt/mirror.list

############# config ###################
set base_path    /var/www/html/ubuntu
set nthreads     20
set _tilde 0
############# end config ##############
deb http://archive.ubuntu.com/ubuntu focal main restricted universe \
 multiverse
deb http://archive.ubuntu.com/ubuntu focal-security main restricted \
universe multiverse
deb http://archive.ubuntu.com/ubuntu focal-updates main restricted \
universe multiverse
clean http://archive.ubuntu.com/ubuntu

Сохраните и выйдите из файла.

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Если вы могли заметить, что я использовал репозитории пакетов Ubuntu 20.04 LTS и закомментировал репозитории пакетов src, так как у меня недостаточно места в моей системе. Если вы хотите загрузить или синхронизировать пакеты src, раскомментируйте строки, которые начинаются с deb-src.

Шаг 5) Начните зеркальное отображение удаленных репозиториев в локальную папку.

Перед тем, как начать зеркалирование или синхронизацию, сначала скопируйте сценарий postmirror.sh в папку /var/www/html/ubuntu/var, используя приведенную ниже команду cp .

$ sudo mkdir -p /var/www/html/ubuntu/var
$ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var

Теперь пора начать зеркальное отображение пакетов из удаленных репозиториев в локальную папку нашей системы. Выполните ниже:

$ sudo apt-mirror

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Вышеупомянутую команду также можно запустить в фоновом режиме, используя команду nohup ниже,

$ nohup sudo apt-mirror &

Чтобы отслеживать прогресс зеркалирования, используйте ниже:

$ tail nohup.out

В Ubuntu 20.04 LTS apt-mirror синхронизирует каталог CNF и его файлы, поэтому нам приходится вручную загружать и копировать папку и ее файлы. Поэтому, чтобы избежать ручной загрузки каталога CNF, создайте сценарий оболочки с приведенным ниже содержимым,

$ vi cnf.sh
#!/bin/bash
for p in "${1:-focal}"{,-{security,updates}}\
/{main,restricted,universe,multiverse};do >&2 echo "${p}"
wget -q -c -r -np -R "index.html*"\
 "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz"
wget -q -c -r -np -R "index.html*"\
 "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz"
done

сохраните и закройте скрипт.

Выполните сценарий для загрузки каталога CNF и его файлов.

$ chmod +x cnf.sh
$ bash  cnf.sh

Этот сценарий создаст папку с именем archive.ubuntu.com в текущем рабочем каталоге. Скопируйте эту папку в папку зеркала,

$ sudo cp -av archive.ubuntu.com  /var/www/html/ubuntu/mirror/

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

E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\
focal/restricted/cnf/Commands-amd64  404  Not Found [IP:169.144.104.219 80]
E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\
focal-updates/main/cnf/Commands-amd64  404  Not Found [IP:169.144.104.219 80]
E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\
focal-security/main/cnf/Commands-amd64  404  Not Found [IP:169.144.104.219 80]

Планирование автоматической синхронизации репозиториев

Настройте задание cron для автоматического обновления наших локальных репозиториев apt. Рекомендуется устанавливать это задание cron ежедневно в ночное время.

Запустите crontab -e и добавьте следующую команду, которая будет выполняться ежедневно в 1:00 ночи.

$ sudo crontab -e

00  01  *  *  *  /usr/bin/apt-mirror

Сохрани и закрой.

Примечание: если брандмауэр работает на сервере Ubuntu, разрешите порт 80, используя следующую команду

$ sudo ufw allow 80

Шаг 6) Доступ к локальному репозиторию APT через веб-браузер

Чтобы получить доступ к нашему локально настроенному репозиторию apt через веб-браузер, введите следующий URL-адрес:

http://<Server-IP>/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Шаг 7) Настройте клиент Ubuntu 20.04 для использования локального сервера репозитория apt

Чтобы проверить и убедиться, что наш сервер репозитория apt работает нормально или нет, у меня есть другая система Ubuntu 20.04 lts, ​​в которой я обновлю файл /etc/apt/sources.list, чтобы команда apt указывала на локальные репозитории вместо удаленных.

Итак, войдите в систему, измените следующее в sources.list

http://archive.ubuntu.com/ubuntu
to
http://169.144.104.219/ubuntu/mirror/archive.ubuntu.com/ubuntu

Здесь ‘169.144.104.219’ — это IP-адрес моего сервера репозитория apt, замените этот IP-адрес, который подходит для вашей среды.

Также не забудьте закомментировать все другие репозитории, которые не зеркалируются на нашем сервере репозитория apt. Итак, после внесения изменений в файл sources.list он будет выглядеть следующим образом:

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Теперь запустите команду ‘ apt update ‘, чтобы убедиться, что клиентский компьютер получает обновление с нашего локального сервера репозитория apt,

$ sudo apt update

Как настроить локальный сервер репозитория APT в Ubuntu 20.04

Отлично, приведенный выше вывод подтверждает, что клиентский компьютер успешно может подключиться к нашему репозиторию для получения пакетов и обновлений. Это все из этой статьи, я надеюсь, что это руководство поможет вам настроить локальный сервер репозитория apt в системе Ubuntu 20.04.