LPM est le nom du gestionnaire de paquetages en ligne de commande de Logram. Il fait partie de l'ensemble Suite Setup, qui comprend toute la gestion des paquets, en ligne de commande ou graphique. Cette suite est encore en plein développement, mais peut très facilement se compiler et se tester, même en utilisant une distribution quelconque.
Sous Ubuntu 9.10, il faut installer les paquets libarchive-dev et libarchive1. Cependant, il se peut que cela ne suffise pas. Il faut alors aller sur le site de Libarchive et récupérer l'archive de la release la plus récente, la décompresser, lancer le script ./configure, puis compiler avec make et installer avec sudo make install. Si la compilation ne marche pas, il faut retirer l'expression -Werror dans le Makefile créé par configure.
Il se peut que vous ayez aussi besoin de xz-utils pour pouvoir utiliser la commande unxz. Son installation sous Ubuntu vous forcera à désinstaller le paquet lzma pour le remplacer par un autre ; cette opération n'est pas dangereuse contrairement à ce que vous déclare apt.
Le code de Setup peut facilement se récupérer depuis le dépôt Gitorious de Logram :
1 2 3 | mkdir setup
cd setup
git clone --depth 1 git://gitorious.org/logram/setup.git
|
Quand vous voudrez mettre à jour le code, pour bénéficier de la dernière version, faites ceci :
1 | git pull |
La compilation de LPM est assez simple :
1 2 3 4 5 6 | mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr make translations make sudo make install |
LPM est compilé et prêt à l'emploi
.
LPM ne peut pas encore tout à fait être lancé. Nous allons d'abord le configurer.
Tout d'abord, créeons une structure de dossiers qui va permettre de tester LPM sans droit root, sans toucher au reste de votre distribution :
1 2 3 4 5 6 7 8 | mkdir /tmp/lpm mkdir /tmp/lpm/etc mkdir /tmp/lpm/etc/lgrpkg mkdir /tmp/lpm/etc/lgrpkg/scripts mkdir /tmp/lpm/var mkdir /tmp/lpm/var/cache mkdir /tmp/lpm/var/cache/lgrpkg mkdir /tmp/lpm/var/cache/lgrpkg/{db,download} |
Notre structure de dossiers est faite, remplissons-les un peu :
1 2 | ln -s /etc/lgrpkg/scripts/weight.qs /tmp/lpm/etc/lgrpkg/scripts/weight.qs mv /tmp/lpm/etc/lgrpkg/sources.list{.sample,} # Renomme sources.list.sample en sources.list |
Vous pouvez ouvrir le sources.list, mais normalement il marche. Si vous avez des problèmes de signature GPG lors de la mise à jour de la base de donnée, changez «Sign=true» en «Sign=false».
Ensuite, il vous faut importer une clef GPG vous permettant de vérifier l'authenticité des fichiers téléchargés depuis le dépôt :
1 2 | wget -O /tmp/key.key http://www.logram-project.org/files/uploads/2009/11/12/182006/key.key gpg --import /tmp/key.key |
Voilà, la clef est installée.
Nous pouvons maintenant procéder à la mise à jour de la base de donnée, en utilisant l'architecture de répertoires créés.
1 | lpm -R /tmp/lpm/ update |
Les fichiers sont téléchargés, quelques lignes sont affichées à l'écran, normalement tout fonctionne. Sinon, demandez sur le forum.
Maintenant que nous avons notre liste à jour, nous allons un peu nous amuser. Listons d'abord tous les paquets disponibles :
1 | lpm -R /tmp/lpm search '*'
|
La liste des paquets s'affiche. Nous allons afficher plus d'informations sur le paquet initng-plugins, des plugins pour le système de démarrage Init-ng, le premier paquet de test disponible :
1 | lpm -R /tmp/lpm showpkg initng-plugins |
Vous pouvez voire plein d'informations, une description longue, la liste des versions, etc. Les métadonnées ont été téléchargées automatiquement, et leur somme SHA1 vérifiée.
Nous allons maintenant afficher le changelog de ce paquet, c'est à dire la liste des modifications :
1 2 3 | lpm -R /tmp/lpm -C showpkg initng-plugins
# Astuce : afficher ça dans un less avec les couleurs
lpm -R /tmp/lpm -C showpkg initng-plugins | less -W
|
Maintenant, nous allons tester le solveur et installer ce paquet
1 | sudo lpm -R /tmp/lpm add initng-plugins |
Appuyez sur I, le paquet est téléchargé et installé dans le dossier /tmp/lpm, avec toutes ses dépendances ! Vous pouvez constater l'appartition de magnifiques barres de progressions à l'écran, sauf si votre connexion est tellement rapide que vous n'avez pas le temps de les voir
.
Pourquoi mettre sudo : certaines personnes, dont moi, ont des problèmes sans le sudo. Pour être certain que le paquet est bien installé, libarchive (bibliothèque qui gère les archives) chmod et chown chaque fichier extrait. Malheureusement, la manière dont elle fait ça ne marche pas avec un utilisateur normal, quelques soient les droits des dossiers /tmp et /tmp/lpm
. Si vous avez peut, vous pouvez tester sans le sudo, mais il se peut que ça marche moins bien.
Petite parentèse : les différents paquets sont téléchargés en parallèle, et installés en parallèle. Par exemple, A et B sont téléchargés en même temps. Quand A a fini, C commence à être téléchargé, et A est installé. Quand B a fini, B est installé (que A soit installé ou pas), puis C est installé une fois téléchargé. Ainsi, pas de perte de temps ! Pour régler le nombre de paquets installés et téléchargés en parallèle, utilisez l'option "-I paquets_installés_en_parallèle -D paquets_téléchargés_en_parallèle". Ces options à 1 désactive tout parallélisme.
Nous avons donc ce paquet installé. Vérifions :
1 | ls /tmp/lpm/ |
Vous pouvez explorer le contenu de ce dossier avec un explorateur de fichiers ou la console, et voir que tout est parfaitement installé. Les versions i686 ont été installées, donc si vous n'avez pas un ordinateur de cette architecture, vous ne pourrez pas directement lancer d'éxécutables.
Maintenant, tentons la suppression d'un paquet. Tout ceci se fait très simplement :
1 | sudo lpm -R /tmp/lpm add -initng |
Hop, initng est parti, initng-plugins aussi, mais libinitng reste. Pour la mise à jour, essayez des "sudo lpm -R /tmp/setup upgrade" de temps en temps. Quand le dépôt Logram sera mis à jour, vous pourrez le voir facilement (note: n'oubliez pas "lpm update" avant
).
Un easter egg est une fonctionnalité cachée d'un programme. Setup en a un, qui permet de passer le temps quand on s'ennuie. Ok, ce n'est pas passionnant, mais c'est utile pour les tests :
1 | lpm testprogress |
Et voilà le résultat :

Merci d'avoir suivi ce court tutoriel.