#1 01.12.2011 16:54:17

Vaicartana
Administrator
Зарегистрирован: 17.09.2011
Сообщений: 352
IP-адрес

Apt-cacher: решение для сети линукс

тихим сапом перевожу конторку на линукс. Задумался я тут о экономии трафика на закачку обновлений, т.к. вторая установка линукса сожрала 700метров с тырнета, третью машинку решил установить отключив предварительно ее от сети и пока она там ставилась полез за решением в гугл.
Из вариантов остановился на apt-cacher, так как меня режим ее работы полностью устраивает.

Первая же ссылка в гугле дала приличную статью как настроить каш (справедливости ради надо отметить, что автор, в отличии от остальных подобных статей, дал исчерпывающую информацию о ключе
path_map, что в других статьях описано вовсе через (_!_) )

Сделал всё как описано, заменил sources.list, проверяю apt-get install... фигвам - не работает.
Логи apt-cacher показали, что происходит обрыв закачки по таймауту. Во всём тырнете нашлось только одно совпадение по этим логам, вот оно
Из него следует, что проблема кроется в том, что у пятого перла отсутствует каталог asm, который отсутствует так же и в перле с исходниками.
Решение оказалось банально простым - загрузка пакета другой версии(в текущей версии убунту 11.х перловку подают версии 5.10.1-17) с репозитария, я воспользовался этой, хотя можно просто найти архив с asm...

после копирования каталога asm (я до кучи еще asm-generic прихватил) все заработало.

#2 01.12.2011 17:16:24

zenon
Administrator
Зарегистрирован: 04.05.2010
Сообщений: 8 784
IP-адрес

Apt-cacher: решение для сети линукс

Vaicartana, apt-mirror чем не устроил?

#3 02.12.2011 04:23:18

Vaicartana
Administrator
Зарегистрирован: 17.09.2011
Сообщений: 352
IP-адрес

Apt-cacher: решение для сети линукс

Вот тут написано чем не устроил.
Процитирую отдельно, основное из статьи
Локальная копия официального репозитория Ubuntu 10.10 только для одной архитектуры i386 занимает 36.2 GiB, учтите это.

cacher грузит только те пакеты, которые затребованы системой.

#4 27.12.2011 07:20:12

Vaicartana
Administrator
Зарегистрирован: 17.09.2011
Сообщений: 352
IP-адрес

Apt-cacher: решение для сети линукс

По просьбам трудящихся создам полное описание процесса установки.

Итак, первый вопрос, зачем все это собственно надо?
Если у Вас один домашний компьютер под управлением Ubuntu, то эту статью можно сразу не читать и пойти заниматься другими более полезными делами (например выучить bash :D ). Хотя, если Вы рекламируете данную ОС своим друзьям и они периодически к Вам захаживают за новой установкой, то я бы порекомендовал все таки разобраться с установкой и потом пользоваться в своё удовольствие.

Что оно дает?
apt-cacher создает локальное хранилище репозитариев, используемых на компьютерах сети. Тем самым во-первых достигается ускорение загрузок, а во-вторых экономится интернетный трафик, ведь пакеты приходится качать только один раз.

Чем данное решение выгодно отличается от аналогичных зеркал
тем что apt-cahcer, в отличие от apt-mirror и его аналогов не скачивает все пакеты из сети, а только те, что были хотя бы раз задействованы в ЛВС.

Ну, раз с целями и задачами определились, приступим. В сети находим комп, который будет нашим сервером, пусть его ip будет 192.168.0.254, а как он там называется нам не важно. Настройку сделаем так, что подменив этот адрес только в одном месте мы можем поменять эти сервера. Это нужно, например, если установка была сделана в одном месте, а использоваться система будет в другом.
Устанавливаем на нем наш кэшер.
[console]
sudo apt-get install apt-cacher
[/console]

как всегда сразу не заработает :D , лезем в конфиг /etc/apt-cacher/apt-cacher.conf
apt-cacher настраивается на порт 3142, можно оставить его, можно выбрать любой по усмотрению. Я оставил стандартный.
Находим строку
allowed_hosts=* и указываем подсеть в которой мы работаем, в нашем случае это будет выглядеть так
allowed_hosts=192.168.0.0/24

Замечу, что этим мы разрешили все подсети из адресов 192.168.х.х

строка generate_reports разрешает кэшеру создавать ежедневные отчеты о эффективности кэша. Если не будете пользоваться можно отключить указав generate_reports=0

path_map отвечает за алиасы. Дело в том, что обычно в sources.list содержится не один адрес, а несколько, а мы все эти адреса перепишем на один - наш кэшер. Так вот, чтоб система знала куда конкретно ползти за определенным ресурсом и существует этот параметр.
Например в sources.list есть две строки:


deb http://ru.archive.ubuntu.com/ubuntu natty main restricted
deb http://security.ubuntu.com/ubuntu natty-security main restricted universe

тогда наша строка будет выглядеть так

path_map = archive ru.archive.ubuntu.com/ubuntu; security security.ubuntu.com/ubuntu;

Чеэт мы такое сделали? мы создали алиас, теперь если к нашему репозитарию обратится по нему кэшер будет знать адрес, который нужно будет подставить. Если в sources.list будет прописано

http://192.168.0.254:3142/archive четататам

то кэшер обратиться к http://ru.archive.ubuntu.com/ubuntu четататам
Но мы так писать не будем :D

Настройка практически завершена, осталось пара штрихов.
Во-первых укажем что кэшер должен стартовать сам, для этого идем в /etc/default/apt-cacher и ищем AUTOSTART=1

Во-вторых перезапустим его чтобы он считал наши настройки.
[console]
sudo /etc/init.d/apt-cacher restart
[/console]

думали все? Афихтам! В убунте 11.04 (а может и в 11.11, не проверял) и более ранних версий есть проблема, связанная с перловкой. Её текущая версия 5.10.1-17, так вот в ней отсутствует каталог /usr/lib/perl/5.10.1/asm который нужен для нормальной работы кэшера.
Получить его можно скачав архив более новой версии перла, например вот эту
Устанавливать его не надо, поэтому на архитектуру не обращайте внимания, просто откройте его миднайт_коммандером и скопируйте файлы в соответствующие директории.

После этой процедуры кэшер станет полностью функционален, осталось настроить клиентов.
Замечу, что наш кэшер - тоже клиент! Поэтому и начнем с него.
[console]
sudo nano /etc/apt/sources.list
[/console]
и правим его по следующему шаблону: все строки содержащие
http://ru.archive.ubuntu.com/ubuntu четататам
заменим на http://apt-cacher:3142/archive четататам
а строки содержащие
http://security.ubuntu.com/ubuntu четататам
заменим на http://apt-cacher:3142/security четататам

теперь осталось указать нашему компу что это за "apt-cacher"
[console]
sudo nano /etc/hosts
[/console]
добавим

192.168.0.254     apt-cacher

Заценили всю красоту? Поменяв один адрес в hosts мы можем менять наш кешер как угодно!

сделаем на нашем кешере апдейт и загрузку обновлений, но для начала импортируем что есть в локальном репозитарии
[console]
sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
[/console]
Не работает? Вот и у меня не работает. Воспользуемся ключем -r чтобы локальные пакеты остались в хранилище.
[console]
sudo /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives
[/console]

ну а теперь уже можно
[console]
sudo apt-get update
sudo apt-get upgrade
[/console]
первый раз может грузится долго но затем... Вобщем все увидите сами. :D
Для примера мне потребовалось установить несколько ОС Ubuntu на предприятии за раз. Первым делом я отключил сеть от компьютера, т.к. линух шибко умный и находит тырнет сам, пытаясь скачать все пакеты с сети, что есть не гуд, вставил флешку и произвел установку(минут 15), затем подключил сеть и скачал файл sources.list с сети произведя замену
[console]
sudo cp ~/sources.list /etc/apt/sources.list
[/console]
и указал в hosts адрес кэшера как написано выше.
ну и как обычно - update/upgrade

На все про все у меня ушло еще 15 минут - и вся система была полностью русифицирована, осталось поставить доппакеты, но и они ставятся оч.быстро, одним словом ляпота :D

#5 13.07.2012 14:21:03

Vaicartana
Administrator
Зарегистрирован: 17.09.2011
Сообщений: 352
IP-адрес

Apt-cacher: решение для сети линукс


Работает, если перед этим смениться на root! (su root) И будет Вам счастье!=)
Большое спасибо!

Большое пожалуйста.

А чем в кармическом плане su root отличается от sudo? ))
у меня переносить(без ключа -r) отказывается наглухо, а вот копировать - запросто.

ПС: Я сейчас кэшером пользуюсь только на работе, для домашних нужд использую свой скрипт на связке bash+sed+awk+wget по закачке пакетов. Качает роутер, на котором стоит прошивка ddwrt или аналогичная, главное чтоб там awk и sed были.
Алсо у кэшера обнаружилась проблема с докачкой файлов при плохой связи - он не знает что это такое и качает пакет заново. wget ессно такой проблемы не имеет.

#6 30.01.2013 11:20:45

vasilisc
Administrator
Зарегистрирован: 16.07.2011
Сообщений: 7
IP-адрес

Apt-cacher: решение для сети линукс

Для тех, кто перешёл сюда через поисковые системы - рекомендую для обновления парка ПК с Убунту использовать apt-cacher-ng, который лишён недостатков apt-cacher

#7 31.01.2013 08:23:44

KrackMan
Administrator
Зарегистрирован: 27.10.2011
Сообщений: 194
IP-адрес

Apt-cacher: решение для сети линукс

Для тех, кто перешёл сюда через поисковые системы - рекомендую для обновления парка ПК с Убунту использовать apt-cacher-ng, который лишён недостатков apt-cacher

Подписываюсь под всеми словами.
Прост в установке инастройке, как сервера так и локальных машин.

На локальных машинах прописываете:
# nano /etc/apt/apt.conf
Acquire::http::proxy "http://192.168.3.91:3142/";
Acquire::https::proxy "https://192.168.3.91:3142/";
Acquire::ftp::proxy "ftp://192.168.3.91:3142/";
Acquire::socks::proxy "socks://192.168.3.91:3142/";

И этого достаточно, что бы локальная машина шла через вашу проксю.

Board footer