Wajig

Pour administrer votre distribution Debian, vous utilisez probablement plusieurs outils, par exemple dpkg, apt-get, apt-cache, auto-apt, aptitude, apt-file. Et parfois, vous vous mélangez les pinceaux, pas vrai ?

Ce serait tellement plus simple si vous pouviez avoir un seul programme qui ferait tout ce que font ces outils, et peut être même plus ? Alors wajig est fait pour vous !

Quand L'admin rencontre wajig

Installation du minimum ... et plus si affinité

Tout d'abord, qu'est-ce que wajig ? quelle(s) fonction(s) remplit-il ?
C'est simple, wajig est un outil dont le but est de centraliser les tâches nécessaires à l'administration d'une Debian, il est en partie un “wrapper” pour apt-[get|cache], dpkg, les initscripts, mais il introduit également d'autres fonctions que nous verrons plus loin. Il facilite grandement les tâches de l'administrateur, en effet, plus besoin de se rappeler des options des 42 commandes que vous utilisez.

Wajig étant codé en python, pour l'installer il vous faudra donc l'interpréteur python, ainsi que le module python-apt. Mais si les dépendances sont minimales, je ne peux que vous conseiller d'installer une partie des packages du champ Suggests. En effet, wajig utilise de nombreux packages, et sans eux, vous perdez une partie des fonctionnalités (dont certaines valent le détour). Voyons de plus près :

 
[email protected]$ apt-cache show wajig
Package: wajig
Priority: optional
Section: admin
Installed-Size: 436
Maintainer: Graham Williams <[email protected]>
Architecture: all
Version: 2.0.37
Depends: python, python-central (>= 0.5.8), apt, python-apt, dselect
Suggests: wget, fping, debconf, reportbug, apt-move, dpkg-repack, alien, 
fakeroot, gkdebconf, lynx, python-gtk2, python-glade2, python-gnome2, 
gnome-terminal, locales,gnome-tasksel, deborphan, vrms, sudo, 
apt-show-versions
Filename: pool/main/w/wajig/wajig_2.0.37_all.deb
Size: 9683
MD5sum: 99f5fabd7adbbfe1d9d8d1a6a46d3fb5
SHA1: 313cc7b8217903dde88cbcb0d81f8597857b95cc
SHA256: c208b2f812da3b8bfe85386a001b3a5683ba8ab5585524a507d370a5005433f5
Description: simplified Debian package management front end
 Wajig is a single commandline wrapper around apt, apt-cache, dpkg,
 /etc/init.d scripts and more, intended to be easy to use and providing extensive 
documentation for all of its functions.
 With a suitable sudo(1) configuration, most (if not all) package installation 
as well as creation tasks can be done from a user shell. Wajig is also
suitable for general system administration.
A Gnome GUI command 'gjig' is also included in the package.
Python-Version: all
Tag: admin::package-management, implemented-in::python, interface::commandline, 
role::program, scope::application, suite::debian, use::configuring, use::searching,
works-with::software:package, works-with::software:source

Le mainteneur a donc astucieusement mis en dépendance le strict minimum, laissant à l'administrateur le choix d'installer les packages suggérés. Un point intéressant dans la description est que wajig sait tirer partie de sudo s'il est installé et configuré de façon à laisser à un (groupe d') utilisateur(s) la capacité de se servir de certains outils en tant que root.

Comme on le lit aussi dans la description du package, chaque commande est documentée de façon exhaustive, je ne détaillerai donc pas complètement toutes les fonctions qui seront utilisées dans cet article. Si vous désirez approfondir le sujet, la documentation de wajig vous comblera sûrement.
Mais alors de quoi va traiter cet article ? Tout simplement de la vie quotidienne d'administrateur avec wajig.

Arrivé là, et avant de poursuivre, installons wajig avec la traditionnelle commande

#apt-get install wajig

Bien se protéger avant de commencer

Nous allons avant toute chose configurer sudo pour wajig. Il est possible, mais peu recommandable, de laisser un utilisateur lancer wajig en tant que root par exemple :

[email protected]:~$ sudo wajig install NomDuPaquet

Mais voilà, vous laissez à l'utilisateur admin le droit d'utiliser toutes les fonctions de wajig en tant que root, alors que vous pouvez régler beaucoup plus finement ses droits.

Editons le fichier /etc/sudoers avec la commande visudo:

# Host alias specification
# pour que la commande sudo ne puisse être lancée qu'en local
Host_Alias PC=localhost, hostname
# User alias specification, 
# Création de groupe d'utilisateurs
User_Alias ADMIN = toto
# Runas group
# Cmnd alias specification
# Création de groupe de commandes
Cmnd_Alias INITD=/etc/init.d/*
Cmnd_Alias WAJIG=/usr/bin/apt-get, /usr/bin/apt-cache, /usr/bin/apt-file, /usr/bin/dpkg,\
       /usr/bin/dpkg-reconfigure, /etc/init.d/*, /usr/sbin/update-alternatives, \
       /usr/bin/dselect, /usr/sbin/invoke-rc.d, /usr/bin/sudo
# User privilege specification
# Groupe d'utilsateurs et groupe de commandes qu'ils sont autorisé a lancer
root    ALL=(ALL) ALL
ADMIN   PC=INITD, WAJIG

Wajig utilise nativement sudo si celui-ci est configuré correctement, en mettant certaines commandes dans un alias de sudo, vous pouvez donc permettre ou non à un utilisateur d'utiliser une fonctionnalité de wajig.

Une fois le fichier sudoers rempli, c'est wajig qui fait le travail, l'utilisation de sudo est transparente pour l'utilisateur/administrateur. Bien sûr la liste ci-dessus peut être complétée, mais pour l'instant elle est amplement suffisante pour faire connaissance avec cet outil.

En ce qui concerne l'apprentissage de sudo, je vous renvoie à mon article sur sudo de debian-fr.org , ou la page d'Andesi sur sudo.

Parmi les autres packages suggérés que je vous conseille d'installer, il y a sudo bien sûr, mais aussi apt-move, dpkg-repack, ainsi que wget et lynx.

Pour bien commencer

Nous pouvons passer à l'étape suivante, l'apprentissage des commandes de base. Pour les habitués de Debian, il n'y a pas besoin de tout reprendre depuis le début, certaines commandes de wajig sont très proches de celles que vous utilisez déjà. Commençons par les plus utilisées:

Commandes de base

  • wajig update se charge de mettre a jour la liste des paquets disponibles (voir ci dessous)
[email protected]~$ wajig update
Réception de : 1 http://www.debian-multimedia.org testing Release.gpg [189B]           
Atteint http://www.debian-multimedia.org testing Release    
Réception de : 2 http://www.debian-multimedia.org testing Release [5567B]                            
Atteint http://www.debian-multimedia.org testing/main Packages                                
Réception de : 3 http://ftp.fr.debian.org testing Release.gpg [189B] 
Atteint http://ftp.fr.debian.org testing Release                          
Atteint http://ftp.fr.debian.org testing/main Packages/DiffIndex    
Atteint http://ftp.fr.debian.org testing/contrib Packages/DiffIndex    
Atteint http://ftp.fr.debian.org testing/non-free Packages/DiffIndex   
5757o réceptionnés en 7s (765o/s)                                     
Lecture des listes de paquets... Fait 
Fusion des informations disponibles 
Remplacement de l'information sur les paquets disponibles, 
en utilisant /var/cache/apt/available. 
L'information sur 20652 paquet(s) a été mise à jour. 
This is 10 up on the previous count with 2 new packages.   
There are 3 new upgrades 

Constatez que wajig à la délicatesse de vous informer du nombre de nouveaux paquets et du nombre de paquets ayant fait l'objet d'une mise à jour depuis qu'il a interrogé les miroirs.

  • Wajig stock dans le home de l'utilisateur qui l'exécute (~/.wajig/*) les fichiers permettant de faire les comparaisons entre deux update et ainsi d'afficher les quantités de nouveau paquet et newupgrade.
  • A ce titre, deux utilisateurs (sur la même machine) n'ont pas forcément les mêmes réponses de wajig.

Le decompte des paquets new et newupgrade dépendant de la date a laquelle chaque utilisateur aura fait le précédent update

  • wajig install tartiflette installera le paquet tartiflette
  • wajig remove tartiflette désinstallera ce même paquet
  • wajig purge tartiflette désinstallera le paquet et ses fichiers de conf

Lister les paquets disposant d'une mise à jour

[email protected]$ wajig newupgrade
 Package                   Available                    Installed 
========================-======================================== 
bsdutils                   1:2.12m-1                    1:2.12l-1
debianutils                2.11.1                       2.11.0  
dialog                     1.0-20041219-1               1.0-20041118-1

Lister les nouveaux paquets

 
[email protected]$ wajig new
Package                 Description
========================-===========
gimp-help-zh-cn         Documentation for the gimp (chinese simplified)
u++                     Object-oriented concurrent language extensions for c++ 

Upgrader les paquets installés

[email protected]$ wajig upgrade
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following packages will be upgraded:  
Téléchargement des packages  
Reading package fields... Done 
Reading package status... Done  
Retrieving bug reports... Done   
Installation des packages 

Je vous l'avez bien dit, pas de changement, les commandes sont les mêmes, on est en terrain connu. Cependant, pour que vous ne vous ennuyiez pas au début, j'ai rajouté 2 commandes, newupgrade et new.

  • newupgrade permet donc de connaître la liste des paquets ayant bénéficié d'une mise à jour depuis le dernier wajig update, on voit les 2 colonnes permettant de comparer la version installée de celle disponible en téléchargement.
  • new renvoie la liste des nouveaux packages ajoutés sur les miroirs depuis le dernier wajig update. Cela vous permet de suivre l'évolution de votre distribution, et pourquoi pas de tester de nouveaux logiciels par simple curiosité.
  • Cerise sur le gateau, la commande wajig newupgrade install installera dans la foulée les mises à jour disponibles

Nous allons pouvoir passer à la suite, découvrir des fonctions moins connues mais tout aussi intéressantes, ainsi nous pourrons commencer à effectuer de réelles tâches d'administration.

Utilisation avancée pour l'administration

Administrateur cherche package ou fichier pour relation durable

S'Il est un besoin qui revient fréquemment, c'est bien la recherche, que ce soit pour trouver un package, connaitre l'appartenance d'un fichier à un package ou encore avoir le nom du package qui fournit un fichier. Nous allons donc détailler comment wajig répond à ces besoins vitaux.

Voici donc quelques commandes supplémentaires sur le traitement avancé des packages.

A la section précédente nous avons vu new et newupgrade, il existe aussi la commande toupgrade qui vous indiquera les paquets installés sur votre machine et pour lesquels une mise à jours est disponnible.

Trouver le nom d'un paquet

Pour rester dans les packages, si vous ne vous rappelez pas du nom complet d'un package, par exemple pour apache, vous pouvez demander de l'aide à wajig, avec listnames :

[email protected]$ wajig listnames apache
apache
apache-common 
apache-perl
apache-ssl
 .../...   
apache2  
apache2-common 
apache2-dev 
apache2-modules 
 .../...
mono-apache-server  
sourceforge-web-apache
webmin-apache  
etc..

Où en suis-je des versions de paquet ?

Dans le même genre, on trouve la commande status qui renseigne sur l'état d'un package, sa version, s'il est installé ou pas sur le système, bref vous avez quelques détails en plus.

[email protected]:~$ wajig status libxml2
Package          Installed         Previous        Now             State
========================================================================
libxml2          2.6.29.dfsg-1     2.6.30.dfsg-2   2.6.30.dfsg-2   install

Mener des recherches sur un paquet

Il se peut que vous ayez besoin de chercher des packages non-officiels, vous avez donc rempli votre sources.list avec lesdits miroirs, mais de temps en temps vous faites un tour sur apt-get.org histoire de voir s'il n'y a pas un backport qui vous intéresserait. Seulement, cela vous prend du temps, vous aimeriez pouvoir mener une recherche sur tous les miroirs de votre sources.list ET sur apt-get.org en même temps ? Pas de problème, wajig est là, grâce à sa commande find-pkg, il exauce tous vos souhaits.

[[email protected]]~/ $ wajig find-pkg xmms
Lines suitable for /etc/apt/sources.list
deb ftp://ftp.nerim.net/debian-marillat/ stable main
deb ftp://ftp.nerim.net/debian-marillat/ testing main 
deb ftp://ftp.nerim.net/debian-marillat/ unstable main 
.../...  
# Il y a 42 autres lignes, mais vous avez compris le principe :-)

Dans quel paquet trouver un fichier ?

Enfin pour terminer sur les recherches, il y a la possibilité de savoir à quel package appartient un fichier, grâce à whichpkg,

[email protected]~ $ wajig whichpkg pcap.h
File Path                            Package    
============================================ 
 >> Debian
 >> Packages 
 >> Package Contents Search Results 
        [sarge] 
        [sarge-volatile] 
        [sarge-backports] 
        [etch] 
        [etch-m68k] 
        [etch-volatile] 
        [etch-backports] 
        [lenny] 
        [sid] 
        [experimental] 
Found 15 results.
        File                                                    Packages
        /usr/include/nessus/pcap.h                              libnessus-dev
        /usr/include/pcap.h                                     libpcap0.7-dev,libpcap0.8-dev, 
        /usr/lib/tiger/html/pcap.html                           tiger
        /usr/share/doc/libmlpcap-ocaml-dev/html/pcap.html       libmlpcap-ocaml-dev
        /usr/share/doc/libmlpcap-ocaml-dev/html/type_pcap.html  libmlpcap-ocaml-dev
        /usr/share/doc/libpcap-ruby1.8/doc-ja/pcap.html         libpcap-ruby1.8
        /usr/share/doc/libpcap-ruby1.8/doc/pcap.html            libpcap-ruby1.8
...etc..
Content Copyright © 1997 - 2007 SPI Inc.; See license terms. Debian is a trademark 
of SPI Inc.
 

Quels sont les fichiers contenu dans un paquet ?

Pour afficher les fichiers contenus dans un package installé, utilisez listfiles, ce dernier à le même effet qu'un dpkg-L.

[email protected]:~$ wajig listfiles wajig
/.
/etc 
/etc/bash_completion.d 
/etc/bash_completion.d/wajig 
/usr 
/usr/share  
/usr/share/wajig  
/usr/share/wajig/gjig.py 
/usr/share/wajig/glutil.py  
/usr/share/wajig/const.py  
/usr/share/wajig/jigsaw-logo.png
/usr/share/wajig/documentation.py 
/usr/share/wajig/changes.py
etc..

Parceque la précision s'impose

Je tiens à rajouter que pour tirer pleinement profit des recherches de wajig, wget est indispensable, en effet si l'on regarde le script dans lequel se trouve la fonction whichpkg par exemple, on voit qu'il y a deux commandes exécutées :

# Extrait du fichier commands.py :       
 
 #------------------------------------------------------------------------
#
# WHICHPKG
#
#------------------------------------------------------------------------
def do_whichpkg(filename):
     """Search for a particular file or pattern in a Debian package.
 
     Search the Debian package archive (local installed packages and
     from the Debian package archive on packages.debian.org) for any
     packages containing a file with FILENAME in its name. The results
     are printed to standard output.
 
     Arguments:
     filename    Pattern to find
 
     Returns:"""
 
     packages_host = "packages.debian.org"
     ping_host(packages_host)
     #
     # Print out a suitable heading
     #
     print "%-59s %-17s" % ("File Path", "Package")
     print "="*59 + "-" + "="*17
     sys.stdout.flush()
 
     # #
     # Get the local information first.
     #
     # Could ensure that we don't repeat information but for now let's
     # just get the information out!
     #
     # Also need to check for diversions (like when mutt and mutt-utf8 are
     # both installed.
     #
     command = "dpkg -S " + filename + " 2>/dev/null " +\
               "| sed 's|: *|:|' " +\
               "| grep -v '^diversion by ' " +\
               "| awk -F: '{printf(\"%-59s %-17s\\n\", $2, $1)}'"
     perform.execute(command)
 
     #
     # Now obtain the information from the Debian server
     #
     results = tempfile.mktemp()
     filename = filename.replace('+', '%2B')
 
     command = "wget --timeout=60 --output-document=" + results +\
               " http://" + packages_host + "/cgi-bin" +\
               "/search_contents.pl\?word=" + filename +\
               "\&searchmode=searchfilesanddirs" +\
               "\&case=insensitive\&version=unstable" +\
               "\&arch=i386 2> /dev/null"
     perform.execute(command)

Pour ceux qui n'auraient pas de connexion à Internet pour cherche sur packages.debian.org, il est possible de faire une recherche de fichier dans les packages installés sur la machine avec la commande find-file.

This is just the aperitif Jenny ! Car il y a encore mieux

Passons maintenant à l'installation. On pourrait penser qu'à part la commande install, il n'y a pas besoin d'autre chose ? Détrompez vous, car il y a plusieurs méthodes disponibles pour installer un package.

Installation de paquets en local

  • Vous connaissez déjà la commande install qui appelle apt-get, cette commande accepte aussi qu'on lui donne en argument le chemin (relatif ou absolu) d'un package .deb, ( par exemple ~packages/toto_0.42-1.deb , vous pouvez aussi lui donner une URL.

Installation "élargie" ou comment gagner du temps grâce a wajig

  • La commande installrs permet quant à elle d'installer d'un coup d'un seul, le paquet lui même plus ceux recommandés (r) et suggérés (s) par le mainteneur du paquet.
  • Dans le même esprit la commande installr installera le paquet et ceux marqués comme recommandés
kavado:~$ wajig installrs zsh
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: libpam0g passwd   
Suggested packages:     libpam-doc   
The following NEW packages will be installed:     zsh zsh-doc libpam-doc   
The following packages will be upgraded:     libcap1 libpam0g libpcre3 passwd   
4 upgraded, 2 newly installed, 0 to remove and 73 not upgraded.  
Need to get 3367kB of archives.   After unpacking 8791kB of additional disk space 
will be used.   
Do you want to continue? [Y/n]

Gestion de liste de paquets

Enfin, il est parfois pratique de pouvoir installer un ensemble de packages d'un seul coup, par exemple reprendre la base installée sur une machine .

Certains parmi vous utilisent surement le couple dpkg –[g|s]et-selections et apt-get dselect-upgrade, mais wajig permet faire cette tâche plus facilement (pas de commande difficile à retenir). Ici l'opération se passe en deux temps :

1- Génération de la liste de paquets diponnible sur le machine kavado

[[email protected]]~ $ wajig snapshot > liste_packages 

2- Restauration de la liste des paquet sur la machine patator

[[email protected]]~ $ wajig restore liste_packages

Dans la même lignée, on trouve les commandes file-download, file-install et file-remove qui vous permettront respectivement de télécharger, installer ou supprimer plusieurs packages dont les noms sont contenus dans un fichier.

On le voit encore une fois ici, avec wajig il n'y a plus de commande ou de suites de commandes difficiles à retenir, tout est fait pour optimiser le temps passé sur chaque tâche d'administration.

A ce point de l'article, j'aimerai rassurer le lecteur. Si wajig compte une très grande quantité de commande (j'en compte 122 sur wajig 2.0.37), elles sont d'une part facilement mémorisable, et, d'autre part il y a fort à parier que dans votre utilisation quotidienne seules quelques unes vous seront utiles, les autres ne vous serviront qu'occasionnellement.

Nous allons enfin passé aux commandes qui vous étaient peut être inconnues jusqu'ici.

C'est le petit plus wajig

Vous êtes tombé amoureux de wajig, mais cela n'est pas suffisant. Irez-vous jusqu'à l'autel avec wajig ? Etes-vous prêt(e) à partager votre vie avec ? Si vous n'avez pas (encore) trouvé la réponse, lisez ce qui suit.

Le café et l'addition s'il vous plaît

Marquage de Paquets

Le système de package de Debian propose un tas d'options qu'on peut qualifier de « sophistiquées », parmi elles on trouve la possibilité de marquer un package hold, dpkg (et les autres outils fournis par Debian) ne gèrent alors plus ledit package. Wajig reprend bien entendu cette possibilité, nous avons un ensemble de 3 commandes :

[[email protected]]~ $ wajig list-commands| grep hold
hold Place listed packages on hold so they are not upgraded  
list-hold List those packages on hold  
unhold Remove listed packages from hold so they are again upgraded 

Rien de nouveau ici, mais encore une fois, l'opération avec wajig évite de retenir des commandes supplémentaires. Pour vous montrer que wajig ne sert que de “front end” dans ce cas, un petit extrait du code :

def do_hold(packages):       
"""Place packages on hold (they will not be upgraded).       
 
Arguments:       packages    List of packages.       
 
Returns:"""       for p in packages:           
# The dpkg needs sudo but not the echo.           
# Do all of it as root then!         
           command = "echo \"" + p + " hold\" | dpkg --set-selections"
           perform.execute(command, root=1)
           print "The following packages are on hold:"
           perform.execute("dpkg --get-selections | egrep 'hold$' | cut -f1")   
 
# le code pour list-hold :
          elif command == "listhold":
          if requires_no_args(command, args):
          perform.execute("dpkg --get-selections | egrep 'hold$' | cut -f1") 

Comment devenir un « Power user » :

Construction/Reconstruction de paquets

Peu d'utilisateurs exploitent les outils Debian à 100%, j'entends par là que peu de personnes font leur propres packages, que ce soit en utilisant des outils comme sbuild, pbuilder ou encore apt-build. Nous allons donc voir ici les aspects de (re)packaging proposés par wajig.

Commençons par le plus simple, build et build-depend qui permettent de construire un package à partir des sources disponibles sur un miroir Debian. Encore une fois, jetons un coup d'oeil au code :

[[email protected]]~ $ wajig build-depend zsh
Reading package lists... Done 
Building dependency tree... Done  
The following NEW packages will be installed: 
libcap-dev libpcre3-dev texi2html texinfo 
.../...
#L'installation se passe sans problèmes, c'est un bête apt-get install des packages 
qui nous manquent pour l'étape suivante. 

… On peut passer à la suite

[[email protected]]~ $ wajig build zsh
Reading package lists... Done  
Building dependency tree... Done  
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded. 
Reading package lists... Done  
Building dependency tree... Done 
Need to get 2955kB of source archives. 
.../...  
# On passe par différents programmes : dpkg-source, dpkg-buildpackage, le   
# script configure est lancé puis la commande make. Enfin, on récupère nos  
# packages dans le répertoire courant
[[email protected]]~ $ ls
zsh-doc_4.2.5-10_all.deb   
zsh-static_4.2.5-10_i386.deb   
zsh_4.2.5-10_i386.deb

Vous savez maintenant comment faire pour construire un package binaire à partir des sources disponibles sur les miroirs Debian.

Une autre possibilité est de reconstruire une archive .deb à l'aide d'un package déjà installé (on peut penser au cas où vous devez installer un package sur une autre machine, et que pour une raison quelconque vous ne pouvez plus accéder à l'archive d'origine, vous devez alors reconstruire ladite archive à partir d'une déjà installée).
La commande repackage ou package permet d'effectuer cette opération, il vous faudra aussi le package dpkg-repack, il est dans les packages suggérés de wajig, vous comprenez maintenant l'avantage des suggestions par rapport à tout un tas de dépendances dont certaines ne serviraient pas.

L'utilisation est très simple : mettons que vous vouliez reconstruire le package bash :

[[email protected]]~ $ wajig package bash
dpkg-deb: building package `bash' in `./bash_3.0-15_i386.deb'.

Bien entendu vous aurez pris soin de rajouter dpkg-repack dans la ligne Cmnd_Alias de votre fichiers sudoers pour utiliser cette commande en tant que simple utilisateur.

Pour terminer sur la partie construction/gestion avancée des packages, on notera que wajig permet d'utiliser alien afin d'installer ou convertir un package rpm en package deb. Ce système devient de moins en moins utilisé car peu de logiciels sont packagés uniquement en rpm de nos jours.

Gestion des Services

Last but not least, je vais vous parler d'une fonctionnalités qui intéressera surtout les administrateurs.

Votre Debian est un System V, en conséquence vous avez des runlevels et des scripts pour démarrer/arrêter les différents services installés sur votre machine. Ces scripts sont dans le répertoire etc/init.d, ils sont appelés de la façon suivante :

root:~ # /etc/init.d/script [start|stop|restart|something_else]

Avec wajig, il vous sera possible d'appeler directement ces scripts. La syntaxe change par rapport à un appel au script, mais ce n'est rien de bien méchant, simplement une inversion. Prenons un exemple :

[[email protected]]~ $ wajig restart apache 

On peut bien sur remplacer restart par stop, start ou autre , le deuxième argument est le nom du script dans /etc/init.d/

Conclusion

Vous l'aurez compris, la tâche de wajig est de simplifier les opérations d'administration d'une Debian, et il y parvient dans la mesure où les commandes sont faciles à mémoriser et ne sont pas seulement une reprise de dpkg ou apt. Si vous n'utilisez pas encore de gestionnaires comme synaptic ou aptitude, alors il se peut bien que wajig vous rende de grands services.

 
paquets/gestion-des-paquets-avec-wajig.txt · Dernière modification: 11/12/2010 18:12 par orgrim