Взято с whylinux.ru, поскольку имеет отношение к Ubuntu, то вот сюда еще:
Кэшируем пакеты с apt-cacher http://whylinux.ru/2008/01/11/tt-keshiruem-pakety-s-apt-cacherВы убедили начальство перейти на Linux? Вы поставили в компьютерном классе машины с Linux? В общем, вы заимели несколько машин с Linux, например с Debian или Debian-based (Ubuntu/Kubuntu/Runtu/Mepis и т.п.)?
Одна проблема точно будет мучать вас постоянно: как уменьшить интернет трафик для вашего парка Linux-машин, ведь периодически пользователи будут ставить новые пакеты из репозитория?
Вам нужно иметь отдельную машину на которой будет крутится срез репозитория и которая будет этот срез периодически обновлять, а все остальные машины нацелить на нее, чтобы они устанавливали пакеты не по отдельности с интернета, а именно с этой машины. Статей по разворачиванию локального репозитория много, и мы тоже готовимся опубликовать одну, и вот, в процессе подготовки статьи, мы наткнулись на полезную статью с
www.debuntu.org.
На базе нее мы решили сделать T&T посвященный кэшированию пакетов.
Итак, вы развернули парк машин с одинаковым дистрибутивом (с локальным репозиторием или без него - суть не важна, важна экономия интернет трафика). Задача состоит в том, чтобы когда на один из компьютеров пользователь устанавливал пакет - этот пакет сохранялся на специальной машине (назовем ее repository-cache, т.е. "кэш-репозиторием"), а остальные пользователи, при попытке поставить этот пакет (или обновление безопасности) на свои компьютеры, скачивали его уже из локального кэша, а не из интернета.
Настройка кэширующего компьютера (repository-cache):
установите apt-cacher:
$ sudo apt-get install apt-cacher
после установки отредактируйте его конфигурационный файл /etc/apt-cacher/apt-cacher.conf
по умолчанию apt-cacher работает на порту 3142 (можете изменить это значение, только при настройки клиентских машин не забудьте правильно указать порт).
allowed_hosts - кому разрешено обращаться за обновлениями, подставьте значения свой локальной сети (например 192.168.1.0/24) и адрес localhost:
allowed_hosts=192.168.1.0/24, 127.0.1.1
generate_reports - генерировать отчеты об активности кэша, по умолчанию включен - 1, чтобы выключить - 0
path_map - назначить короткие имена для репозиториев, например если вы назначите
path_map = ubuntu archive.ubuntu.com/ubuntu; ubuntu-updates archive.ubuntu.com/ubuntu ; ubuntu-security security.ubuntu.com/ubuntu
то вы сможете проще настроить доступ к ним с клиентских машин,
настроив у клиента ссылку на кэширующую машину в виде:
http://repository-cache:3142/ubuntuа не в виде перечисления полного имени:
http://repository-cache:3142/archive.ubuntu.com/ubuntuтаким образом сделайте алиасы для всех репозиториев которые вам понадобятся
Чтобы запустить apt-cacher его нужно активировать здесь /etc/default/apt-cacher.
Откройте /etc/default/apt-cacher и установите значение AUTOSTART на 1:
AUTOSTART=1
Теперь перезапустите apt-cacher:
$ sudo /etc/init.d/apt-cacher restart
…
Ну вот с настройкой кэширующей машины мы закончили, теперь пора править клиентские машины, точнее их файлы /etc/apt/sources.list , для того чтобы другие компьютеры обновляли и ставили пакеты через нее.
Вот отрывок из оригинального файла /etc/apt/sources.list (кстати сохраните его куда-нибудь):
#ubuntu main repository
deb
http://archive.ubuntu.com/ubuntu/ edgy main restricted universe multiverse
deb-src
http://archive.ubuntu.com/ubuntu/ edgy main restricted universe multiverse
#ubuntu updates repository
deb
http://archive.ubuntu.com/ubuntu/ edgy-updates main restricted universe multiverse
deb-src
http://archive.ubuntu.com/ubuntu/ edgy-updates main restricted universe multiverse
#ubuntu security updates repository
deb
http://security.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
deb-src
http://security.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
Нам его нужно перенаправить на нашу машину repository-cache работающую на порту 3142, для этого делаем изменения в этих записях:
#ubuntu main repository
deb
http://repository-cache:3142/ubuntu edgy main restricted universe multiverse
deb-src
http://repository-cache:3142/ubuntu edgy main restricted universe multiverse
#ubuntu updates repository
deb
http://repository-cache:3142/ubuntu-updates edgy-updates main restricted universe multiverse
deb-src
http://repository-cache:3142/ubuntu-updates edgy-updates main restricted universe multiverse
#ubuntu security updates repository
deb
http://repository-cache:3142/ubuntu-security edgy-security main restricted universe multiverse
deb-src
http://repository-cache:3142/ubuntu-security edgy-security main restricted universe multiverse
Почти что готово, сохраняем файл и даем на каждой машине команду:
$ sudo apt-get update
и понеслось
Если на вашей кэширующей машине в каталоге /var/cache/apt/archives/ уже есть пакеты, их тоже можно добавить в кэш, вот так:
$ sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
обязательно выполняйте с привилегией суперпользователя, иначе пакеты не скопируются в /var/cache/apt-cacher/packages/
проверить есть ли теперь эти пакеты в кэше, можно заглянув в /var/cache/apt-cacher/packages/
Кстати, отчеты по утилизации кэша можно посмотреть здесь:
http://repository-cache:3142/reportесли вы их не отключили
Ну а если нужно перегенерировать отчет снова:
$ sudo /usr/share/apt-cacher/apt-cacher-report.pl