Кэширования пакетов apt-cacher-ng на Ubuntu Bionic

Posted by

Для нужд PXE сервиса где порой необходимо для лабораторных условий устанавливать операционные системы Ubuntu 18.04: Desktop & Server не с образа который лежит на NFS ресурсе, а выкачивать из интернета нужно не просто одно и тоже выкачивать, в смысле deb-пакеты, правильнее поднять на том же сервере где и PXE персональный кешируемый сервер пакетов. У меня уже есть заметка на этот счет, но это было давно и делалось для Ubuntu 11.04. Сейчас будет подробный разбор каким я себе это вижу по инсталляции утилиты apt-cacher-ng на Ubuntu 18.04 Server amd64 чтобы в дальнейшем адаптировать ее к PXE сервису.

ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.33.33.25/hg/dproject

ekzorchik@srv-bionic:~$ sudo ./dproject/default

Устанавливаю пакет apt-cacher-ng:

ekzorchik@srv-bionic:~$ apt-cache show apt-cacher-ng | grep Version

Version: 3.1-1build1

ekzorchik@srv-bionic:~$ sudo apt-get install apt-cacher-ng -y

ekzorchik@srv-bionic:~$ id apt-cacher-ng

uid=111(apt-cacher-ng) gid=114(apt-cacher-ng) groups=114(apt-cacher-ng)

Файлы пакетов буду хранить на отдельном каталоге (можно выделить отдельный диск):

ekzorchik@srv-bionic:~$ sudo mkdir -p /data/repository

ekzorchik@srv-bionic:~$ sudo mkdir -p /data/log

ekzorchik@srv-bionic:~$ sudo chown -R apt-cacher-ng:apt-cacher-ng /data

ekzorchik@srv-bionic:~$ sudo nano /etc/default/apt-cacher-ng

DISABLED=1

DAEMON_OPTS=" -c /etc/apt-cacher-ng "

ekzorchik@srv-bionic:~$ sudo systemctl restart apt-cacher-ng && sudo systemctl status apt-cacher-ng | head -n 5

● apt-cacher-ng.service - Apt-Cacher NG software download proxy

Loaded: loaded (/lib/systemd/system/apt-cacher-ng.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2018-12-09 21:06:07 MSK; 45ms ago

Main PID: 12717 (apt-cacher-ng)

Tasks: 1 (limit: 2320)

Проверяю, а поднимется ли теперь сервис apt-cacher-ng если система будет перезагружена:

ekzorchik@srv-bionic:~$ sudo reboot

Ответ да, сервис сам поднимается порт (3142) прослушивается:

ekzorchik@srv-bionic:~$ sudo systemctl status apt-cacher-ng | head -n 3

● apt-cacher-ng.service - Apt-Cacher NG software download proxy

Loaded: loaded (/lib/systemd/system/apt-cacher-ng.service; enabled; vendor preset: enabled)

Active: active (running) since Sun 2018-12-09 21:57:35 MSK; 46s ago

ekzorchik@srv-bionic:~$

ekzorchik@srv-bionic:~$ ss -tul | grep :3142

tcp LISTEN 0 128 172.33.33.25:3142 0.0.0.0:*

tcp LISTEN 0 128 127.0.0.1:3142 0.0.0.0:*

tcp LISTEN 0 128 [::1]:3142 [::]:*

Исходя из выше указанного, если на системе применяется фаервол вида ufw, то следует разрешить доступ из сети клиентских систем к нему:

ekzorchik@srv-bionic:~$ sudo ufw allow to 172.33.33.25 port 3142 from 172.33.33.0/24 proto tcp

Текущие репозитарии системы Ubuntu 18.04 Server amd64

ekzorchik@srv-bionic:~$ cat /etc/apt/sources.list | grep -v '^\#'

deb http://archive.ubuntu.com/ubuntu bionic main restricted

deb-src http://archive.ubuntu.com/ubuntu bionic main restricted

deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted

deb-src http://archive.ubuntu.com/ubuntu bionic-updates main restricted

deb http://archive.ubuntu.com/ubuntu bionic universe

deb-src http://archive.ubuntu.com/ubuntu bionic universe

deb http://archive.ubuntu.com/ubuntu bionic-updates universe

deb-src http://archive.ubuntu.com/ubuntu bionic-updates universe

deb http://archive.ubuntu.com/ubuntu bionic multiverse

deb-src http://archive.ubuntu.com/ubuntu bionic multiverse

deb http://archive.ubuntu.com/ubuntu bionic-updates multiverse

deb-src http://archive.ubuntu.com/ubuntu bionic-updates multiverse

deb http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

deb-src http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu bionic-security main restricted

deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted

deb http://security.ubuntu.com/ubuntu bionic-security universe

deb-src http://security.ubuntu.com/ubuntu bionic-security universe

deb http://security.ubuntu.com/ubuntu bionic-security multiverse

deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

ekzorchik@srv-bionic:~$ sudo nano /etc/apt-cacher-ng/acng.conf

#CacheDir: /var/cache/apt-cacher-ng

CacheDir: /data/repository/

#LogDir: /var/log/apt-cacher-ng

LogDir: /data/log/

SupportDir: /usr/lib/apt-cacher-ng

Port:3142

ReportPage: acng-report.html

BindAddress: localhost 172.33.33.25

ekzorchik@srv-bionic:~$ sudo /etc/init.d/apt-cacher-ng restart

На клиентской системе прописываем, к примеру путь это будет: Ubuntu 18.04 Desktop amd64

ekzorchik@srv-desktop:~$ lsb_release -a && uname -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 18.04.1 LTS

Release: 18.04

Codename: bionic

Linux srv-desktop 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

ekzorchik@srv-desktop:~$ sudo nano /etc/apt/sources.list

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic main restricted

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic main restricted

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates main restricted

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates main restricted

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic universe

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic universe

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates universe

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates universe

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic multiverse

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic multiverse

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates multiverse

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-updates multiverse

deb http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

deb-src http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

deb http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security main restricted

deb-src http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security main restricted

deb http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security universe

deb-src http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security universe

deb http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security multiverse

deb-src http://172.33.33.25:3142/security.ubuntu.com/ubuntu bionic-security multiverse

Т.е я после http:// указываю адрес сервера где развернут apt-cacher-ng с портом, а потом как обычно.

Или без правки sources.list

ekzorchik@srv-desktop:~$ sudo nano /etc/apt/apt.conf.d/02proxy

Acquire::http { Proxy "http://172.33.33.25:3142"; };

Обновляю информацию о пакетах репозитариев:

ekzorchik@srv-desktop:~$ sudo apt-get update

Пробую установить таким образом пакет в Ubuntu 18.04 Desktop:

ekzorchik@srv-desktop:~$ sudo apt-get install htop -y

Пол:1 http://172.33.33.25:3142/archive.ubuntu.com/ubuntu bionic/main amd64 htop amd64 2.1.0-3 [80.0 kB]

Смотрю, что на системе Ubuntu 18.04 Server (где развернут apt-cacher-ng сервис) в каталоге /data/repository

ekzorchik@srv-bionic:~$ sudo apt-get install tree -y

На заметку: ключ -L это вывод на указанную глубину, -d → только дерево директорий

ekzorchik@srv-bionic:~$ tree -d /data/repository/ -L 2

/data/repository/

├── 172.33.33.25

│   ├── archive.ubuntu.com

│   └── security.ubuntu.com

├── security.ubuntu.com

│   └── ubuntu

├── uburep

│   └── dists

└── _xstore

├── qstats

└── rsnap

10 directories

А размер каталога /data/repository/

ekzorchik@srv-bionic:~$ sudo du -sh /data/repository/

112M /data/repository/

А теперь появился ли выкачанный пакет htop запрошенный клиентом на настроенный кеширующий сервер debпакетов:

ekzorchik@srv-bionic:~$ find /data/repository -name htop

/data/repository/172.33.33.25/archive.ubuntu.com/ubuntu/pool/main/h/htop

/data/repository/uburep/pool/main/h/htop

О, да — работает. Как и задумывалось. Теперь у меня будет собственный сервис по хранению часто используемых устанавливаемых пакетов на систему, как Desktop & Server.

Обновляться клиентам также можно, вообще делать с пакетами все что угодно:

ekzorchik@srv-dsektop:~$ sudo apt-get update && sudo apt-get upgrade -y

Кому-то может показать, что все это слишком сложно, это их проблемы, у меня есть цель и я его достигаю и попутно усложняю. Мне как-то один сказал в skype, то будет трудно объяснить человеку который придет на мое место без глубоких знаний, как все сейчас у меня устроено. Вот только когда я прихожу на новое место работы, всегда сталкиваюсь, что остаюсь один на один с проблемами и решаю их сам без чей либо помощи. Работая системным администратором у Вас должен быть богатый опыт и желание учиться чему-то новому.

Итого, заметка работоспособна. С уважением, автор блога Олло Александр aka ekzorchik.