Кэширирующий APT

Материал из Linux.Uz Wiki

Перейти к: навигация, поиск

Этот пример поможет в ситуации, когда убунту стоит на нескольких компах (допустим, в офисе) и тянуть для каждой машины пакеты и обновления - получается накладно на траф. Способов решить эту проблему на самом деле очень много. Можно на сервере поставить целиком репозиторий убунты, но это тоже влияет на трафик и довольно-таки неудобно. Самый удобный выход - это настроить один компьютер в сети так, чтобы он кэшировал все пакеты, которые ставятся на нем и на других компах. Для этого существует много утилит: apt-cacher, apt-cacher-ng, apt-proxy и другие. Но остановимся на apt-cacher, как на самом простом варианте. Для начала необходимо установить саму программу apt-cacher, но тут возникает проблема - в репозиториях убунты пакет с этой программой с багом, который так и не исправили. Поэтому, есть два варианта - собрать из сырцов или просто скомуниздить пакет из репозитория дебика.

Второе, конечно же легче - качаем вот этот файл и ставим:

http://packages.debian.org/sid/all/apt-cacher/download

Далее необходимо эту программу немного настроить. Если при установки не создались папки для кэша, то их нужно создать вручную и дать им права:

sudo mkdir /var/cache/apt-cacher
sudo chown www-data:www-data /var/cache/apt-cacher

Теперь надо сделать так, чтобы apt-cacher запускался при загрузке системы:

sudo nano /etc/default/apt-cacher

Там находим строчку «AUTOSTART=0» и заменяем ее на «AUTOSTART=1». Ну и самое основное - правка конфига программы:

sudo nano /etc/apt-cacher/apt-cacher.conf

В конфиге есть комментарии и разобраться довольно-таки легко, так что сами ключи я пропущу. Но если будет необходимость, разберу и сам конфиг. APT-Cacher - это как кэширующий прокси. Все пакеты просто будут сохраняться на жесткий диск сервера и если два или более человека запросят из инета один и тот-же пакет (или целую кучу), то этот пакет скачается лишь один раз, запишется на жесткий диск сервера и пользователи просто получат этот пакет (или кучу пакетов) с сервера, а уже не с инета. Но это не помешает вам пользоваться самыми свежими пакетами, это просто будет экономить вам трафик. Но из-за того, что программа работает как прокси, нам надо теперь указать на всех клиентах в /etc/apt/sources.list, чтобы APT работал через наш сервер с apt-cacher'ом. То есть, на каждом компьютере открываем sources.list и заменяем каждую строчку по следующему примеру. Раньше было так:

deb http://ubuntu.uz/ubuntu karmic main multiverse universe restricted
deb http://ubuntu.uz/ubuntu karmic-proposed main multiverse universe restricted
deb http://ubuntu.uz/ubuntu karmic-backports main multiverse universe restricted
deb http://ubuntu.uz/ubuntu karmic-security main multiverse universe restricted
deb http://ubuntu.uz/ubuntu karmic-updates main multiverse universe restricted
deb http://packages.medibuntu.org/ karmic free non-free

А надо исправить так:

deb http://localhost:3142/ubuntu.uz/ubuntu karmic main multiverse universe restricted
deb http://192.168.1.1:3142/ubuntu.uz/ubuntu karmic-proposed main multiverse universe restricted
deb http://192.168.1.1:3142/ubuntu.uz/ubuntu karmic-backports main multiverse universe restricted
deb http://192.168.1.1:3142/ubuntu.uz/ubuntu karmic-security main multiverse universe restricted
deb http://192.168.1.1:3142/ubuntu.uz/ubuntu karmic-updates main multiverse universe restricted
deb http://192.168.1.1:3142/packages.medibuntu.org/ karmic free non-free

APT-Cacher работает с помощью apache, поэтому нам надо просто перед каждым репозиторием в адресе указать адрес сервера. То есть, вместо 192.168.1.1 нужно вписать адрес своего сервера.