Lokaler PyPI-Cache

Probleme bei der Installation?
Antworten
lunar

Hallo,

ich suche ein Programm für Linux, mit dem ein lokaler Proxy mit Cache für den Package Index aufgesetzt werden kann. Der Proxy sollte möglichst einfach zu konfigurieren sein (am besten vorkonfiguriert für PyPI), und per "easy_install" oder "pip install" heruntergeladenen Pakete lokal zwischenspeichern und wiederholte Installationen anschließend aus dem lokalen Cache bedienen. Summa summarum etwas wie apt-proxy, nur eben für den PyPI statt für APT.

Hintergrund ist, dass zum Ausführen von Tests innerhalb von Hudson jedes Mal ein frisches virtualenv mit allen nötigen Abhängigkeiten erzeugt wird. Bisher werden die Abhängigkeiten jedes Mal erneut aus dem Netz heruntergeladen. Das ist zwar an sich nicht kritisch, aber doch ein wenig störend.

Danke
lunar
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wie wärs mit einem ganz dummen Proxy, der einfach nur nach URLs cached? Zur Not kannst du ja da das Django-Routing und -Caching missbrauchen, oder halt kurz was zusammenschreiben, das sollte ja ziemlich simpel sein.

Oder soll der Proxy intelligenter sein? ;)
lunar

@Dauerbaustelle: Das hilft mir nun nicht weiter. Natürlich kann ich einen Proxy für diesen Zweck ohne größere Probleme selbst schreiben, aber ich frage eben genau deswegen im Installationsforum (und nicht etwa im Netzwerkforum), weil ich dazu eigentlich sowas von gar keine Lust habe, ganz zu schweigen von der Zeit. :) Trotzdem danke für Deine Antwort!

Eigentlich suche ich aber ein fertiges Programm für diesen Zweck. So ungewöhnlich ist mein Szenario ja nun nicht, es stand doch bestimmt schon mal irgendjemand vor dem selben Problem.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

habe im Hinterkopf, dass man das hiermit machen könnte: http://pypi.python.org/pypi/collective.eggproxy/
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

wäre ganz cool, wenn du mal berichtest, ob das geklappt hat - würde mich auch interessieren.

Danke!
lunar

Es funktioniert schon, aber allzu begeistert bin ich nicht. Das Programm cacht zu viel, denn es lässt sich nicht davon abbringen, alle Versionen eines Pakets in allen verfügbaren Formaten herunterzuladen. Ein an sich harmloses "pip install -U -i http://localhost:8888 sphinx" zur Installation der neuesten Sphinx-Version führt dann zu diesem Cacheinhalt, der immerhin stolze 145 MB(!) ausmacht.

Das ist zwar auch nicht sonderlich störend, denn so oft baut man den Cache ja nicht neu auf, aber eine „cache-miss-Installation“ ist so deutlich langsamer. Ganz abgesehen von der völlig sinnlosen Speicherverschwendung ... denn wozu in Gottes Namen braucht man Pakete von anno dazumal schon im Cache, wenn man eine Aktualisierung(!) durchführt?

Naja, aber so lange es keine Alternativen gibt, werde ich das erst mal verwenden.
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

ok, danke dir - zumindest besser als nichts...
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Und wenn du einfach einen normalen speichernden Proxy wie wwwoffle dazwischenhängst?
lunar

Weil mir das ehrlich gesagt zu kompliziert ist. Ein solcher Proxy will konfiguriert werden, und die von meiner Distribution installierte Konfigurationsdatei für wwwoffle hat ~1400(!) Zeilen. Natürlich, die Komplexität gibt sich, wenn man Dokumentation liest und Erfahrung mit dem Programm sammelt, aber das ist mir zu viel Aufwand für das erwünschte Resultat. Ich hätte gern eine DAU-Lösung: Starten und funktioniert, ohne große Konfiguration ;)
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Soweit ich mich erinnere musste man eigentlich nicht viel justieren.
lunar

@mkesper: Ich verwende nun wwwoffle. Man musste in der Tat nichts konfigurieren, der Dienst war direkt nach der Installation einsatzbereit, und ist zudem einfacher zu verwenden, weil man nur die Umgebungsvariable HTTP_PROXY setzen, nicht aber jedes Mal die Option -i mit der lokalen Proxy-Adresse angeben muss.

Danke für den Tipp :)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ein weiterer Grund für PIP: $PIP_DOWNLOAD_CACHE
lunar

Nun ja, "undokumentiert" ist immer so eine Sache ... :) Innerhalb Hudson ließe sich das aber eh nicht so ohne weiteres einsetzen.
Antworten