
Я хотел бы создать RPM-репозиторий для пакетов Fedora в своей локальной сети. Из-за ограничений хранилища я хочу, чтобы репозиторий изначально был пустым и загружал пакеты по мере их обращения.
Фон
Я много работаю с локальными виртуальными машинами. Каждый раз, когда я создаю новую виртуальную машину и устанавливаю Fedora, из интернета загружается множество пакетов, и большинство из загружаемых пакетов одинаковы. Чтобы ускорить процесс, я бы хотел, чтобы RPM-пакеты кэшировались на сервере, расположенном в той же сети.
На подобные вопросы отвечали с помощью комбинации createrepo
& reposync
. Мне эта часть не нравится reposync
, потому что я не хочу клонировать весь репозиторий заранее, когда мне нужны только некоторые пакеты.
Идеальное решение
Я хотел бы, чтобы сервер в моей локальной сети действовал как репозиторий RPM для моих установок Fedora. Он должен передавать метаданные из всего, что настроено в /etc/yum.repo.d/*
. Сервер должен доставить запрошенный RPM, если он присутствует в локальном кэше, или же загрузить его и затем доставить.
Менее амбициозный подход — настроить единый репозиторий RPM вместо https://mirrors.fedoraproject.org/...
использования HTTP-прокси.
Обновление: 02 ноября 2015 г.
У меня уже есть nginx, работающий в сети, поэтому я поигрался с комбинацией proxy_pass
и proxy_cache
. Это вроде как работает, но IMHO у него больше недостатков, чем преимуществ:
- отдельная конфигурация для каждого репозитория, настроенного в
/etc/yum.repo.d/*
. - невозможно использовать
metadata
изhttps://mirrors.fedoraproject.org/
-за альтернативных зеркал.
Я удалил nginx и установил squid
, как было предложено в комментариях. squid
У меня отлично работает. С этой store_id_program
конфигурацией я даже могу использовать альтернативные зеркала и по-прежнему попадать в кэш, независимо от того, откуда изначально пришел RPM.
решение1
Здесь вы можете найти настроенный squid.conf для кэширования rpm:
https://github.com/spacewalkproject/spacewalk/blob/master/proxy/installer/squid.conf
Вам просто нужно изменить настройки памяти и порта.
решение2
Не уверен, нашли ли вы хорошее решение для этого, но в итоге я написал быструю маленькую программу Go. Она действует как кэширующий прокси и держит RPM, но проксирует вверх по течению к файлам базы данных, поэтому она всегда корректна. На данный момент она настроена для CentOS, Fedora EPEL и Arch Linux.
Вы можете увидеть это наhttps://github.com/yobert/remirror
решение3
apt-cacher-ng
отлично работает. Мы используем его уже некоторое время, и он отлично работает. И помните, что при его использовании следует использовать только http-зеркала (а не https-зеркала), чтобы сделать его более эффективным (естественно, он не видит и не кэширует https-трафик):
Чтобы настроить официальные репозитории Fedora на использование только http-зеркал, можно добавить &protocol=http
в конец metalink
URL-адреса конфигурации, например, для fedora
репозитория это будет выглядеть так:
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&protocol=http
https://www.unix-ag.uni-kl.de/~bloch/acng/
Кэширующий прокси. Специализируется на файлах пакетов от дистрибьюторов Linux, в первую очередь для дистрибутивов Debian (и основанных на Debian), но не ограничивается ими. См. документацию Apt-Cacher, чтобы узнать, для чего он хорош.
решение4
Yum wiki содержит страницу собзор решений кэширования
Некоторые из них по теме:
Установить "IntelligentMirror", и зарегистрироватьсяMirrorManager.
Pros Zero configuration, on the client side. Post setup it mostly just works and everything should be immediate. Only downloads what is required by the users. Fully automated server side, once setup/working. Cons Requires setting up a local Squid + Apache-httpd + IntelligentMirror to serve the data. If the server is down then metalinks/MM will route you to an external mirror. Only intelligently caches packages, not metadata.
(бета) поддержка avahi-packages-server.py и yum avahi (см.:http://james.fedorapeople.org/yum/avahi)
Pros Zero configuration client. Zero configuration server. Only downloads what is required by the users. Cons Not upstream yet (still beta). A client that doesn't run the avahi server side doesn't share it's downloads (so all clients need to run the "server"). Requires working avahi on the network.