Я нашел этот учебник: Как кэшировать репозитории openSUSE с помощью Squid.
выдержка
Как заставить ваш локальный веб-кэш Squid работать с репозиториями openSUSE и процессом сетевой установки openSUSE. По сути, как запустить полностью автономное локальное зеркало репозитория по требованию. Даже при высокоскоростном ADSL-соединении с Интернетом легко достигается экономия до 60%.
Ниже приведены пошаговые детали из этой статьи.
Squid
Веб-прокси Squid является ключевым элементом в этой установке, поэтому наличие работающей установки Squid является необходимым условием. Настройка Squid не так сложна, как может показаться, но вам придется обратиться к документации по Squid, это выходит за рамки данной статьи. Предпочитаете ли вы направлять доступ с помощью переменных окружения http_proxy и т.д., или вы используете прозрачный прокси (как я), не так уж важно.
Примечание: приведенные здесь настройки работают для Squid 2.7, я не думаю, что функция storeurl_rewrite была реализована в Squid 3.x.
jesred
jesred - это рерайтер URL. Он достаточно зрелый, но полностью функциональный. (original webpage). Мне пришлось сделать пару изменений, чтобы сделать его полностью совместимым с squid 2.7:
На данный момент он не упакован, вам придется собирать его с нуля:
tar xzvf
cd jesred-1.3
make
Установка: когда закончите, скопируйте двоичный файл jesred в /usr/local/bin
или в любое другое место, которое вы предпочитаете для своих двоичных файлов.
Конфигурационный файл для jesred: /etc/squid/jesred.conf
allow = /etc/squid/redirector.acl
rules = /etc/squid/opensuse-redirect.rules
redirect_log = /var/log/squid/redirect.log
rewrite_log = /var/log/squid/rewrite.log
Используя /etc/squid/redirector.acl
, вы можете контролировать, запросы каких клиентов должен обрабатывать рерайтер, но я считаю, что это проще контролировать с помощью ACL Squid'а и директивы storeurl_access, поэтому я включаю для всех клиентов:
# rewrite all URLs from
0.0.0.0/0
/etc/squid/squid.conf
Конфигурация: добавьте следующие строки в /etc/squid/squid.conf
storeurl_rewrite_program /usr/bin/jesred
storeurl_rewrite_children 5
acl metalink req_mime_type application/metalink4+xml
storeurl_access deny metalink
storeurl_access allow localnet
storeurl_access allow localhost
acl localhost src 127.0.0.0/8
acl localnet src 192.168.0.0/16
fetcher206 logfile
Изменить /etc/squid/squid./conf
следующим образом:
logformat f206 %{%Y-%m-%dT%H:%M:%S}tl %Ss/%03Hs %rm %ru %mt
access_log /var/log/squid/fetch206.log f206
Этот журнал будет прочитан fetcher206.
Чтобы он не вырос слишком большим, добавьте следующее в /etc/logrotate.d/
:
/var/log/squid/fetch206.log {
сжать
дататекст
максимальный размер 365
вращать 5
размер=+4M
notifempty
missingok
создать 640 squid root
sharedscripts
postrotate
/etc/init.d/squid reload
endscript
}
squid delay pool
Это необязательный шаг - в зависимости от доступной пропускной способности канала, вы можете захотеть ограничить то, что используется fetcher206 для получения файлов репозитория. Это предотвратит
delay_pools 1
delay_class 1 1
delay_access 1 allow localhost
delay_parameters 1 1000000/1000000
Добавьте вышеуказанное в /etc/squid/squid.conf - это определит один delay_pool, доступный только с localhost (именно там fetcher206 будет запускать wget) с максимальной пропускной способностью 1MByte/sec.
Если у вас есть другой http/proxy трафик, исходящий с localhost, вы можете просто добавить еще один адрес 127.0.0.x, и использовать его специально для fetcher206.
база данных зеркал
Нам нужен актуальный список доступных зеркал openSUSE. Его можно получить на сайте mirrors.opensuse.org. Пока что я использую XSL для анализа HTML-страницы, но надеюсь перейти на подходяще отформатированный список непосредственно с MirrorBrain.
mkdir -p /var/lib/fetcher206
cp tarball/Makefile.mirrors /var/lib/fetcher206/Makefile
cp tarball/extract* /var/lib/fetcher206/
make -C /var/lib/fetcher206
cp tarball/opensuse_mirrors.cron /etc/cron.d/opensuse_mirrors
reload squid
Когда вы зашли так далеко, пришло время перезагрузить squid с помощью
squid -k reconfigure
fetcher206
fetcher206 - это, на данный момент, PHP скрипт. Установите его, просто скопировав в /usr/bin. Он имеет несколько жестко заданных опций, таких как количество одновременно запускаемых wgets, имя лог-файла и т.д.
fetcher206 пока не имеет ни сервисного модуля systemd, ни init-скрипта LSB. На данный момент вы просто запускаете его с помощью:
startproc -s -q /usr/bin/fetcher206
Следующий метод работает для меня, чтобы показать только имена файлов и каталогов верхнего уровня,
tar --exclude='./*/*' -tvf ttt.tar.gz
Следующий метод показывает еще один уровень,
tar --exclude='./*/*/*' -tvf ttt.tar.gz
Каталоги перечислены с косой чертой в конце.
Если список не начинается с точки или косой черты, следует использовать другой шаблон,например
tar --exclude='*/*' -tvf ttt.tar.gz
только для каталога верхнего уровня и
tar --exclude='*/*/*' -tvf ttt.tar.gz
для еще одного уровня.