Pull to refresh

Apt-mirror, локальный репозиторий Ubuntu — это очень просто

Не удержался, чтоб не описать свой опыт создания локального репозитория после прочтения этой статьи.
Сразу замечу, что у меня была задача обновлять кучу Ubuntu серверов, достаточно быстро и прочно обосновавшихся в организации под нужды разработчиков, не пуская их при этом в Интернет. Для Windows есть WSUS, а что же для Ubuntu?

Итак, небольшая заметка, как при помощи apt-mirror сделать локальное зеркало репозиториев Ubuntu.

Прежде всего, понадобится компьютер (или виртуальная машина) с Ubuntu (я использовал 10.04) с выходом в интернет и достаточным количеством свободного места на локальном диске. В моем случае зеркалировались репозитории только для версии 10.04 x64. Общий объем занятого пространства: ~60Gb.
Далее все просто:
sudo apt-get install apt-mirror apache2

Все.
После этого необходимо лишь немного исправить конфиг apt-mirror'a, который можно найти тут: /etc/apt/mirror.list
В конфигурационном файле можно изменить дефолтные значения base_path, который указывает на то, где, собственно, будут хранится скачанные репозитории. Кроме того, не лишним будет указать путь до близжайшего к вам оффициального зеркала Ubuntu. Список зеркал можно узнать тут.
Вот пример моего конфига:
############# 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 http://<external_mirror_name>/ubuntu/ lucid main restricted universe multiverse
deb http://<external_mirror_name>/ubuntu/ lucid-updates main restricted universe multiverse

deb-src http://<external_mirror_name>/ubuntu/ lucid main restricted universe multiverse
deb-src http://<external_mirror_name>/ubuntu/ lucid-updates main restricted universe multiverse
clean http://<external_mirror_name>/ubuntu/


Если не указать специально, apt-mirror будет качать только пакеты той архитектуры, на которой работает ваш сервер. В моем случае сервер 64-битный.
Если хочется добавить также пакеты под х86_32, то в конфиге надо продублировать пути до выбранного вами оффициального зеркала с командой deb-i386. Вот так:
deb-i386 http://<external_mirror_name>/ubuntu lucid main restricted universe multiverse

Сохраним конфиг и запустим команду:
sudo apt-mirror


Еще необходимо сделать symbolic link для нашего вэб-сервера, который и будет обеспечивать доступность пакетов для внутренних клиентов.
cd /var/www/
sudo ln -s /var/spool/apt-mirror/mirror/<mirror_name>/ubuntu/ ubuntu


Какое-то время займет на скачивание всех нужных пакетов под все указанные вами архитектуры и версии Ubuntu.
Осталась лишь одна вешь. Сообщить нашим безинтернетным серверам и десктопам Ubuntu, откуда же можно быстро обновиться. Для этого необходимо исправить в файле /etc/apt/sources.list пути до зеркала. В моем случае это выглядит так:

deb http:///ubuntu lucid main restricted
deb-src http:///ubuntu lucid main restricted

deb http:///ubuntu lucid-updates main restricted
deb-src http:///ubuntu lucid-updates main restricted

deb http:///ubuntu lucid universe
deb-src http:///ubuntu lucid universe
deb http:///ubuntu lucid-updates universe
deb-src http:///ubuntu lucid-updates universe

deb http:///ubuntu lucid multiverse
deb-src http:///ubuntu lucid multiverse
deb http:///ubuntu lucid-updates multiverse
deb-src http:///ubuntu lucid-updates multiverse


Наше локальное зеркало репозиториев готово!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.