Quelques nouvelles

Voici quelques nouvelles des projets sur lesquels je travaille actuellement :

Fwife est sorti en version 0.8 à l’occasion de la 1.5pre1 de Frugalware.
Au menu des changement : le mode de sélection des paquets « basique » installe un ensemble plus cohérent de paquets. Ext4 est maintenant le système de fichier proposé par défaut au formattage. Enfin, une option à la création des utilisateurs permet d’ajouter une entrée au fichier /etc/sudoers si sudo est installé.

UEvt est sorti en version 2.2.
Le principal changement à été le support de libnotify 0.7. Notons aussi l’apparition d’une boite de dialogue affichant quelques informations sur les batteries en cliquant sur l’entrée correspondante dans le systray.
La prochaine version devrait apporter quelques améliorations intéressantes et notamment intégrer un support de la luminosité pour les écrans de laptops.

– Le portage ARM de Frugalware avance lentement mais sûrement. J’ai déjà un mini-serveur qui tourne sur mon Seagate Dockstar (lighttpd + vsftpd et quelques autres services).

Fwife 0.7 : Nouvelle version

La rc2 de Frugalware est sorti ce matin. Juste avant le freeze, j’avais sorti une nouvelle version de Fwife.

Au menu des changements :

Plusieurs changements ont été apportés dans le plugin de sélection des paquets.
Désormais, trois choix sont possible pour la sélection des paquets : Basique, Intermédiaire et Expert.
Le nouveau étant celui-ci (il s’agit évidemment du mode basique) :

Il propose une installation par défaut de Frugalware, le seul choix étant celui de l’environnement de bureau. Il donne une image et une courte description pour chacun des environnements proposés.

De plus, il est maintenant possible de faire une installation de base (i.e. sans environnement graphique) dans le mode intermédiaire.

Dans le plugin de partitionnement, un bouton permet de configurer le point de montage (pour /home par exemple).
Au départ, on pouvait modifier les cellules du tableau (de la colonne ‘Point de montage’) mais comme me l’ont signalé plusieurs personnes, ce n’était pas très intuitif (en fait pas du tout).

Depuis peu Fwife est fournit sur les CDs/DVDs de Frugalware en plus de l’installateur en curse (le choix se faisant au niveau du grub). Mais, jusqu’à présent, Fwife ne supportait pas l’installation depuis les CDs/DVDs. C’est désormais révolu dans cette nouvelle version.

Ajoutons à celà quelques modifications mineures, notamment pour empécher ce genre de choses.

En parlant de bugs vicieux, celui-ci traîne depuis un bout de temps et est difficile à corriger car je n’arrive pas à le reproduire. Il semble que ce bug ne se produise qu’avec le protocole ftp, l’astuce consiste donc à passer par http.

A propos des traductions françaises, celles de cette version ne sont pas à jour, il se peut donc que certains des messages soient en anglais.

UEvt 2.0

J’ai sorti une nouvelle version de mon petit programme UEvt hier. Elle est dès à présent sur les dépôt de Frugalware.

Comme prévu, j’y ai ajouté un support (partiel) de gestion du processeur, ce qui donne :

CPU Manager

Evidemment il est aussi possible de simplement désactiver cette nouvelle icône si l’on en a pas besoin.

Pour pouvoir l’utiliser il est néanmoins nécessaire de configurer quelque peu UEvt.
En effet, changer de fréquence nécessite les droits administrateur.
Ma solution préférée est d’utiliser cpufrequtils (packagé il y a peu sur Frugalware par Devil505).
J’ai ensuite mis cpufreq-set en sudo sans mot de passe.
A partir de là, il suffit de configurer les lignes suivantes du fichier de configuration :

uevt_cpufreq_change_frequency=sudo cpufreq-set -g userspace; sudo cpufreq-set -r -f $2
uevt_cpufreq_change_governor=sudo cpufreq-set -r -g $2

Il est possible d’utiliser la commande gksu plutôt que sudo.
Il est aussi possible de passer par l’outil de configuration graphique (qui est la deuxième nouveauté de cette version) pour configurer ces commandes :

A part celà et quelques corrections de bugs, un nouveau bouton fait son apparition dans le menu du powertray.
Il permet de désactiver la gestion de l’énergie de l’écran (i.e. la mise en veille), chose qui est très pratique quand on regarde un film ou pour ne pas être ennuyé lors d’une présentation.

UEvt 1.0 sur Frugalware

UEvt est un petit programme composé de deux modules basés sur udisks et upower (ce qui permet de s’affranchir de HAL qui n’est plus maintenu).
Il est écrit en Vala et ne nécessite que peu de dépendances (gtk+2, libnotify, upower et udisks).

Je l’ai évidemment packagé pour Frugalware, pour l’installer :

pacman -S uevt

Le premier module permet de gérer les disques amovibles et cdroms et supporte :
– le montage automatique des disques et cdroms (avec reconnaissance des cds audio et cds vierges)
– l’éxécution de commandes définies par l’utilisateur pour certains évènements
– la notification de l’utilisateur via libnotify :

– une icône dans le systray pour monter/démonter les disques manuellement :
UEvt Disks

– Le second module est un gestionnaire d’énergie qui supporte :
– notification de l’utilisateur lorsque la batteries est faible
– éxécution de commandes définies par l’utilisateur lorsque la batterie est faible ou critique.
– une icône dans le systray (état des batteries, suspendre et hiberner l’ordinateur (si il le supporte)) :

– susprendre l’ordinateur à la fermeture du « couvercle » (pour les laptops)

Les deux modules sont complètement indépendants et configurables.
Pour plus de détails, voir ici.
La prochaine version devrait contenir un panneau de configuration et gérer la configuration du processeur dans le gestionnaire d’énergie (changement de fréquence, etc.)

TeX Live 2010 sur Frugalware Current

Mi-septembre est sorti la première version de TeX Live 2010. J’ai poussé cette nouvelle version sur Frugalware current il y a quelques jours.

Les principales nouveautés sont l’utilisation par défaut du format PDF en version 1.5, ce qui améliore quelque peu la compression (mes quelques essais ont montré une diminution de 8 à 9% de la taille des fichiers) et l’apparition de ma commande epstopdf permettant la conversion directe des fichiers eps en pdf (ce qui ravira les amateurs de MetaPost tels que moi!).

Quelques nouveaux paquets ont aussi fait leurs apparition dans cette version. J’en présenterai un seul : pst-knot.

Il permet de dessiner certains noeuds (mathématiques) classiques très facilement, par exemple le noeud de trèfle :

\begin{pspicture}[showgrid=false](-2,-2)(2,2) 
  \psKnot[linewidth=3pt,linecolor=red](0,0){3-1}
\end{pspicture}

(N’oubliez pas que la commande pdflatex ne supporte pas pspicture : utilisez la commande latex à la place).

Les noeuds sont classés en fonction de nombre de croisements.
Le premier paramètre de la fonction psKnot indique les coordonnées du point d’origine et le deuxième le type du noeud (ici le premier noeud à 3 croisement.

et voilà le résultat :

Trefoil Knot

La documentation de ce paquet est disponible ici.

Migration

Comme vous pouvez le constater, le site à changé d’adresse en même temps que de serveur.
Il est maintenant hébergé à cette adresse : http://elentir.sleipnir.fr

Au passage, le serveur tourne sous Frugalware current et utilise Cherokee.

J’en ai profité pour faire un nettoyage du site et mettre à jour les pages.
J’ai aussi (enfin) trouvé le thème WordPress parfait : Portfolio-press. Propre, clair, sans fioritures, c’est ce que je cherchais depuis un moment!

Script d’extinction pour gestionnaire de fenêtre léger

L’un des principaux problèmes (qualité?) des gestionnaires de fenêtre léger du type Openbox, Fluxbox et consoeurs est qu’ils demandent un peu plus de travail pour certaines opérations. Il en est de l’extinction de l’ordinateur. Alors que des monstres comme KDE ou encore Gnome font ça tout seul, cela demande un peu plus de travail pour les autres. Je présente ici le script que j’utilise sous Openbox.

Ce sujet à été largement traité notamment ici. Néanmoins le script proposé ne me satisfaisais pas, d’une part car il nécessitait de configurer le fichier /etc/sudoers pour pouvoir appeler les fichiers /sbin/reboot, … via sudo sans mot de passe et d’autre part car il n’était pas joli à voir =).

Le premier problème peut se résoudre en passant par DBus. En effet l’interface DBus

/org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement

de Hal nous fournit les commandes de gestion de l’alimentation. Elle permet notamment de pouvoir redémarrer, éteindre ou encore mettre en veille son ordinateur. Il suffit pour cela d’appeler la fonction DBus correspondante. On peut par exemple le faire via la commande :

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

pour redémarrer la machine.

En cherchant sur internet, j’ai trouvé ce script que j’ai complètement réécris. Il est écrit en Python et utilise PyGTK uniquement. Je lui ai ajouté le support de DBus. En effet Python fournit un binding pour DBus extrèmement puissant! Je l’ai rendu un peu plus joli lorsque l’on passe la souris sur les boutons même si il reste un peu à faire au niveau de l’effet qui n’est pas assez visible à mon goût.
Je l’ai aussi rendu assez configurable via un fichier de configuration pour le rendre indépendant du gestionnaire de login et du gestionnaire de fenêtre et assez facilement personalisable (police de caractère des titres, images des boutons, exécution des commandes personalisés, nombre de bouton par ligne et emplacement des lignes, taille des espacements entre boutons, etc.). Une dernière chose est qu’il marche assez correctement (il manque juste les titres des boutons pour le moment) sans fond d’écran.

Et voici le résultat :


et sans fond d’écran :

Le fichier de configuration est assez simple. La description d’un bouton est de cette forme :

[monbouton]
title=Titre de mon bouton
exec=Commande à éxécuter
tooltip=Le tooltip en cas de lancement sans fond d'écran ça peut être utile
image=chemin/vers/image

Je renvoi à l’exemple de fichier de configuration donné par défaut dans l’archive du script qui est largement commenté. Les boutons « hibernate », « reboot » ou « shutdown » sont déjà préconfigurés pour utiliser DBus. Ils ne demandent que la configuration d’une image et d’un titre. A noter aussi que les boutons préconfigurés « hibernate » et « suspend » n’apparaissent que si l’ordinateur le supporte.
Le script utilise l’ordre des d’appartition dans le fichier de configuration comme ordre pour les boutons affichés à l’écran.

Pour finir le lien vers ce script.
Il suffit de s’assurer que le fichier de configuration est dans le même répertoire que le fichier « exitit » et de lancer ce fichier « exitit » pour démarrer le script.

Fwife 0.6 dans les bacs

Voilà, c’est fait, après de nombreux retards (voilà ce qui arrive à faire trop de maths :p), j’ai enfin sorti la version 0.6 de Fwife. Cette version est accompagné d’une nouvelle version des cd d’installations disponible sur le site de votre serviteur 😉

Je vais présenter les principaux changements :
— j’ai ajouté une fonction permettant de scanner les points d’accès WiFi :


Si l’ESSID n’est pas caché, c’est souvent plus rapide que de le retrouver pour l’écrire à la main.
— affichage du status des mirroirs comme ceci :

Cela permet d’éviter de sélectionner les mirroirs qui ne fonctionnent pas (par défaut lorsqu’un mirroir ne fonctionne pas, pacman-g2 prend le suivant sur sa liste, et d’après l’un des corollaires de la loi de Murphy, c’est toujours le plus lent!). A noter que pour l’instant, la fonction est très manichéenne, les mirroirs trop long à répondre seront affichés avec un point rouge. La prochaine version de fwife devrait les considérer différemment (par exemple avec un point orange :D). Cette modification devrait être assez triviale.

Coté modifications « moins visuelles », j’ai réorganisé le plugin de configuration réseau en essayant de tenir compte des remarques qui m’ont été faite sur le forum de Cyrille Borne. Je crois que ce plugin est le seul à avoir subi tant de changements et réecritures successives au cours des différentes versions. Je n’arrive pas à trouver par quel bout le prendre. Pour cette fois j’ai laissé tombé la recherche dhcp sur le réseau que j’avais introduite dans la version précédente; trop dépendante de la version de dhcpcd utilisée, et très lent si le réseau n’utilise pas dhcp. De plus, la cascade de boîtes de dialogues au lancement de ce plugin était assez confuse. J’ai finalement implémenté une fonction permettant de détecter les configurations actives sachant que dhcpcd laisse toujours une trace permettant de trouver sur quelles interfaces réseaux il est lancé. L’idée étant, pour le CD, de lancer dhcpcd au démarrage et Fwife s’occupera ensuite de trouver si dhcpcd a réussi à se lancer sur une des interfaces réseaux.
Autre modification importante, Fwife supporte enfin correctement la branche « stable » de Frugalware, ce qui n’étais pas le cas de la version précédente. Je sortirai des CD installant la version « stable » de Frugalware juste avant la sortie de la de la version 1.2 Locris, c’est à dire au mois de mars.

Pour cette version j’ai réecrit une grande quantité du code : plus propre, plus simple (parfois on se complique la vie alors que la solution simple est sous notre nez) et plus rapide pour certaines fonctions (lecture de la base de donnée de paquets par exemple). Le revers de la médaille est que des régréssions ont pu être ajoutées par rapport à la version précédente. Néanmoins j’espère en avoir corrigés plus que ce que j’en ai ajoutés.

Petit aperçu du futur maintenant :
Une version 0.6.1 devrait sortir lorsque suffisamments de bugs de cette version auront été corrigés. Elle ne devrait pas inclure de nouvelles fonctionnalités majeures. Pour la prochaine version (0.7), je pense que je vais pousser la gestion des différents environnements de bureaux (Gnome, KDE, …). D’abord ajouter les environnements de bureaux moins utilisés du type Openbox (mon préféré =) ) dans une section du type « Autres environnements de bureaux » ou quelque chose comme ça. Peut-être inclure une configuration automatique du gestionnaire de login (par exemple pour Slim, il faut toucher au fichier /etc/slim.conf) suivant l’environnement de bureau choisi et aussi ajouter le petit nouveau : lxdm.
Autre élément important, le CD est prêt à être supporté officiellement dans Frugalware depuis octobre dernier. La dernière étape avant de l’intégrer est le merge du dépôt xorgtesting (Xorg 7.5) qui est bloqué depuis plusieurs mois à cause du driver propriétaire (fglrx) d’ATI qui ne supporte pas Xorg 7.5 (et ils n’ont pas l’air d’être trop pressés!).
En espérant que la situation se débloque rapidement! (peut-être avec les prochain mesa?)

Enfin, j’aimerai signaler un bug important du CD (déjà 🙂 ), lié au point ci-dessus : la configuration du serveur X (tout à la fin de l’installation) à tendance à freezer sur certaines configurations (notamment avec VirtualBox). Cela semble due à la différence de version de Xorg entre la version utilisée par le CD (Xorg 7.5 donc) et celle installé par l’installateur (qui installe la branche « current » de frugalware donc une ancienne version de Xorg). Ce problème devrait être lui aussi résolu lors du merge de xorgtesting.

Optimisation de pacman-g2 : Mettre l’oiseau en cage

Voici l’adaptation (que j’utilise depuis déjà un moment 🙂 ) du script « pacman-cage » d’Arch Linux (Lien) pour pacman-g2, qui permet d’éviter une trop grande fragmentation des fichiers de la base de donnée et un ralentissement notamment lors des recherches (« pacman -Ss »). Le système de fichier utilisé par le script est ext2, j’en ai donc profité pour ajouter le support du sytème de fichier reiserfs, connu pour ses performances dans la gestion d’un grand nombre de petits fichiers. Je voulais voir si il existait une différence de performances entre les deux dans le cas de la base de donnée de pacman-g2.

Attention peux casser la base de donnée de pacman-g2 : utilisez à vos risques et périls.

L’utilisation du script est très simple, lancer avec les droits roots :

pacman-g2-cage

pour cager le pacman-g2 (par défaut le système de fichier utilisé est reiserfs) ou

pacman-g2-cage ext2

pour utiliser ext2.
Si vous voulez revenir en arrière utilisez :

pacman-g2-uncage

Voici deux résultats représentatifs (dans le sens de la médiane sur les résultats obtenus) :
Configuration : Athlon64 1800+, 1Go DDR.

time pacman -Ss titi  ( normal )
real	1m6.462s
user	0m0.712s
sys	0m1.287s

time pacman -Ss titi  ( ext2 )
real	0m5.129s
user	0m0.539s
sys	0m0.333s

time pacman -Ss titi ( reiserfs )
real	0m4.673s
user	0m0.507s
sys	0m0.456s

Et voici un autre :

time pacman -Ss tint2  ( ext2 )
real	0m5.028s
user	0m0.535s
sys	0m0.356s

time pacman -Ss tint2  ( reiserfs )
real	0m4.716s
user	0m0.534s
sys	0m0.455s

Attention n’oubliez pas de vider les caches lors des tests :

echo 3 > /proc/sys/vm/drop_caches

On note ainsi un léger avantage pour reiserfs de l’ordre en moyenne du tiers de seconde, ce qui n’est que peu significatif. Sur mon laptop (Core 2 Duo 2 Ghz, 3Go DDR2), les résultats obtenus sont globalement équivalents, l’avantage de reiserfs tombe à moins de deux dixièmes de secondes.
Notons que l’écart se creuse à mesure que le nombre d’éléments dans la base de donnée augmente. A noter aussi que le script d’autocomplétion présenté dans l’article précédent est aussi bien plus rapide 😉

Lien vers le script pacman-g2-cage
Lien vers le script pacman-g2-uncage