Skip to main content

jmar.fr

Pypi Mirroring

Table of Contents

# Installation d’un mirroir Pypi local

$ROOTDIR = Répertoire de stockage du projet.

  • Création d’un virtualenv pour héberger le projet
virtualenv pypimirror
  • Installation de pypimirror
source pypimirror/bin/activate pip install pypimirror

Depuis la version 1.0.15, il est demandé d’installer BeautifulSoup en version <=3.0.9999 hors ces versions ne sont plus disponibles sur Pypi … J’ai donc installé la 1.0.14.

cd $ROOTDIR/pypimirror
wget https://pypi.python.org/packages/source/z/z3c.pypimirror/z3c.pypimirror-1.0.14.tar.gz
tar xvzf z3c.pypimirror-1.0.14.tar.gz cd z3c.pypimirror-1.0.14 python setup.py install 
  • Création du fichier de configuration. il existe un fichier d’exemple fourni avec avec pypimirror
cp $ROOTDIR/pypimirror/lib/python2.x/site-packages/pypimirror/pypimirror.cfg.sample $ROOTDIR/pypimirror/pypimirror.cfg 
  • Voici les lignes que j’ai modifié pour mon usage perso :

--- pypimirror.cfg.sample       2014-08-12 11:54:04.000000000 +0200
+++ pypimirror.cfg              2014-08-12 11:54:29.380704186 +0200
@@ -1,10 +1,10 @@
[DEFAULT]
# the root folder of all mirrored packages.
# if necessary it will be created for you
-mirror_file_path = /tmp/mirror
+mirror_file_path = $ROOTDIR/data

# where's your mirror on the net?
-base_url = http://your-host.com/    +base_url = http://pypi.ks.jmar.fr/    
# lock file to avoid duplicate runs of the mirror script
lock_file_name = /tmp/pypi-poll-access.lock
@@ -23,8 +23,7 @@
# Pattern for package names; only packages having matching names will
# be mirrored
package_matches =
-    zope.*
-    plone.*
+    *

# remove packages not on pypi (or externals) anymore
cleanup = True

Premier lancement (nous sommes toujours dans le virtualenv)

$ROOTDIR/pypimirror/bin/pypimirror $ROOTDIR/pypimirror/pypimirror.cfg --initial-fetch

Mise en place de la tâche cron

0 8 * * * pypimirror $ROOTDIR/pypimirror/bin/pypimirror $ROOTDIR/pypimirror/pypimirror.cfg --update-fetch