Lister ses paquets installés pour les réinstaller

Il peut souvent être pratique de voir les paquets actuellement installé sur son système d’exploitation (ici basé sur Debian). On peut par exemple vouloir les exporter pour les réinstaller sur une autre distribution ou tout bêtement pour réinstaller sa machine.

La solution pour faire ça consiste à utiliser le gestionnaire de paquets dpkg à l’aide de la commande :

dpkg --get-selections

Ce qui permet par exemple d’exporter cette liste en l’inscrivant dans un fichier comme ceci :

dpkg --get-selections > packagesList

Un fois ce fichier plat importé sur le nouvel OS, on va importer la liste de paquets en faisant :

dpkg --set-selections < packagesList

Remarque : notez bien la différence entre le get et le set.
Il ne reste plus qu’à installer cette liste à l’aide de la commande :

apt-get dselect-upgrade

Si vous voulez simplement obtenir des informations détaillées sur les paquets que vous avez installés, vous pouvez utiliser :

dpkg -l

mais le détail des informations empêchera de réimporter ce fichier par la suite.

Installer les drivers de Canon MP490 à partir de paquets théoriquement incompatibles

L’autre jour, j’ai voulu installer mon imprimante Canon MP490. Je me suis donc rendu sur le site du constructeur et j’ai récupéré les drivers Linux. Malheureusement, les drivers qui sont disponibles sont compatibles i386 et aucun n’est disponible pour architecture amd64. Deuxième point problématique, ces drivers requièrent des dépendances qui ne sont pas satisfaites sur ma distribution.

Plutôt que de mettre à jour toutes les librairies une à une, j’ai choisi une solution, certes hasardeuse et pas des plus propres, mais qui en l’occurrence a fait ses preuves.

J’ai commencé par décompresser l’archive cnijfilter-mp490series-3.20-1-i386-deb.tar.gz puis je me suis rendu dans le dossier packages que l’on vient d’extraire.

Je me suis basé sur ce post que j’ai trouvé et j’ai appliqué les commandes suivantes à chacun des deux paquets :

dpkg -x [package].deb common
dpkg --control [package].deb
nano DEBIAN/control
#On enlève purement et simplement la ligne "Dependencies"
cp -a DEBIAN/ common/
dpkb -b common [package].deb
rm -rf DEBIAN/ common/

Une fois cette étape faite, il m’a resté à exécuter le script install.sh en temps que root pour installer les pilotes.

Un problème restait cependant après l’installation de l’imprimante. L’imprimante me marquait une erreur de cups insecure filter. Le problème était juste un problème de propriété et il suffisait de faire un chown et un chgrp à root des fichiers qui ne l’étaient pas dans les dossiers :

/usr/lib/cups/filter/
/usr/lib/cups/backend/

Certes ce n’est pas la méthode la plus propre mais elle a l’avantage de marcher. L’imprimante est maintenant reconnue tant pour imprimer que pour scanner.

Asus Keyboard Backlight Control et paquet .deb

Mon ordinateur portable est un Asus G73J. Il est muni d’un rétro-éclairage clavier des plus pratiques. Cependant, les raccourcis de contrôle au clavier ne sont pas fonctionnels sur la plupart des distributions Linux. J’ai donc créé un script qui me permet, à l’aide d’acpi, d’activer ces raccourcis et de contrôler l’intensité du rétro-éclairage et que j’ai nommé Asus KBBL Control (Asus KeyBoard BackLight Control). [EDIT] Il n’est actuellement pas disponible mais reviendra sous peu [/EDIT]

Pour l’installer et le désinstaller plus facilement, j’ai décidé de créer un paquet .deb. Après un peu de recherche, ceci n’est pas difficile et facilite grandement la tâche de maintient d’applications.

Pour ce faire, il suffit de créer un dossier (le nom importe peu). A l’intérieur de ce dossier, il faut créer un paquet nommé DEBIAN. A l’intérieur de ce dossier, on peut mettre plusieurs fichiers dont :

  • preinst : script exécuté avant l’installation
  • postinst : script exécuté après l’installation
  • prerm : script exécuté avant la suppression
  • postrm : script exécuté après la suppression
  • control : Détails du paquet

Un de ces fichiers est obligatoire cependant, c’est le fichier control. C’est à partir de lui que le paquet final est construit (notamment le nom). Pour plus de détail sur sa construction, il suffit de regarder la manpage :

man deb-control

Cette page étant largement détaillée, je n’entrerais pas dans les détails.

Le logiciel que l’on souhaite empaqueter se met à côté du dossier DEBIAN. On va le placer dans le dossier dans lequel il sera installé en considérant ce dossier comme la racine du disque dur. Ainsi, si mon programme doit être installé dans /etc/acpi, je vais créer à côté de DEBIAN un dossier etc dans lequel je créerais un dossier acpi et dans lequel enfin je mettrais mon programme à installer.

Une fois cette petite cuisine effectuée, il ne reste plus qu’à compiler le paquet. Pour cela, on se place un dossier au dessus du dossier qui contient DEBIAN et le logiciel et on tapera la commande :

dpkg-deb --build <NOM DU DOSSIER>

On a un magnifique fichier .deb qui se créé juste à côté de notre dossier source et qu’il ne restera plus qu’à installer avec un :

dpkg -i <NOM DU PAQUET>