Association du Grand Avignon des utilisateurs de Linux / *BSD, et de logiciels libres.

L'association, AviGNU se réunit tous les jeudi soir, à partir de 19h30, dans le local de Avenir 84 (il est situé au pied de l'immeuble, « Le Ventoux » ).

Vous pouvez vous référer au plan d'accès pour nous rejoindre (le bâtiment c'est le repère rouge).

Affiche publicité AviGNU

vendredi 11 mai 2012

NAS illimite avec windav et hubic

Merci a Kuri sur le site https://paranoia.abuser.eu/wordpress/?p=30

Mon NAS illimite.

Kuri Les offres “cloud” (ce fameux mot marketing), devenant de plus en plus presentes, j ai pense a utiliser ces trucs la pour stocker mes donnees, surtout quand OVH a lance son offre hubic!

hubic, c est 25Go gratuit, 100Go pour 11.84€ par an, ou illimite pour 83.60€ par an!

Premiers pas : Merci flipflip sur le site ovh-hubic-en-ligne-de-commande

Télécharger le script

git clone https://bitbucket.org/rangzen/hubicli.git cd hubicli/ python hubiC.py Votre nic-handle et votre mot de passe vous est demandé et en réponse vous obtenez : URL : https://cloudnas1.ovh.com/6z9affd86ee8486468b17be15938b82a/ Login : xxxxxx Password : xxxxxx

mount -t davfs https://cloudnas1.ovh.com/6z9affd86ee8486468b17be15938b82a/ /mnt umount /mnt Pour tester aller cd /media mkdir hubic mount -t davfs https://cloudnas1.ovh.com/6z9affd86ee8486468b17be15938b82a/ /media/hubic Renseigner le champs login et password avec les informations donnés par le script. Normalement votre répertoire devrait être monté

Vous avez plus qu'à lancer votre transfert de fichier. J'en ai profité pour faire évoluer mon script de sauvegarde.

La grosse différence entre la méthode ftp et webdav est le temps de transfert. En ftp j'avais de gros ralentissement et certaines commandes systèmes n'étaient pas prise en compte (chown par exemple ou encore conserver les users/groupes envoyé par rsync). En webdav plus de problème.




Configuration de davfs2

davfs2 est un module fuse permettant de monter la ressource hubic comme un dossier.

davfs2 a besoin de plusieurs fichiers. c est un peu penible, mais voila comment faire pour monter la ressource en tant qu utilisateur :

editer /etc/fstab pour rajouter :

https://cloudnas1.ovh.com/XXXXXXX/ /votre/repertoire/prefere/ davfs rw,user,noauto,uid=1000 0 0

pensez a modifier le UID par celui de votre utilisateur, ansi que l URL cloudnas pour avoir votre repertoire retourne par le script hubic.pl.




Creer le repertoire ~/.davfs2

copier les fichiers par defaut de davfs2 :

cp /etc/davfs2/davfs2.conf ~/.davfs2/ cp /etc/davfs2/secrets ~/.davfs2/ editer ~/.davfs2/davfs2.conf :

use_locks 0 # tres important, vous ne pourrez rien upload sans cela drop_weak_etags 0 allow_cookie 1 read_timeout 300 table_size 65535 dir_refresh 120 # seconds file_refresh 20 # second delay_upload 0 gui_optimize 1

Vous pouvez aussi modifier cache_size et cache_dir a votre convenance (surtout cache_dir, il faut que votre user ai les droits en ecriture sur le repertoire specifie).




editer ~/.davfs2/secrets :

https://cloudnas1.ovh.com/XXXXXXX/ cloudnas YYYYYYY

remplacez XXXXXXX par votre repertoire donne par le script hubic.pl, et YYYYYYY par le mot de passe qu il vous a revele.

Et voila! normalement, vous serez capables de monter votre espace hubic en faisant :

mount /votre/repertoire/webdav Attention : davfs2 n est pas multi-thread. Donc vous pourrez effectuer qu’une seule operation a la fois, il vous sera par exemple impossible de lister un repertoire tant que vous serez en train de transferer un fichier. davfs2 sera aussi bloquant tant qu il telechargera en cache un fichier, il ne vous remettra pas le fichier en meme temps! c est plutot contraignant, et l auteur de davfs2 ne semble pas motive pour effectuer toutes les modifications necessaires pour avoir un pool de connexions et mise en cache.




Configuration de encfs

Cette partie est optionnelle, elle depend du niveau de confiance que vous accordez a OVH (a peu pres 0% pour moi, cela vaut en theorie pour tout le monde).

Cela nous permettra de chiffrer directement les noms des fichiers que nous allons deposer sur hubic, ainsi que leur contenu!

Attention : hubic(webdav tout simplement ?) ne permettant pas de creer des fichiers commencant par un ‘.’, il faut ruser un peu avec encfs pour creer son fichier contenant les informations de chiffrement.

ENCFS6_CONFIG="/votre/repertoire/prefere/encfs_config_file" encfs /votre/repertoire/webdav /votre/repertoire/encfs/ La premiere fois que vous executerez cette commande, encfs vous demandera de bien vouloir configurer le type de chiffrement a utiliser. Les fois suivantes, il se contentera de vous demander le mot de passe.




Tout fonctionne

Tant mieux !

Personnellement j ai effectue cette procedure sur ma dedibox, pour qu elle mette en cache au plus vite avec hubic, et de mon cote j ai du sshfs pour dialoguer avec la dedibox. La dedibox disposant d un debit bien plus rapide que moi avec OVH, j y gagne enormement (surtout pour les gros fichiers)!




Interface web et partage de fichiers

Avoir son hubic a soit, en sshfs, c est plutot sympas, mais si l on souhaite partager un fichier a une autre personne, cela devient complique.

J ai opte pour l installation d ajaxplorer sur la dedibox, qui s install tres simplement, et il n y a plus qu a ajouter en repository votre dossier encfs!

Ensuite, vous pourrez utiliser ses fonctionnalitees pour partager des fichiers, ou encore creer des comptes a vos amis! Je vous recommande tout de meme de desactiver les previews des images (dans les settings).

Du a un defaut de conception dans ajaxplorer, chaque dossier que vous listez provoque la mise en cache de tous les fichiers dans davfs2! c est relativement inacceptable si vous avez des fichiers assez gros (vos backups de CDs par exemple …);

Pour palier a cela, j y suis alle avec une truelle, en editant /access.fs/class.fsAccessWrapper.php et allant vers la ligne 295 pour commenter :

   	if($fp = @fopen($path, "r")){

$stat = fstat($fp);

   		fclose($fp);
   		return $stat;
   	}

Ce fopen+fstat est un tueur de disponibilite … un stat() serait bien mieux, mais mes essais de patch avec un stat() aboutissent au meme probleme. Je ne sais pas pourquoi, mes competences en PHP sont proches du 0, tout fois j ai ouvert un thread chez les gens d ajaxplorer en esperant avoir de l aide.

NB : Si vous ne souhaitez pas utiliser encfs, vous pouvez monter la ressource webdav dans ajaxplorer directement! ca fonctionne, avec plus de latences que davfs2, mais logiquement le probleme de concurrence qui apparait avec davfs2 disparait!

samedi 21 avril 2012

AviGNU et Linux Ventoux seront présents à NATURAVIGNON 2012

Affiche NATURAVIGNON 2012

AviGNU et Linux Ventoux seront présents le samedi 12 mai et le dimanche 13 mai 2012 à la 17e fête écobiologique, NATURAVIGNON

Un atelier « Découverte des Logiciels Libres et gratuits », destiné aux enfants sera proposé :

  • le samedi à 12h00 et à 14h00
  • le dimanche à 13h00 et à 15h00

Une conférence (salle 1) intitulée, « L'informatique éco-responsable, c'est possible ! », le samedi 12 mai à partir de 16h00.

Pour plus de détails, vous pouvez nous contacter sur nos sites respectifs, un doodle est à votre disposition pour connaître le nombre de participants (badges).

ACPI et FreeBSD

logo du système d'exploitation, FreeBSD

En ce moment, je travaille sur l'intégration de la prochaine version stable (4.10) de Xfce sous FreeBSD.

Un des composants, xfce4-session gère l'hibernation et le suspend to RAM (mise en veille). J'ai donc voulu voir, comment cela été pris en charge par FreeBSD.

L'essais a été effectué sur :

olivier@bornem:~ $ uname -rsp                                   
FreeBSD 8.2-RELEASE-p3 i386
olivier@bornem:~ $ 

État des lieux

Il faut savoir, que par défaut l'ACPI est déjà activé [1]. Cependant on doit rechercher les informations concernant les différentes méthodes de mise en veille.

olivier@bornem:~ $ sysctl -a | grep acpi.supported                  
hw.acpi.supported_sleep_state: S3 S4 S5
olivier@bornem:~ $ 

Sur cet ordinateur, on peut voir que trois états (sleep states) sont « pris en charge » par le système.

On peut également voir, si le BIOS est capable de le gérer.

olivier@bornem:~ $ sysctl -a | grep acpi.s4bios                     
hw.acpi.s4bios: 0
olivier@bornem:~ $ 

Dans mon cas, la valeur est à zéro, donc mon BIOS n'a pas ce support.

On peut tester les différents états (il faut être root) avec l'utilitaire acpiconf.

root@bornem:~ # acpiconf -s 3 

L'état S4 (correspondant à l'hibernation) est équivalent à S5, j'en déduis donc que je ne pourrais pas utiliser cette fonctionnalité.

L'état S3 (suspend to RAM) est pleinement fonctionnel.

Intégration avec le gestionnaire de bureau

xfce4-session possède une dépendance, UPower [2], responsable de la gestion de la consommation (en autre).

Pour pouvoir l'employer, il faut autoriser certaines opérations, grâce notamment à polkit.

On va tout d'abord rechercher les actions possibles concernant UPower.

olivier@bornem:~ $ pkaction | grep upower                           
org.freedesktop.upower.hibernate
org.freedesktop.upower.qos.cancel-request
org.freedesktop.upower.qos.request-latency
org.freedesktop.upower.qos.request-latency-persistent
org.freedesktop.upower.qos.set-minimum-latency
org.freedesktop.upower.suspend
olivier@bornem:~ $ 

J'ai uniquement besoin du support de suspend, j'en profite donc pour créer un fichier .pkla (l'extension est primordiale) situé dans /usr/local/etc/polkit-1/localauthority/50-local.d/.

Voici son contenu :

root@bornem:~ # cat /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla 
[Suspend]
Identity=unix-group:users
Action=org.freedesktop.upower.suspend
ResultAny=yes
ResultInactive=yes
ResultActive=yes
root@bornem:~ # 

Tous les utilisateurs appartenant au groupe users sont autorisés à mettre en veille (en RAM) le système.

Notes

[1] Si l'on démarre avec les paramètres prédéfinis.

[2] Cette bibliothèque n'est pas fonctionnelle sous tous les BSD

dimanche 25 mars 2012

Quelques infos concernant le site AviGNU

Je viens de mettre à jour le blog (il était temps, l'annonce date du 11 février 2012).

J'ai suivi le même mode opératoire. À savoir :

Après la mise à jour, j'ai pris le temps de regarder les statistiques du mois de mars, mises à disposition par TuxFamily. Voici ce que l'on peut retenir :

  • Nous avons eu un pic au sujet du forum des associations (ex Associatives), au niveau du référencement
  • 19 requêtes concernant Asus, et la résolution du problème avec la carte réseau atheros sous Ubuntu
  • 13 requêtes concernant FreeBSD (installation, configuration, gestion des ports, ...)
  • 12 requêtes sur Mercurial (en relation avec WSGI, Gunicorn, et Nginx)
  • 9 requêtes concernant openSUSE
  • 4 requêtes liées à Frugalware

10 requêtes contiennent le mot clé, Python, et 8 ont pour sujet la configuration de Nginx.

Note

[1] Il faut prendre le fichier en mode raw.

mercredi 14 mars 2012

Installation d'une Debian (powerpc) à partir de debootstrap

Logo Debian

Dans cet article, nous allons voir comment installer la distribution Debian à partir de l'utilitaire debootstrap. Pour corser le tout, le partitionnement se fera en LVM.

Les prérequis

  • Un live CD, j'ai choisi Finnix [1]
  • Un ordinateur, (pour cet exercice, ça sera un iBook G4)

Note

[1] C'est beaucoup plus souple, que l'installateur de Debian.

Lire la suite...

mardi 31 janvier 2012

Comment exclure un module avec setuptools ?

Pour ceux ou celles, qui maintiennent (ou on l'intention de créer) des paquets Python pour leur distribution favorite, je vous livre une astuce si vous voulez exclure un, ou plusieurs modules.

Dans mon cas, je ne voulais pas installer le dossier tests/ (il dépend bien souvent de la bibliothèque nose), lors de la création de mon package.

Nous allons utiliser la fonction find_packages() du module setuptools.

Voici ce que nous dit la docstring :

[...]

FUNCTIONS

find_packages(where='.', exclude=()) Return a list all Python packages found within directory 'where'

'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it will be converted to the appropriate local path syntax. 'exclude' is a sequence of package names to exclude; '*' can be used as a wildcard in the names, such that 'foo.*' will exclude all subpackages of 'foo' (but not 'foo' itself).

[...]

La documentation :

[...]

find_packages() takes a source directory, and a list of package names or patterns to exclude. If omitted, the source directory defaults to the same directory as the setup script.

Exclusion patterns are package names, optionally including wildcards.

[...]

Un exemple va nous aider à bien comprendre (on se place dans les « mêmes conditions », qu'au moment de la création d'un paquet) :

olivier@bornem:~ $ tar -xzf /usr/ports/distfiles/waitress-0.8.tar.gz
olivier@bornem:~ $ cd waitress-0.8/
olivier@bornem:~/waitress-0.8 $ python
Python 2.7.2 (default, Jul  4 2011, 20:20:01) 
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd8
Type "help", "copyright", "credits" or "license" for more information.
>>> from setuptools import find_packages
>>> l = find_packages(where='.')
>>> l
['waitress', 'waitress.tests', 'waitress.tests.fixtureapps']
>>> 

on obient une liste, de tous les dossiers contenant un fichier __init__.py.

Si l'on ne souhaite pas installer le répertoire waitress/tests, il faut le mentionner :

>>> l = find_packages(where='.', exclude=['waitress.tests'])
>>> l
['waitress', 'waitress.tests.fixtureapps']
>>> 

waitress/tests/fixtureapps/ est toujours présent (la compilation échouera, car le module tests sera absent). Il faut également le préciser tous les sous-dossiers

>>> l = find_packages(where='.', exclude=['waitress.tests', 'waitress.tests.fixtureapps'])
>>> l
['waitress']
>>> 

On peut utiliser un joker (ou wildcard).

>>> l = find_packages(where='.', exclude=['waitress.test*'])
>>> l
['waitress']
>>> 

Le plus gros du travail est fait, il ne reste plus qu'à rechercher un fichier MANIFEST.in, ou SOURCES.txt, et de supprimer les lignes correspondantes à ce module (on crée alors un patch).

Une dernière chose, la fonction find_packages() se trouve dans le fichier setup.py, on va également le patcher.

dimanche 29 janvier 2012

Exécuter une application WSGI avec systemd sous openSUSE

Ce billet est une « mise à jour » du précédent, concernant le déploiement de Mercurial, sous forme d'application WSGI.

Le fait de passer par le script /etc/init.d/after.local, pour lancer une telle application, ne m'a pas entièrement satisfait. C'est pourquoi j'ai décidé de me repencher sur ce point.

À la fin de l'article, j'évoqué, Gunicorn, comme serveur WSGI, en proposant même un exemple de fichier .service. Je me suis donc inspiré de celui-ci pour en créer un.

Le but c'est de pouvoir exécuter le script, hgweb.wsgi au démarrage.

Je vous propose donc, wsgi-hg.service. Il permet de lancer (ou d'arrêter) notre script WSGI. Il n'y a rien de particulier, à part la condition ConditionPathExistsGlob, qui me sert à tester si un fichier .wsgi (en réalité hgweb.wsgi) est présent sur le serveur, si c'est le cas, le service pourra être lancé.

Il faut bien sur, avoir correctement configuré son serveur Web. Par exemple pour Nginx :

[...]

    # Subdomain settings
    #
    # Mercurial
    #
    server {
	listen 80;
	server_name hg.errements.net;

	access_log /var/log/nginx/access-hg.log;

	location / {
		root /srv/www/htdocs/vhosts/hg;
		autoindex	off;

		proxy_path	http://127.0.0.1:8500;
		proxy_set_header	Host	$host;
	}
    }

[...]

Mais on peut aller encore plus loin, actuellement dans notre script wsgi, le socket réseau (le port, et l'adresse IP) sont codés en « dur ». On pourrait les passer en paramètre. Il faut pour cela utiliser le module argparse.

olivier@bornem:~ $ python hgweb-opts.wsgi -h                                 
usage: hgweb-opts.wsgi [-h] host port

positional arguments:
  host        Add IP address
  port        Add port number

optional arguments:
  -h, --help  show this help message and exit
olivier@bornem:~ $ 

On peut voir que deux paramètres sont obligatoires, l'ordre à une importance.

  • host, par exemple 127.0.0.1
  • port, par exemple 8500
olivier@bornem:~ $ python hgweb-opts.wsgi 127.0.0.1 8500                     
serving on http://127.0.0.1:8500

On peut maintenant adapter le fichier wsgi-hg.service, pour pouvoir passer ces paramètres à la ligne ExecStart.

Voici la ligne à copier.

[...]
ExecStart=/usr/bin/python2.7 /srv/www/htdocs/vhosts/hg/hgweb-opts.wsgi 127.0.0.1 8500
[...]

Pour lancer le service, on place ce fichier dans /etc/systemd/system/default.target.wants/ (ou /lib/systemd/system/).

root@bornem:~ # systemctl start wsgi-hg.service
root@bornem:~ # systemctl status wsgi-hg.service
wsgi-hg.service - Starts WSGI script (mercurial)
	  Loaded: loaded (/lib/systemd/system/wsgi-hg.service; disabled)
	  Active: active (running) since Sun, 29 Jan 2012 21:26:45 +0100; 38s ago
	 Process: 17745 ExecStartPre=/bin/echo Starting WSGI script for mercurial  (code=exited, status=0/SUCCESS)
	Main PID: 17747 (python2.7)
	  CGroup: name=systemd:/system/wsgi-hg.service
		  └ 17747 /usr/bin/python2.7 /srv/www/htdocs/vhosts/hg/hgweb...
root@bornem:~ # 

lundi 23 janvier 2012

Déployer Mercurial (hg) « derrière » un serveur Web (Nginx) sous openSUSE

Logos

Dans un précédent billet, j'avais montré comment l'on pouvait exécuter une application Web écrite dans le langage Python sans faire intervenir de serveurs Web.

Aujourd'hui, nous allons voir le cas, où un serveur (en l'occurence Nginx) est déjà en place.

En fait, le but inavoué de cet article est de comprendre le système d'init, systemd utilisé par openSUSE en autre.

Lire la suite...

vendredi 13 janvier 2012

FreeBSD 9.0 est là

logo du système d'exploitation, FreeBSD

Depuis le 12 janvier 2012, la branche 9 est considérée comme stable. D'où l'annonce d'une nouvelle version, il s'agit de la 9.0, (elle débute le cycle de la branche 9-STABLE).

Mise à jour

Si vous possédez une architecture dite, Tier 1 (i386, et amd64), vous pouvez effectuer la mise à jour avec l'utilitaire freebsd-update(8) (pensez à modifier le fichier de configuration /etc/freebsd-update.conf).

Si vous ne l'avez jamais utilisé, c'est le moment, profitez-en !

Cependant si vous ne suivez pas régulièrement les correctifs, vous devez effectuer une manipulation au préalable.

En root copiez ce bout de code :

sed -i '' -e 's/=_/=%@_/' /usr/sbin/freebsd-update

Ou bien, utilisez freebsd-update :

root@bornem:~ # freebsd-update fetch
[...]
root@bornem:~ # freebsd-update install

La mise à jour se fait de la manière suivante (suivez les indications mentionnées) :

root@bornem:~ # freebsd-update upgrade -r 9.0-RELEASE

Maintenant, vous pouvez ré-installer les logiciels supplémentaires que vous avez installé sur votre machine.

Il n'est pas obligatoire de passer à cette version, si vous suivez la branche 8-STABLE, comme moi, une nouvelle version est prévue courant mars 2012. Cependant pour savoir si vous avez besoin de faire une mise à jour, vous pouvez toujours consulter la Release note.

jeudi 5 janvier 2012

Résolution du problème connexion ethernet filaire ASUS Eee PC 1005PXD Athéros AR 8152 Ubuntu 10.04 LTS

Afin de rendre effective la connexion de la carte réseau ethernet Athéros AR 8152 sous Ubuntu 10.04 LTS, il faut faire un upgrade du noyau 2.6.x-x à la version 3.0.0-14 dans le gestionnaire de paquets Synaptic.

  1. aller dans Synaptic (Système-> Administration) ;
  2. rechercher "linux-image-3.0.0-14-generic" ;
  3. cocher et choisir pour installation cette version du noyau ;
  4. appliquer les changements ;
  5. et redémarrer.

Enjoy ! ;-)

- page 1 de 5