Монополия — зло! А монополия на предоставление доступа к Интернету в бизнес-центре вдвойне зло! В результате 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
Готово.
Хорошая и полезная статья, спасибо 🙂 только 1-о но, для этой задачи использовать Индейца мне кажется ооочень расточительно. Лучше уж lighttpd попробовать, они настравивается легко и не содержит столько ненужного барахла как Индеец. 🙂
1. apt-cacher сам требует Apache.
2. Apache у меня на сервере уже был установлен 🙂
apt-cacher-ng наше все, не нужен апач, и можно sources.list не менять
Корпоративный сервер обновлений с apt-cacher-ng, чуть проще установка и без дополнительных правок конфигов. http://www.qdesnic.ru/page/apt-cacher-ng.html