Вы убедили начальство перейти на 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
Источник: http://whylinux.ru/2008/01/11/tt-keshiruem-pakety-s-apt-cacher/
Комментарии
При использовании скрипта sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives предполагается удаление пакетов из кеша /var/cache/apt/archives, что вызывало ошибку, так как apt-cacher демон работает под www-data.
нашел одно решение:
1. в конфиге /etc/apt-cacher/apt-cacher.conf заменил
# sufficient permissions on the cache and log directories. Comment the settings
# to run apt-cacher as the native user.
group=www-data
user=www-data
на
# sufficient permissions on the cache and log directories. Comment the settings
# to run apt-cacher as the native user.
group=root
user=www-data
2. на /var/cache/apt/archive для группы root поставил чтение и запись
только тогда пакеты импортировались
Отправить комментарий