2.1. Обновление пакетов через apt-proxy

Опубликовано ivul - ср, 14.11.2007 - 17:09

Из описания пакета apt-proxy, входящем в репозитарий Debian:

Apt-proxy автоматически создает зеркало Debian HTTP, основываясь на запросах, проходящих через прокси-сервер. Это очень удобно, если есть несколько Debian-машин с медленным интернет-каналом.

Архив автоматически обновляется с помощью http, ftp или rsync. Есть возможность настроить очистку кэша от неиспользуемых и старых версий. Кроме того, можно импортировать содержание вашего apt-кэша в архив, используя apt-proxy-import.

Устанавливаем apt-proxy:

$ sudo apt-get install apt-proxy

Далее нужно внести необходимые изменения в файл конфигурации /etc/apt-proxy/apt-proxy-v2.conf, т.е. указать IP адрес, порт, папку кэша, время жизни пакета в кэше и т.д. и добавить репозитарии. Сам файл кофигурации содержит подробные коментарии к каждому параметру.

Файл /etc/apt-proxy/apt-proxy-v2.conf:

[DEFAULT]


;; Все периоды времени указываются в секундах, но можно добавить суффикс
;; для минут(m), часов(h) или дней(d)

;; Server IP to listen on
;;address = 192.168.0.4

;; Server port to listen on
port = 9999

;; Control files (Packages/Sources/Contents) refresh rate
;;
;; Minimum time between attempts to refresh a file
min_refresh_delay = 1h

;; Minimum age of a file before attempting an update (NOT YET IMPLEMENTED)
;min_age = 23h

;; Uncomment to make apt-proxy continue downloading even if all
;; clients disconnect. This is probably not a good idea on a
;; dial up line.
;; complete_clientless_downloads = 1

;; Debugging settings.
;; for all debug information use this:
;; debug = all:9
debug = all:4 db:0

;; Debugging remote python console
;; Do not enable in an untrusted environment
;telnet_port = 9998
;telnet_user = apt-proxy
;telnet_password = secret

;; Network timeout when retrieving from backend servers
timeout = 15

;; Папка кэша для apt-proxy
cache_dir = /var/cache/apt-proxy

;; Use passive FTP? (default=on)
passive_ftp = on

;; Использовать HTTP proxy? У меня и apt-proxy, и HTTP proxy работают на одном сервере.
http_proxy = localhost:3128

;; Enable HTTP pipelining within apt-proxy (for test purposes)
;disable_pipelining=0

;;--------------------------------------------------------------
;; Cache housekeeping

;; Time to perform periodic housekeeping:
;; - delete files that have not been accessed in max_age
;; - scan cache directories and update internal tables
cleanup_freq = 1d

;; Максимальное время хранения пакета в кэше. По истечению срока пакет будет удален из кэша.
max_age = 365d

;; Maximum number of versions of a .deb to keep per distribution
max_versions = 3

;; Add HTTP backends dynamicaly if not already defined? (default=on)
;dynamic_backends = on

;;---------------------------------------------------------------
;;---------------------------------------------------------------
;; Backend servers
;;
;; Place each server in its own [section]

[debian]
;; Основной Debian-архив.
;; You can override the default timeout like this:
;timeout = 30

;; Rsync server used to rsync the Packages file (NOT YET IMPLEMENTED)
;;rsyncpackages = rsync://ftp.de.debian.org/debian

;; Backend servers, in order of preference
backends =
;; ftp://ftp.debian.org/debian
;; http://ftp.ru.debian.org/debian
;; http://ftp.debian.org/debian
http://ftp.us.debian.org/debian
http://ftp.uk.debian.org/debian

[security]
;; Debian security archive
backends =
http://security.debian.org/debian-security
http://ftp.debian.org/debian-security

[ubuntu]
;; Архив Ubuntu
backends = ftp://archive.ubuntu.com/ubuntu
ftp://ru.archive.ubuntu.com/ubuntu

[ubuntu-security]
;; Архив обновлейни безопасности Ubuntu
backends = ftp://security.ubuntu.com/ubuntu

[apt-proxy]
;; Apt-proxy new versions
backends = http://apt-proxy.sourceforge.net/apt-proxy

;[backports.org]
;; backports.org
;backends = http://backports.org/debian

;[blackdown]
;; Blackdown Java
;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian

;[debian-people]
;; people.debian.org
;backends = http://people.debian.org

;[emdebian]
;; The Emdebian project
;backends = http://emdebian.sourceforge.net/emdebian

;[rsync]
;; An example using an rsync server. This is not recommended
;; unless http is not available, becuause rsync is only more
;; efficient for transferring uncompressed files and puts much
;; more overhead on the server. See the rsyncpacakges parameter
;; for a way of rsyncing just the Packages files.
;backends = rsync://ftp.uk.debian.org/debian

[debian-multimedia]
backends = ftp://ftp.linux.kiev.ua/pub/mirrors/www.debian-multimedia.org

[tcdebian]
;Репозитарий для тонкого клиента HP t5725
backends = http://ftp.hp.com/pub/tcdebian

После того, как все необходимые изменения в файл конфигурации внесены, перезапускаем apt-proxy:

$ sudo /etc/init.d/apt-proxy restart

Если ошибок нет, то делаем на всякий случай копию файла /etc/apt/sources.list

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

и правим его следующим образом.

Для Debian

deb http://proxy.server:9999/debian/ stable main contrib non-free
deb http://proxy.server:9999/debian/ unstable main contrib non-free
deb http://proxy.server:9999/security testing/updates main contrib

Для Ubuntu 7.10 GUTSY

deb http://proxy.server:9999/ubuntu/ gutsy main universe multiverse restricted
deb http://proxy.server:9999/ubuntu/ gutsy-updates main universe multiverse restricted
deb http://proxy.server:9999/ubuntu-security/ gutsy-security main universe multiverse restricted

Далее на станции действуем как обычно:

$ sudo apt-get update
$ sudo apt-get .......

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

Apt-proxy не единственный.
Кроме apt-proxy в репозитарии Debian имеется пакет apt-cacher - кеширующий прокси-сервер для работы с репозиторями пакетов Debian.
apt-cacher работает и быстрее, и стабильнее пакета apt-proxy, но его настройки менее гибкие, а все кэшируемые пакеты тупо валятся в одну папку, в то время, как apt-proxy хранит пакеты, повторяя структуру репозитария Debian.