lindev.fr

Aller au contenu | Aller au menu | Aller à la recherche

23 janv. 2016

Python pip et son cache local

Afin d'éviter de re-télécharger les paquets pour chaque projet nous allons voir ce petit truc extra simple qui est d'activer le cache local de pip.
Le principe est simple, la première fois que vous installez un paquet, ce dernier est téléchargé, puis mis en cache.
La seconde fois ( s'il s’agit de la même version ), pip va simplement l'installer depuis le cache.

Ok, ça ne va pas vous changer la vie, mais moi je trouve ça sympa à utiliser, surtout lorsque vous devez installer des gros paquets avec une connexion d’hôtel faiblarde, ça peut vous faire gagner de précieuses minutes .

Configuration de PIP

Commençons par éditer le fichier de configuration de pip

vim ~/.pip/pip.conf

Ajouter dans la section "global":

[global]
download-cache=/usr/local/pip/cache

enfin on donne les droits d'écriture

mkdir -p /usr/local/pip/cache
chmod -R 755 /usr/local/pip/cache

Deuxième méthode un peu plus courte

Simplement ajouter dans votre fichier de profil : ~/.bash_profile

export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache

Voilà pour ce micro billet.

Bon weekend .

14 juil. 2015

Monter un Bucket S3 sur un serveur Débian

S3, espace de stockage illimité chez Amazon avec des tarifs défiant toute concurrence. Qui en plus de son prix, offre des options plus qu’intéressantes...

  • chiffrement des données
  • versioning automatique
  • rotation ou mise en glacier des vielles versions ..


Etc ...
Je ne vais pas détailler ces options dans ce billet, mais juste expliquer comment monter un Bucket S3 ( répertoire S3 ) sur une machine / serveur linux afin d'y accéder comme un simple montage réseau . Nous verrons également comment le monter automatiquement via une simple ligne dans le fstab.

Prérequis

Nous allons utiliser fuse pour monter ce bucket, et l'authentification peut être chiffrée selon vos options, nous allons installer tout ce qu'il nous faut...

sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool fuse-utils pkg-config libssl-dev

S3fs-fuse

Maintenant, S3 + fuse n'étant pas un "système de fichiers" conventionnel, nous allons utiliser l'outil s3fs-fuse disponible sur un dépôt Gît

cd /usr/local/src/
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl 
make
sudo make install

Authentification S3

Sauf si votre serveur se trouve sur la plateforme Amazon et que vous lui avez donné des droits spécifiques (S3) à sa création, il vous faudra obligatoirement préciser le couple "Access Key / Secret Key" récupéré sur la plateforme Amazon.
Personnellement, je donne à mes utilisateurs un minimum de droits. Dans mon exemple donc, mon utilisateur fictif "John Doe" aura uniquement accès à son bucket, qui sera appelé "jdbucket".
Nous allons donc éditer le fichier qui va lister les authentifications passwd-s3fs.

sudo vim /etc/passwd-s3fs

Le contenu devra respecter la forme suivante bucketName:accessKeyId:secretAccessKey :

jdbucket:AKIAIOSFODNN7EXAMPLE:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Nous allons maintenant retirer un maximum de droits au fichier passwd-s3fs

sudo chmod 600 /etc/passwd-s3fs

Montage

Ne nous reste plus qu'à monter notre bucket jdbucket . Disons sur le répertoire /var/mntJdBucket

Commençons par créer le répertoire de montage.

sudo mkdir /var/mntJdBucket; sudo chmod 777 /var/mntJdBucket

Testons le montage avant de la mettre dans le fstab

/usr/bin/s3fs jdbucket /var/mntJdBucket -ouse_cache=/tmp,passwd_file=/etc/passwd-s3fs

Note: Spécifier le fichier de mot de passe S3 n'est pas obligatoire.
Si tout va bien .. vous voilà connecté à votre S3 !
Ne vous faite pas berner par le débit ( important ), ici le débit apparent sera celui de votre disque dur, car l'option use_cache=/tmp utilise un répertoire local comme cache entre votre système et le S3.

Fstab

Ne nous reste plus qu'à configurer notre montage dans le fstab, afin que le montage se fasse à chaque démarrage.

sudo vim /etc/fstab


Voici la ligne qu'il faut ajouter

#Fuse
s3fs#jdbucket	/var/mntJdBucket	fuse	rw,_netdev,use_cache=/tmp,allow_other,passwd_file=/etc/passwd-s3fs	0	0

Au niveau des options, du classique, droits en lecture et écriture pour les utilisateurs, attente de la connexion réseau pour tenter de monter le bucket, configuration du répertoire de cache et du fichier de mot de passe ( toujours facultatif )

Conclusion

Nous avons maintenant fait le tour du montage S3 sur une machine debian, rien de bien méchant. Cependant, suite à mes tests, je conseille d'utiliser les commandes s3cmd pour envoyer de gros fichiers ( plusieurs Gb ) celle-ci étant plus adaptée.

N'hésitez pas si vous avez des questions.

Ch.