Лучший способ кэшировать apt-загрузки в локальной сети?

У меня есть несколько компьютеров Ubuntu дома и довольно медленное подключение к Интернету, и иногда несколько компьютеров необходимо обновлять сразу (особенно во время новых выпусков Ubuntu.)

Есть ли способ, когда только один из мои машины должны загружать пакеты, а другие машины могут использовать первую машину для получения debs? Включает ли это создание собственного локального зеркала? Или прокси-сервер? Или это можно сделать проще?

1
задан 10 March 2014 в 22:39

5 ответов

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
36
ответ дан 26 May 2018 в 01:24
  • 1
    apt-cacher-ng также поддерживает IPv6 (я помню, что некоторые другие решения не выполнялись). – Azendale 22 June 2011 в 18:34
  • 2
    Через год я перешел к squid-deb-proxy и squid-deb-proxy-client: zeroconf действительно означает нулевую конфигурацию на клиентах, что чрезвычайно полезно для кочевых пользователей - и в случае, если сервер не отвечает, клиенту по умолчанию предоставляется прямая загрузка , – Piskvor 21 May 2012 в 14:22
  • 3
    apt-cacher-ng сосет, это ужасно багги, зависает при загрузке пакетов. например, я видел, что он загрузил 150 МБ только для 30 МБ пакета – pylover 3 September 2015 в 01:46
  • 4
    apt-cacher-ng отлично работает. У вас что-то очень плохое в вашей системе. На Precise squid-deb-proxy хочет установить Squid. Настаивает на этом. – Ken Sharp 20 November 2015 в 23:00
  • 5
    Теперь это лучшее решение для работы кэша с pbuilder. Это сработало из коробки. Также похоже, что есть поддержка zeroconf (в 2016 году), но я не мог (пока) получить это для работы на моем конце. – Alexis Wilke 25 July 2016 в 00:46

Одним из самых простых решений является установка apt-proxy.

Читайте здесь документацию ubuntu: https://help.ubuntu.com/community/AptProxy

6
ответ дан 26 May 2018 в 01:24

Я предпочитаю настраивать локальное зеркало с помощью утилиты 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

6
ответ дан 26 May 2018 в 01:24
  • 1
    Вы должны проверить ubumirror, это удобный пакет в архиве, в котором есть все, что уже настроено для вас. Это то, что используют официальные зеркала. – Jorge Castro 8 September 2010 в 22:39

В небольших сетях (таких как домашний / малый офис) я использовал apt-cacher-ng с хорошими результатами. Я не проверял последние версии, но я знаю, что он нуждается в тщательной настройке как сервера, так и клиентов, и он лучше всего подходит для клиентов, которые будут получать обновления только из вашей локальной сети.

Я попробовал squid- но для этого требовалось применение нескольких методов обработки и настройки клиента, чем я хотел бы, поэтому он не чувствует, что он может заменить apt-cacher-ng в небольших настройках.

2
ответ дан 26 May 2018 в 01:24

apt-cacher не был самым легким в настройке, и он не переживет dist-upgrade.

Установите squid-deb-proxy на сервере, squid-deb-proxy-client на клиентах. Он использует zeroconf Avahi, поэтому никакой конфигурации не требуется.

Если вы хотите кэшировать больше, чем просто debs, я бы не стал беспокоиться с Squid. Apache Traffic Server - следующая большая вещь. http://trafficserver.readthedocs.org

1
ответ дан 26 May 2018 в 01:24
  • 1
    squid-deb-proxy настаивает на установке кальмара. И apt-cacher давно мертв, apt-cacher-ng, где он находится. – Ken Sharp 20 November 2015 в 23:16

Другие вопросы по тегам:

Похожие вопросы: