У меня есть несколько компьютеров Ubuntu дома и довольно медленное подключение к Интернету, и иногда несколько компьютеров необходимо обновлять сразу (особенно во время новых выпусков Ubuntu.)
Есть ли способ, когда только один из мои машины должны загружать пакеты, а другие машины могут использовать первую машину для получения debs? Включает ли это создание собственного локального зеркала? Или прокси-сервер? Или это можно сделать проще?
apt-cacher-ng является ответом для меня - я не сталкивался с проблемами в небольших средах (около 20 клиентов), поэтому я предполагаю, что проблемы @MagicFab были решены в текущей версии (установленной на Ubuntu 10.04 и 10.10) , Для сервера нет необходимости в настройке, и вам нужно только указать своим клиентам использовать сервер в качестве прокси-сервера диспетчера пакетов.
Сервер полностью установлен и настроен установкой пакета apt-cacher-ng. [ ! d3]
Клиенты должны быть настроены путем настройки прокси-сервера APT - добавив файл /etc/apt/apt.conf.d/01proxy, содержащий это (где «ваш-apt-сервер» - это имя или IP-адрес вашего сервера):
Acquire::http { Proxy "http://your-apt-server:3142"; };
полностью установлен - теперь пакеты будут кэшироваться сервером, независимо от того, какие источники вы используете или какую версию системы у вас есть (например, сервер 10.04 может быть использован 9.10, 10.04 и 11.04 клиентов без каких-либо проблем или конфликтов).
Если у вас есть клиентский ноутбук (ы), который перемещается между сетями, он становится немного сложнее - я создал скрипт который устанавливает правильный прокси-сервер в зависимости от сетевого адреса; сценарий является исполняемым и в /etc/network/if-up.d/apt-proxy. После получения IPv4-адреса с DHCP-сервера скрипт установит правильный сервер apt-cacher для соответствующей сети:
#!/bin/sh
set -e
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
exit 0
fi
# currently only cares about IPv4
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != NetworkManager ]; then
exit 0
fi
# only run for DHCP-assigned addresses
if [ "$DHCP4_IP_ADDRESS" = "" ]; then
exit 0
fi
# we're matching on network *broadcast* address,
# not the specific IP address we were assigned
case "$DHCP4_BROADCAST_ADDRESS" in
10.3.141.255)
PROXY='Acquire::http::Proxy "http://my-home-server:3142";';
;;
192.168.154.255)
PROXY='Acquire::http::Proxy "http://work-server.foo.bar.example.com:3142";';
;;
# add as needed
*)
# unknown, no proxying
PROXY=""
;;
esac
# set the proxy
FNAME="/etc/apt/apt.conf.d/01proxy"
echo -n "$PROXY">$FNAME
exit 0
Одним из самых простых решений является установка apt-proxy.
Читайте здесь документацию ubuntu: https://help.ubuntu.com/community/AptProxy
Я предпочитаю настраивать локальное зеркало с помощью утилиты debmirror.
Вот пример заклинания.
debmirror --progress --verbose --nosource --method=ftp --passive \
--host=ftp.osuosl.org --root=pub/ubuntu \
--dist=lucid,lucid-updates,lucid-security,lucid-backports \
--section=main,restricted,universe,multiverse --arch=amd64 \
/d2/ftp/mirror/ubuntu-lucid
Я запускаю это примерно раз в неделю, и использовать его в качестве основы для создания одного или нескольких «патчей». Например ...
cd /d2/ftp/mirror/
cp -al ubuntu-lucid ubuntu-lucid-20100908
Это создает связанную копию дерева (использует почти нулевое дисковое пространство), и я могу указать каждый из моих локальных серверов в apt sources.list
В небольших сетях (таких как домашний / малый офис) я использовал apt-cacher-ng с хорошими результатами. Я не проверял последние версии, но я знаю, что он нуждается в тщательной настройке как сервера, так и клиентов, и он лучше всего подходит для клиентов, которые будут получать обновления только из вашей локальной сети.
Я попробовал squid- но для этого требовалось применение нескольких методов обработки и настройки клиента, чем я хотел бы, поэтому он не чувствует, что он может заменить apt-cacher-ng в небольших настройках.
apt-cacher не был самым легким в настройке, и он не переживет dist-upgrade.
Установите squid-deb-proxy на сервере, squid-deb-proxy-client на клиентах. Он использует zeroconf Avahi, поэтому никакой конфигурации не требуется.
Если вы хотите кэшировать больше, чем просто debs, я бы не стал беспокоиться с Squid. Apache Traffic Server - следующая большая вещь. http://trafficserver.readthedocs.org