
Ich möchte in meinem lokalen Netzwerk ein RPM-Repository für Fedora-Pakete erstellen. Aufgrund von Speicherbeschränkungen soll das Repository zunächst leer sein und Pakete sollen heruntergeladen werden, sobald auf sie zugegriffen wird.
Hintergrund
Ich arbeite viel mit lokalen VMs. Immer wenn ich eine neue VM erstelle und Fedora installiere, werden viele Pakete aus dem Internet heruntergeladen, und die meisten der heruntergeladenen Pakete sind gleich. Um den Prozess zu beschleunigen, möchte ich, dass die RPMs auf einem Server im selben Netzwerk zwischengespeichert werden.
Ähnliche Fragen wurden mit einer Kombination aus createrepo
& beantwortet reposync
. Mir gefällt dieser Teil nicht reposync
, da ich nicht das ganze Repository im Voraus klonen möchte, wenn ich nur einige der Pakete benötige.
Ideale Lösung
Ich möchte, dass der Server in meinem lokalen Netzwerk als RPM-Repository für meine Fedora-Installationen fungiert. Er sollte die Metadaten von dem, was in konfiguriert ist, weitergeben /etc/yum.repo.d/*
. Der Server sollte das angeforderte RPM bereitstellen, wenn es im lokalen Cache vorhanden ist, oder es herunterladen und dann bereitstellen.
Ein weniger anspruchsvoller Ansatz wäre, stattdessen ein einzelnes RPM-Repository zu konfigurieren https://mirrors.fedoraproject.org/...
und nur einen HTTP-Proxy zu verwenden.
Update: 02.11.2015
proxy_pass
Ich habe bereits einen nginx im Netzwerk laufen, also habe ich mit einer Kombination aus und herumgespielt proxy_cache
. Es funktioniert irgendwie, hat aber meiner Meinung nach mehr Nachteile als Vorteile:
- eine separate Konfiguration für jedes in konfigurierte Repo
/etc/yum.repo.d/*
. - kann aufgrund alternativer Spiegel nicht verwendet
metadata
werdenhttps://mirrors.fedoraproject.org/
.
Ich habe das Nginx-Ding fallengelassen und installiert squid
, wie in den Kommentaren vorgeschlagen. squid
Funktioniert bei mir super. Mit der store_id_program
Konfiguration kann ich sogar die alternativen Spiegel verwenden und trotzdem auf den Cache zugreifen, egal woher das RPM ursprünglich kam.
Antwort1
Hier finden Sie eine fein abgestimmte squid.conf für das RPM-Caching:
https://github.com/spacewalkproject/spacewalk/blob/master/proxy/installer/squid.conf
Sie müssen lediglich die Speicher- und Porteinstellungen ändern.
Antwort2
Ich bin mir nicht sicher, ob Sie eine gute Lösung dafür gefunden haben, aber ich habe am Ende ein kurzes kleines Go-Programm geschrieben. Es fungiert als Caching-Proxy und behält RPMs bei, leitet aber Upstream-Proxys an Datenbankdateien weiter, sodass es immer korrekt ist. Es ist derzeit für CentOS, Fedora EPEL und Arch Linux konfiguriert.
Sie finden es unterhttps://github.com/yobert/remirror
Antwort3
apt-cacher-ng
funktioniert super. Wir verwenden es seit einiger Zeit und es funktioniert gut. Und denken Sie daran, nur HTTP-Mirrors (und keine HTTPS-Mirrors) zu verwenden, wenn Sie es verwenden, um es effizienter zu machen (natürlich kann es keinen HTTPS-Verkehr sehen und zwischenspeichern):
Um die offiziellen Fedora-Repositories so zu konfigurieren, dass nur HTTP-Mirrors verwendet werden, können Sie &protocol=http
am Ende der metalink
Konfigurations-URL Folgendes hinzufügen. Für fedora
das Repository wird es dann beispielsweise:
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&protocol=http
https://www.unix-ag.uni-kl.de/~bloch/acng/
Ein Caching-Proxy. Spezialisiert auf Paketdateien von Linux-Distributoren, hauptsächlich für Debian-Distributionen (und Debian-basierte Distributionen), aber nicht darauf beschränkt. Lesen Sie die Dokumentation von Apt-Cacher, um zu erfahren, wofür es gut ist.
Antwort4
Yum Wiki enthält Seite mitÜberprüfung von Caching-Lösungen
Einiges zum Thema:
Installieren "IntelligentMirror", und registrieren Sie sich beiSpiegelManager.
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.
(Beta) avahi-packages-server.py und Yum Avahi-Unterstützung (siehe: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.