apt-cacher - кэширующий прокси для пакетов Debian
apt-cacher [-i|-d] [-c файл_конфигурации] [-p PID-файл] [-r каталог] [-R повторы] [опция_конфигурации=значение] [-h|--help]
http://сервер-apt-cacherr:3142[/apt-cacher]/ [зеркало] / [дистрибутив]
apt-cacher - это кэширующий прокси для пакетов Debian, позволяющий нескольким компьютерам пользоваться единым кэшем. Пакеты, запрошенные у кэша, требуется скачать с зеркал Debian лишь один раз, вне зависимости от того, на сколько локальных компьютеров их требуется установить. Благодаря этому снижается нагрузка на канал, улучшается производительность для пользователей и уменьшается нагрузка на зеркала.
-d Режим самостоятельной работы сервера. Сервер отделяется от терминала и работает в фоновом режиме. -i Режим работы с вызовом из inetd: используется только для вызова сервера из /etc/inetd.conf -c файл_конфигурации Указывает файл конфигурации, отличный от файла /etc/apt-cacher/apt-cacher.conf, используемого по умолчанию. -p PID-файл Записывать идентификатор работающего процесса в этот файл. -r каталог Экспериментальная опция для смены корневого каталога процесса на указанный. -R повторы Количество попыток захвата прослушиваемого порта. опция_конфигурации=значение Заменить значения из конфигурационного файла. Может быть задана несколько раз. -h, --help Вывести краткую справку по использованию программы.
Настройка apt-cacher предполагает два этапа: установка самого apt-cacher на один из компьютеров в вашей сети, чтобы он работал как сервер, и настройка всех клиентских компьютеров на использование кэша сервера.
apt-cacher может быть установлен для работы в качестве самостоятельного сервера (что предпочтительно) или в качестве сценария CGI на веб-сервере, таком как Apache. Когда клиент (apt-get(1), aptitude(8), synaptic(8) и т.п.) запрашивают пакет от кэширующего компьютера, запрос обрабатывается apt-cacher’ом, который проверяет, не имеется ли уже этот пакет в кэше. Если это так, пакет возвращается клиенту немедленно. Если пакета в кэше нет, или если пакет в локальном кэше был заменён более свежей версией, пакет скачивается с указанного зеркала. По мере скачивания пакет одновременно передаётся клиенту, а также сохраняется в локальном кэше для последующего использования.
Не нужно устанавливать apt-cacher на клиентские компьютеры вашей сети, чтобы они могли пользоваться кэшем сервера. Необходимо на каждом клиентском компьютере изменить настройки, чтобы заставить их пользоваться кэшем сервера. Обратитесь к разделу НАСТРОЙКА КЛИЕНТА ниже, чтобы узнать как это сделать.
apt-cacher может быть установлен на сервер различными путями. Рекомендуется запускать программу в режиме сервера. Это даст наилучшую производительность и минимальный объём использованной памяти.
Отредактируйте файл /etc/default/apt-cacher и пропишите AUTOSTART=1, затем запустите (от имени пользователя root) следующую команду:чтобы запустить сервер.
/etc/init.d/apt-cacher start
Отредактируйте /etc/inetd.conf и добавьте следующую строку:Перезапустите или отправьте сигнал SIGHUP суперсерверу inetd после сохранения файла. Этот способ подходит в тех случаях, когда вы не хотите чтобы сервер был запущен постоянно.
3142 stream tcp nowait www-data /usr/sbinc/apt-cacher/apt-cacher apt-cacher -i В любом из режимов сервера клиенты смогут получить к нему доступ по адресу http://сервер-apt-cacher:порт/
ЗАМЕЧАНИЕ: в режиме inetd не производятся проверки ограничения доступа, поэтому опции allowed_hosts и denied_hosts не действуют. Ограничение доступа может быть реализовано с помощью программы-посредника inetd или tcpd. Обратитесь к файлу README.Debian за более подробной информацией.
Не рекомендуется долгосрочное использование этого режима, поскольку режим оказывает заметное влияние на производительность сети и скорость сервера. По умолчанию пакет apt-cacher добавляет профиль настройки по умолчанию в каталог Apache. Клиенты смогут получить доступ по адресу http://сервер-apt-cacher[:порт]/apt-cacher/.
apt-cacher использует файл конфигурации для настройки важных опций. Есть также несколько дополнительных опций командной строки, управляющих поведением сервера. Обратитесь к разделу ОПЦИИ КОМАНДНОЙ СТРОКИ выше.По умолчанию используется файл конфигурации /etc/apt-cacher/apt-cacher.conf. Он читается каждый раз при запуске сервера, при исполнении CGI или при вызове сервера из inetd. Поэтому самостоятельный сервер необходимо перезапускать или перезагружать с помощью сценария инициализации, чтобы он перечитал свою конфигурацию. Работающий сервер также может перечитать файл конфигурации, если он примет сигнал SIGHUP (обратитесь к разделу СИГНАЛЫ ниже).
Каждая строка этого файла имеет следующий вид:
Длинные строки могут быть разделены с помощью символа ’\’, предшествующего символу новой строки. Пробельные символы игнорируются. Строки, начинающиеся с ’#’ считаются комментариями и также игнорируются. Если одной и той же опции присваивается несколько значений, действует только последняя. Для двоичных опций 0 означает "отключено", а любые другие целые числа означают "включено". Опции, которые могут принимать списки, используют для разделения элементов списка знак ’;’ или ’,’.
опция_конфигурации = значение Опции, доступные в файле конфигурации (и их значения по умолчанию):
cache_dir [/var/cache/apt-cacher] Каталог, в котором apt-cacher будет сохранять локальные копии всех запрошенных пакетов. Он может занять многие сотни мегабайт, поэтому убедитесь в том, что в соответствующем разделе имеется достаточно свободного места. ЗАМЕЧАНИЕ: каталог кэша содержит некоторые подкаталоги для правильного управления хранилищем. Если вы захотите создать свой каталог, воспользуйтесь сценарием /usr/share/apt-cacher/install.pl или используйте изначально созданный кэш в качестве примера. admin_email [root@localhost] Почтовый адрес администратора, который будет указываться на странице информации и в отчётах о трафике. offline_mode [ 0 ] Опция запрещает исходящие подключения, возвращаются только файлы из кэша, а если нужного файла нет в кэше, возвращается сообщение об ошибке. allowed_locations Разрешить доступ только к указанным вышестоящим зеркалам. Запрошенный адрес должен совпасть с элементом этого списка, чтобы доступ был разрешён. Часть адреса, ссылающаяся на сам apt-cacher (http://сервер-apt-cacher:порт[/apt-cacher]/) игнорируется. Шаблон начинается непосредственно за ней. path_map Схема отображения адресов, которая конвертирует первую часть адреса после имени сервера apt-cacher в адрес удалённого зеркала. Например, если вы задали
path_map = debian ftp.debian.org/debian
то при обращении к
http://сервер-apt-cacher:3142/debian/dists/stable/Release
на самом деле вы обратитесь к
http://сервер-apt-cacher:3142/ftp.debian.org/debian/dists/stable/Release
generate_reports [1] Указывает создавать отчёты по трафику ежедневно. Отчёты по трафику можно получить, перейдя в браузере по адресу http://сервер-apt-cacher:3142/report/ [в режиме сервера] или http://сервер-apt-cacher[:порт]/apt-cacher/report/ [в режиме CGI]. clean_cache [1] Указывает удалять устаревшие версии пакетов из вашего кэша ежедневно. Вы можете проверить выполнение этой настройки воспользовавшись командой
/usr/share/apt-cacher-cleaner.pl -s
которая просто покажет, что будет сделано с содержимым кэша. Пакет определённой версии не устаревает, если какой-либо дистрибутив (stable, testing и т.п.) или архитектура, используемая вами, ссылается на него. Вполне безопасно оставить эту опцию включенной. logdir [/var/log/apt-cacher] Каталог, используемый для хранения файлов журналов доступа, ошибок и файлов с отчётами о трафике. Журнал доступа хранит записи обо всех удачных запросах пакетов, вне зависимости от того был ли запрос удовлетворён из кэша. В журнале доступа хранится отметка времени, IP-адрес запрашивающего компьютера, размер переданного пакета, название пакета. Журнал ошибок хранит записи о существенных сбоях, а также используется для хранения отладочных сообщений, если директива debug имеет значение 1. Режим отладки переключается на противоположный отправкой сигнала SIGUSR1 (обратитесь к разделу СИГНАЛЫ ниже). expire_hours [0] Насколько долго в часах должны кэшироваться файлы Package и Release, прежде чем они начнут считаться устаревшими и потребуется их повторное скачивание. Настройка 0 означает, что актуальность этих файлов определяется при каждом доступе сравнением отметок о времени в заголовках HTTP с отметками времени локальных файлов. http_proxy [] apt-cacher может передавать все свои запросы на внешний прокси-сервер, например на Squid. Опция может быть очень полезной при использовании с теми провайдерами, которые блокируют порт 80 и требуют, чтобы весь трафик проходил через их прокси-сервер. Формат опции следующий: ’имя_узла:порт’. use_proxy [0] Использование внешнего прокси-сервера может быть включено или отключено с помощью этой опции. http_proxy_auth [] Иногда внешние http-прокси для получения полного доступа требует аутентификации. Формат этой опции следующий: ’имя_пользователя:пароль’, например: ’proxyuser:proxypass’. use_proxy_auth [0] Использование аутентификации на внешнем прокси-сервере может быть включено или отключено с помощью этой опции. interface [] Указывает особый интерфейс, используемый для исходящих подключений. Может быть именем интерфейса, IP-адресом или именем узла. Если не указано, используется маршрут по умолчанию. limit [0] Ограничение максимальной скорости скачивания файлов с вышестоящих зеркал, в байтах в секунду. Синтаксис полностью описан на странице руководства wget(1). Воспользуйтесь суффиксом ’k’ или ’m’ для указания килобайт или мегабайт в секунду. Например, ’limit=25k’. Используйте 0 или отрицательное значение, чтобы не ограничивать скорость скачивания. user [www-data] Эффективный идентификатор пользователя, который будет использоваться после открытия порта. group [www-data] Эффективный идентификатор группы, который будет использоваться после открытия порта. checksum [0] Экспериментальная опция, включающая проверку контрольной суммы скачанных файлов. Для работы опции требуется пакет libberkeleydb-perl. debug [0] Опция, включающая режим отладки. Отключена по умолчанию. При включении в журнал ошибок будет записываться большее количество дополнительной отладочной информации. Эта опция может привести к сильному разрастанию журнала ошибок, поэтому используйте её только для поиска неполадок. Путём увеличения параметра может быть получена дополнительная информация от libcurl. Соответствие между этой настройкой и curl_infotype следующее:
1 CURLINFO_TEXT 2 CURLINFO_HEADER_IN 3 CURLINFO_HEADER_OUT 4 CURLINFO_DATA_IN 5 CURLINFO_DATA_OUT 6 CURLINFO_SSL_DATA_IN 7 CURLINFO_SSL_DATA_OUT Обратитесь к разделу CURLOPT_DEBUGFUNCTION на странице руководства curl_easy_setopt(3) за дальнейшей информацией.
daemon_port [3142] Прослушиваемый TCP-порт. daemon_addr [unset] Сервер может ограничить прослушивание только определённым локальным IP-адресом или списком IP-адресов. Используйте осторожно. allowed_hosts [*] Если ваш сервер apt-cacher напрямую подключен к сети Интернет, и вы беспокоитесь, что кто-то чужой будет получать с него пакеты, вы можете указать диапазон IP-адресов, которым разрешено пользоваться сервером. Локальный узел (127.0.0.1) разрешён всегда, другие адреса должны совпасть с allowed_hosts и не совпасть с denied_hosts, чтобы получить разрешение пользоваться кэшем. Отметим, что по умолчанию apt-cacher разрешает запросы от любых клиентов, поэтому если вы хотите ограничить доступ, задайте значение опции. Это может быть один IP-адрес, список IP-адресов, IP-сеть с маской или диапазон IP-адресов. Обратитесь к файлу конфигурации по умолчанию за более подробным описанием опции и примерами. denied_hosts Опция, противоположенная опции allowed_hosts. Исключает узлы из списка разрешённых узлов. Не используется в режиме сервера, вызываемого из inetd. allowed_hosts_6 Опция, аналогичная опции allowed_hosts, но для клиентов IPv6. denied_hosts_6 Опция, аналогичная опции denied_hosts, но для клиентов IPv6.
Есть два различных способа настройки клиентов на использование кэша apt-cacher. Убедитесь, что вы не пользуетесь смесью обоих способов. Одновременное изменение настроек прокси-сервера и адресов зеркал может привести к неприятным последствиям.
Доступ к кэшу, как к зеркалу Для использования кэша этим способом отредактируйте /etc/apt/sources.list на каждом клиенте и вставьте адрес сервера apt-cacher перед каждой строчкой deb/src. Например, если у вас имеется строка:
deb http://ftp.debian.org stable main
измените её на
deb http://сервер-apt-cacher[:порт]/ftp.debian.org stable main [режим сервера]
или
deb http://сервер-apt-cacher[:порт]/apt-cacher/ftp.debian.org stable main [режим CGI] Доступ к кэшу, как к прокси Для клиентов, использующих кэш этим способом, установите сервер apt-cacher в качестве прокси-сервера на каждом из клиентов, настройкой адреса прокси-сервера в apt.conf (обратитесь к apt.conf(5) за более подробной информацией). Не рекомендуется настраивать переменную окружения http_proxy, поскольку это может подействовать на широкий круг различных программ, использующих различные адреса. apt-cacher не работает в качестве прокси-сервера общего назначения!
В: Могу ли я просто скопировать некоторые файлы .deb в каталог кэша, чтобы кэш работал ожидаемым образом?О: Почти! Требуется небольшая дополнительная работа, чтобы сделать его пригодным для использования и доступным из кэша.
Первое: наряду с файлами deb apt-cacher хранит дополнительную информацию: файл-признак того, что файл был полностью скачан и файл с HTTP-заголовками, отправленными сервером. Если вы скопируете .deb прямо в каталог хранилища, не добавив эти файлы, получение пакета завершится ошибкой.
К счастью, теперь в поставке apt-cacher имеется специальный вспомогательный сценарий, позволяющий сделать необходимые действия. Просто поместите файлы .deb в каталог /var/cache/apt-cacher/import (или в каталог с именем ’import’ внутри того каталога, где находится кэш), и запустите /usr/share/apt-cacher/apt-cacher-import.pl (вы можете указать альтернативный исходный каталог, указав его в качестве первого параметра). Сценарий обработает все найденные файлы в этом каталоге и переместит их в нужное место, создав файлы признака и заголовков. Запустите сценарий с опцией "-h", чтобы получить более подробную информацию об использовании дополнительных возможностей - сценарий может работать в рекурсивном режиме поиска файлов, создавая ссылки на файлы, находящиеся в другом месте файловой системы.
Второе: если включена операция ежедневной очистки (смотри опцию clean_cache выше) и в файле Packages.gz (или .bz2) отсутствуют ссылки на новые файлы, то файлы пакетов вскоре будут удалены. С другой стороны, если потенциальные клиенты, желающие скачать эти пакеты хотя бы раз выполнят команду "apt-get update" с использованием apt-cacher, нет причин для беспокойства.
В: Зависит ли создание ежедневных отчётов и очистка кэша от того, запущен ли apt-cacher в режиме сервера или нет?
О: Нет, регулярные работы по обслуживанию кэша выполняются независимо от работы сервера. Они вызываются из планировщика cron и используют только неизменные файлы вроде журналов, кэшированных файлов индексов и списка файлов в каталоге. Однако, apt-cacher должен быть настроен правильно, поскольку очистка запускается им независимо (в режиме inetd) от обновления файлов Packages/Sources.
В: Можно ли ограничивать доступ по именам узлов? Что будет если узел присутствует в обоих списках (а именно - будет ли доступ запрещён или разрешён)?
О: Нет, вы должны указывать IP-адреса.
В отличие от некоторых программ вроде Apache, управление доступом немного другое, поскольку нет способа задать порядок проверки. Вместо этого, узел клиента проверяется обоими фильтрами, allowed_hosts и denied_hosts. Возможны следующие комбинации: allowed_hosts=* и пустая denied_hosts, тогда разрешён каждый узел; allowed_hosts=<список_IP> и пустая denied_hosts, тогда разрешаются только определённые узлы; allowed_hosts=* и denied_hosts=<список_IP>, тогда разрешается любой узел, за исключением указанных в denied_hosts; allowed_hosts=<список_IP> и denied_hosts=<список_IP>, тогда принимаются только клиенты из allowed_hosts, за исключением указанных в denied_hosts. Пустая опция allowed_hosts блокирует доступ полностью. Если allowed_hosts пропущена, подразумевается значение *. Опция denied_hosts не должна иметь значение "*", воспользуйтесь пустой allowed_hosts, если вам нужно запретить доступ для всех.
В: generate_reports: каким образом можно просмотреть отчёты, в зависимости от запущенного веб-сервера? Они доступны только если apt-cacher ожидет подключений на порту 80?
О: Отчёт создаётся сценарием (запускаемым из планировщика задач cron, смотри выше), который сохраняет отчёт в файл $logdir/report.html. Вы можете получить к нему доступ, указав "/report" в строке адреса, который используется при обращении к apt-cacher. Если apt-cacher работает в режиме CGI, то адрес для просмотра отчёта в браузере будет http://сервер-apt-cacher[:порт]/apt-cacher/report/.
apt-cacher в настоящее время обрабатывает только запросы HTTP. Поддержка других способов доступа (ftp, rsync) в настоящее время не планируется.
apt-cacher обрабатывает следующие сигналы:
HUP Заставляет перечитать файл конфигурации. USR1 Меняет режим вывода отладочных сообщений в /var/log/apt-cacher/error.log на противоположный.
/etc/apt-cacher/apt-cacher.conf Главный конфигурационный файл. /var/log/apt-cacher Каталог журналов, ротируемых при наличии logrotate. /var/log/report.html Страница отчёта, создаваемая вспомогательным сценарием.
apt-cacher изначально был написан Ником Эндрюсом (Nick Andrews) <nick@zeta.org.au>. Эта страница руководства изначально написана Джонатаном Оксером (Jonathan Oxer) <jon@debian.org> для системы Debian GNU/Linux (но может использоваться другими). Пакет сопровождался Эдуардом Блохом (Eduard Bloch) <blade@debian.org>, и в настоящее время сопровождается Марком Хиндли (Mark Hindley) <mark@hindley.org.uk>.
Перевод на русский язык выполнил Владимир Ступин <wheelof@gmail.com>.
APT-CACHER (1) |