пятница, 23 января 2009 г.

Локальный сервер обновлений Ubuntu

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

Во многом эта заметка основана на статье «Apt-cacher как корпоративный сервер обновлений для Ubuntu/Kubuntu/*buntu», размещенной на сайте habrahabr.ru.

Долгое время стандартом де факто для поднятия локального сервера обновлений являлся apt-mirror, но у него есть несколько недостатков, главным из которых, пожалуй, является нерациональное использование дискового пространства.

Гораздо более интересным и гибким решением является apt-cacher, который умеет хранить только нужные пакеты, обновлять локальный репозиторий по мерее обновления основного, и, конечно же, качать пакет только один раз, а затем брать его из кэша. В общем-то, это действительно хорошее решение для обновления компьютеров с Ubuntu в количестве больше одного, объединенных в одну сеть.

Из минусов автор статьи выделяет следующие: отличие структуры хранения пакетов от оригинальной (а разве нам важно, как они хранятся?) и обязательное наличие веб-сервера Apache (который поднимается за 2 минуты).

Мы не будем сильно зацикливаться на тонких настройках, которые отлично описаны в оригинальной статье, а просто обозначим основные моменты.

Итак, поехали: sudo apt-get install apt-cacher.

Создаем и назначаем права на папку, в которой будут храниться пакеты. Надо отметить, что apt-cacher не требует сразу место под весь объем репозиториев (около 22 Гб), а хранит только то, что нужно. Напомним, что в Debian-дистрибутивах Apache запускается от юзера www-data группы www-data, следовательно нужно сделать этого пользователя владельцем созданной папки.

Настройки apt-cacher хранятся в файле: /etc/apt-cacher/apt-cacher.conf. Его и нужно чуть-чуть подредактировать, указав там созданную папку для пакетов, а также некоторые другие параметры. Опять же, пример конфигурации смотрите в оригинальной статье на Хабре.

Следующий шаг — настройка Apache. Для работы apt-cacher нам понадобится Perl и ExecCGI в Apache. Файл конфигурации лежит в: /etc/apt-cacher/apache.conf. Достаточно лишь прописать Alias: Alias /apt-cacher /usr/share/apt-cacher/apt-cacher.pl и разрешить выполнять Perl скрипты в указанной папке: Options ExecCGI, AddHandler cgi-script .pl.

Почти всё готово! Остается только запустить сервер: sudo /etc/init.d/apt-cacher start. По умолчанию сервер будет висеть на 9999 порту.

Теперь на всех компьютерах, которые должны тянуть обновления с этого сервера нужно открыть файл /etc/apt/sources.list, закомментировать в нем все строки и добавить одну новую: deb updateserver:9999/ubuntu intrepid multiverse restricted main universe, где updateserver — имя машины, на которой мы только что подняли apt-cacher.

Создание локального репозитория.
1. Устанавливаем dpkg-dev
apt-get install dpkg-dev
2. Создаем директорию где будут хранится пакеты
mkdir /usr/local/mydebs
3. Открываем gedit и создаем новый файл. Туда вставляем:
cd /usr/local/mydebs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Файл называем например update-mydebs и сохраняем в домашнюю директорию /bin. Если ресурса ~/bin нет - то создайте его. Этот ресурс будет автоматически добавлен в предопределенные пути системы.
4. Делаем скрипт апдейта локального репозитория исполняемым:
chmod u+x ~/bin/update-mydebs
5. Правим файл sources.list
Жмем ALT+F2 вводим
gksu gedit /etc/apt/sources.list
Добавляем в него строку
deb file:/usr/local/mydebs ./
Сохраняем файл.

Использование репозитория
sudo update-mydebs
sudo apt-get update

Далее репозиторий используется как обычно.

Комментариев нет:

Отправить комментарий