Portál AbcLinuxu, 21. května 2025 00:38
V práci máme vývojářskou síť bez připojení k internetu z důvodu (pseudo)bezpečnostní politiky. Dokážete si představit, že používat Ubuntu bez aptitude a python bez pip je návrat do středověku. Na rozchození mirroru pro Ubuntu se osvědčil apt-mirror, mirrorovat PyPI bylo o trošku složitější...
Úvodem snad jen krátké vysvětlení PyPI (Python Package Index) a pip. PyPI je vlastně databáze Python balíčků (obdoba CPAN pro perl, Pear pro PHP nebo třeba HackageDB pro Haskell). 'pip' pak funguje jako správce balíčků (pip install instaluje z PyPI, pip search prohledáva PyPI, atd.).
Naštěstí existují projekty, které implementují vlastní PyPI server. Po tom co jsem zkusil ruzné implementace, jsem zakotvil u pypi-server. Na mirorováni používám oficiálni pep381client.
Abych zajistil, že je vše licenčně v pořádku, forknul jsem pep381client a přidal do něj filter, který bude mirorovat pouze open-source balíčky (balíčky jasně vydané pod licenci schválenou OSI). Jedná se asi o dvaceti řádkový patch, každopádně můj fork pep381client je k dispozici na https://github.com/luv/pep381client
Další problém byl že pypi-server nepodporuje XML-RPC a tudíž nefunguje "pip search". Toto opět vyřešlo přibližně dvacet řádků kódu a "pip search" už funguje proti pypi-server stejně dobře jako proti oficiálnímu PyPI. Fork pypi-server je k dispozici na https://github.com/luv/pypi-server
Tuto kombinaci, ještě s vlastním bootstrap skriptem, který nainstaluje distribute a pip (pokud je potřeba) a nakonfiguruje pip, použivám k spokojenosti na naší lokální síti.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.