Из описания пакета 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.