Перейти до основного вмісту

Власний репозиторій Ubuntu на сервері Ubuntu

Для організації репозиторія Ubuntu на сервері Ubuntu будемо використовувати apt-mirror.

Спочатку треба встановити apt-mirror за допомогою
sudo apt-get install apt-mirror

Оскільки клієнти отримують пакети для інсталяції через HTTP, також треба встановити apache, якщо він ще не встановлений, за допомогою
sudo apt-get install apache2

За умовчанням, apt-mirror отримує пакети для тої архітектури і тієї версії, на котрій працює сервер. Але можна вказати архітектуру x86_64 або i386 і потрібні версії.
Також треба брати до уваги, що дзеркало репозиторію потребує від 30ГБ вільного місця на диску.

Пакет apt-mirror читає конфігурацію з файлу /etc/apt/mirror.list, наприклад
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch 

# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0 

set nthreads 20 
set _tilde 0
#
############# end config ##############

deb-amd64 http://archive.ubuntu.com/ubuntu xenial main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu 
xenial-security main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu 
xenial-updates main restricted
deb-i386 http://archive.ubuntu.com/ubuntu precise main restricted
deb-i386 http://archive.ubuntu.com/ubuntu 
precise-security main restricted
deb-i386 http://archive.ubuntu.com/ubuntu 
precise
-updates main restricted


clean http://archive.ubuntu.com/ubuntu


Ця конфігурація встановлює 20 потоків завантаження, і буде завантажувати main та restricted репозиторії для x86_64 і i386 архітек
тури, та для версій xenial(16.04) та precise(12.04).
Команда clean видаляє пакети, які втратили чинність на сервері, з якого ми робимо дзеркало.

Якщо сервер працює за проксі сервером, потрібно вказати адресу проксі серверу. Оскільки apt-mirror використовує wget для завантаження, то треба у /etc/wgetrc розкоментувати, щось на зразок:
#https_proxy = http://proxy.server:8080/ 
#http_proxy = http://proxy.server:8080/ 
#ftp_proxy = http://proxy.server:8080/ 
#
#use_proxy = on

Запускаємо процес завантажування (віддзеркалення) за допомогою
sudo apt-mirror

Згідно конфігурації дзеркало буде створено у /var/spool/apt-mirror. А для використання в Apache, треба створити символьне посилання за допомогою
sudo ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu/ /var/www/html/ubuntu
Щоб процес завантажування працював щоденно автоматично,треба у /etc/cron.d/apt-mirror розкоментувати наступне
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

А у клієнта у /etc/apt/sources.list треба вказати, що пакети будуть завантажуватись з локального репозиторія, наприклад
deb http://local-mirror/ubuntu/ 
precise main restricted 
deb http://local-mirror/ubuntu/ precise-updates main restricted 
deb http://local-mirror/ubuntu/ precise universe

На клієнті, для виключення використання проксі-сервера у випадку локального репозиторія, потрібно у 
/etc/apt/apt.conf вказати
Acquire::http::proxy::local-mirror "DIRECT";
Acquire::http::proxy::local-mirror "DIRECT";


Поради знайшов в
https://blog.felipe-alfaro.com/2014/05/30/create-a-local-mirror-of-ubuntu-packages-using-apt-mirror/
https://apps.education.ucsb.edu/wiki/Set_up_apt-mirror

Коментарі