Как настроить локальный сервер репозитория 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
Сохраните и выйдите из файла.
Если вы могли заметить, что я использовал репозитории пакетов 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
Вышеупомянутую команду также можно запустить в фоновом режиме, используя команду 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/
Шаг 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 update ‘, чтобы убедиться, что клиентский компьютер получает обновление с нашего локального сервера репозитория apt,
$ sudo apt update
Отлично, приведенный выше вывод подтверждает, что клиентский компьютер успешно может подключиться к нашему репозиторию для получения пакетов и обновлений. Это все из этой статьи, я надеюсь, что это руководство поможет вам настроить локальный сервер репозитория apt в системе Ubuntu 20.04.