Создание локального репозитория или кэш-сервера deb-пакетов


Zeboton

Монополия — зло! А монополия на предоставление доступа к Интернету в бизнес-центре вдвойне зло! В результате IT-шникам приходится сидеть хоть и на безлимитном, но очень медленном интернете по цене в два раза выше, нежели на рынке.

Как следствие, обновление рабочих станций это головная боль, так как канал практически полностью ложится. Но так как все компьютеры в офисе работают под управлением Ubuntu/kUbuntu, можно немного облегчить жизнь и сделать кэш-сервер с пакетами обновления.

Поиск в Сети подсказывает о двух путях:
1. Полная копия репозитория у себя, что, как мне кажется, явно не подходит для данной задачи. Но кому интересно, это делает apt-mirror.
2. Кэширование пакетов, которые были однажды загружены кем-либо. Вот это в данной ситуации именно то, что нужно.

Для реализации второго сценария есть две программы apt-proxy и его форк apt-cacher. apt-proxy в связи с трагичными обстоятельствами, постигшими его автора, уже давно не обновляется, поэтому выбор был сделан в пользу apt-cacher.

Установка и настройка apt-cacher на сервере Ubuntu

Для работы apt-cacher необходим WEB-сервер Apache, поэтому, если его нет, устанавливаем:
sudo apt-get install apache2

Установка самого apt-cacher тривиальна:
sudo apt-get install apt-cacher

Настройка несколько сложнее, если есть желания отойти от настроек по умолчанию. Я решил вынести директорию, в которой будет располагаться кэш, на верхний уровень. Для этого создал в корне директорию rep:
sudo cd / && sudo mkdir rep

После этого нужно кое-что изменить в конфигурационном файле:
sudo nano /etc/apt-cacher/apt-cacher.conf
# Указываем место расположения кэша
cache_dir=/rep

# По умолчанию порт apt-caher — 3142. Для того, чтобы повесить его на порт ниже 1024, надо запускать его из под root, что в общем не нужно.
daemon_port=3142

# Группа и пользователь Apache
group=www-data
user=www-data

# apt-cacher может использовать два метода для определения того, что нужно обновить список пакетов:
# A) по таймауту (значение >0 в часах)
# B) по заголовкам HTTP от сервера с репозиториями (значение 0) Этот вариант более предпочтителен.
expire_hours=0

# Псевдонимы путей, которые будут использоваться клиентами
path_map = ubuntu ru.archive.ubuntu.com/ubuntu ; updates ru.archive.ubuntu.com/ubuntu ; backports ru.archive.ubuntu.com/ubuntu ; canonical archive.canonical.com/ubuntu ; security security.ubuntu.com/ubuntu ; extras security.ubuntu.com/ubuntu

Мой файл настроек apt-cacher.

Теперь нужно установить автозапуск:
sudo nano /etc/default/apt-cacher
И исправляем в файле AUTOSTART=0 на AUTOSTART=1.

Перезапускаем:
sudo /etc/init.d/apt-cacher restart

Сервер готов к работе.

Настройка apt-cacher на рабочей станции Ubuntu

1. Сохраняем текущий sources.list:
sudo mv /etc/apt/sources.list /etc/apt/sources.list.default

2. Создаём новый sources.list:
sudo nano /etc/apt/sources.list

3. Заполняем его (у меня локальный сервер имеет IP 10.5.5.50):
deb http://10.5.5.50:3142/ubuntu oneiric main restricted universe multiverse
deb http://10.5.5.50:3142/updates oneiric-updates main restricted universe multiverse
deb http://10.5.5.50:3142/backports oneiric-backports main restricted universe multiverse
deb http://10.5.5.50:3142/security oneiric-security main restricted universe multiverse
deb http://10.5.5.50:3142/canonical oneiric partner
deb http://10.5.5.50:3142/extras oneiric main

4. Обновляемся как обычно
sudo apt-get update && sudo apt-get upgrade

Готово.

Похожие записи:

4 комментария для “Создание локального репозитория или кэш-сервера deb-пакетов”

  1. Dedsy18 марта 2012 ~ 16:31

    Хорошая и полезная статья, спасибо 🙂 только 1-о но, для этой задачи использовать Индейца мне кажется ооочень расточительно. Лучше уж lighttpd попробовать, они настравивается легко и не содержит столько ненужного барахла как Индеец. 🙂

  2. Zeboton18 марта 2012 ~ 16:33

    1. apt-cacher сам требует Apache.
    2. Apache у меня на сервере уже был установлен 🙂

  3. Конь19 марта 2012 ~ 17:45

    apt-cacher-ng наше все, не нужен апач, и можно sources.list не менять

  4. QDesnic24 апреля 2012 ~ 07:28

    Корпоративный сервер обновлений с apt-cacher-ng, чуть проще установка и без дополнительных правок конфигов. http://www.qdesnic.ru/page/apt-cacher-ng.html

Ваш комментарий

*