Bon d'accord, aptitude>apt-get

Je suis une tête de mule, ça c’est pas nouveau. Mais il faut reconnaître lorsqu’on s’entête sur une bétise. apt-get de ci, apt-get de là…. non, non, moi c’est apt-get, aptitude je m’en fiche. Bin voilà, oui, aptitude intègre des solutions de résolution de conflit bien plus puissantes qu’apt-get. C’est vrai aptitude, c’est le bien. La preuve en images…

Avant :
% apt-show-versions -a gimp
gimp 2.2.15-2 install ok installed
gimp 2.2.13-1etch1 stable
gimp 2.2.17-1 testing
gimp 2.4.0-2 unstable
gimp/testing upgradeable from 2.2.15-2 to 2.2.17-1
Version primaire :
% apt-get install gimp=2.4.0-2
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances… Fait
Certains paquets ne peuvent être installés. Ceci peut signifier
que vous avez demandé l’impossible, ou bien, si vous utilisez
la distribution unstable, que certains paquets n’ont pas encore
été créés ou ne sont pas sortis d’Incoming.

Puisque vous n’avez demandé qu’une seule opération, le paquet n’est
probablement pas installable et vous devriez envoyer un rapport de bogue.
L’information suivante devrait vous aider à résoudre la situation:

Les paquets suivants contiennent des dépendances non satisfaites:
gimp: Dépend: gimp-data (>= 2.4.0) mais ne sera pas installé
Dépend: gimp-data (< 2.4.0-z) mais ne sera pas installé
Dépend: libgimp2.0 (>= 2.4.0-1) mais 2.2.17-1 devra être installé
Dépend: libgtk2.0-0 (>= 2.12.0) mais 2.10.13-1 devra être installé
Dépend: libhal1 (>= 0.5.10) mais 0.5.9.1-6 devra être installé
Dépend: libpango1.0-0 (>= 1.18.3) mais 1.18.2-1 devra être installé
E: Paquets défectueux
Bam ! Calmé. Denis, pas de The Gimp 2.4 pour toi ! Mhééééé steuplé ! Hop, new school :
% aptitude install gimp=2.4.0-2
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
Initialisation de l’état des paquets… Fait
Écriture de l’information d’état étendu… Fait
Construction de la base de données des étiquettes… Fait
Les paquets suivants sont CASSÉS:
gimp gimp-gnomevfs libatk1.0-dev librsvg2-common libxdamage-dev
Les NOUVEAUX paquets suivants vont être automatiquement installés:
libgnomevfs2-extra
Les paquets suivants seront automatiquement ENLEVÉS:
gimp-data gimp-print
Les NOUVEAUX paquets suivants vont être installés :
libgnomevfs2-extra
Les paquets suivants seront ENLEVÉS :
gimp-data gimp-print
Les paquets suivants seront mis à jour :
libatk1.0-0 librsvg2-2 libxdamage1
4 paquets mis à jour, 2 nouvellement installés, 2 à enlever et 891 non mis à jour.
Il est nécessaire de télécharger 5248ko d’archives. Après dépaquetage, 17.3Mo seront libérés.
Les paquets suivants ont des dépendances non satisfaites :
libatk1.0-dev: Dépend: libatk1.0-0 (= 1.18.0-2) mais 1.20.0-1 doit être installé.
gimp-gnomevfs: Dépend: libgimp2.0 (>= 2.4.0-1) mais 2.2.17-1 est installé.
Dépend: libgnome-keyring0 (>= 2.20.1) mais 0.8.1-2 est installé.
libxdamage-dev: Dépend: libxdamage1 (= 1:1.0.3-3) mais 1:1.1.1-3 doit être installé.
gimp: Dépend: gimp-data (>= 2.4.0) mais il n’est pas installable
Dépend: gimp-data (< 2.4.0-z) mais il n’est pas installable
Dépend: libgimp2.0 (>= 2.4.0-1) mais 2.2.17-1 est installé.
Dépend: libgtk2.0-0 (>= 2.12.0) mais 2.10.13-1 est installé.
Dépend: libhal1 (>= 0.5.10) mais 0.5.9.1-4 est installé et a été conservé
Dépend: libpango1.0-0 (>= 1.18.3) mais 1.18.2-1 est installé.
librsvg2-common: Dépend: librsvg2-2 (= 2.16.1-2) mais 2.18.2-1 doit être installé.
Resolving dependencies…
Les actions suivantes permettront de résoudre ces dépendances:
Supprimer les paquets suivants:
libbonoboui2-dev
libglade2-dev
libgnome-keyring-dev
libgnomecanvas2-dev
libgnomeui-dev
libgtk2.0-dev
libpango1.0-dev
libxdamage-dev
python-uno

Mettre à jour les paquets suivants:
gimp-data [2.2.15-2 (now) -> 2.4.0-2 (unstable)]
gnome-keyring [0.8.1-2 (testing, now) -> 2.20.1-1 (unstable)]
libatk1.0-dev [1.18.0-2 (now) -> 1.20.0-1 (testing, unstable)]
libcupsys2 [1.2.7-4 (stable, now) -> 1.3.2-1 (testing, unstable)]
libgimp2.0 [2.2.17-1 (testing, now) -> 2.4.0-2 (unstable)]
libgnome-keyring0 [0.8.1-2 (testing, now) -> 2.20.1-1 (unstable)]
libgtk2.0-0 [2.10.13-1 (testing, now) -> 2.12.1-1 (unstable)]
libgtk2.0-common [2.10.13-1 (testing, now) -> 2.12.1-1 (unstable)]
libhal1 [0.5.9.1-4 (now) -> 0.5.10-2 (unstable)]
libpango1.0-0 [1.18.2-1 (testing, now) -> 1.18.3-1 (unstable)]
libpango1.0-common [1.18.2-1 (testing, now) -> 1.18.3-1 (unstable)]
librsvg2-common [2.16.1-2 (now) -> 2.18.2-1 (testing, unstable)]
libwxbase2.6-0 [2.6.3.2.1.5 (testing, stable, now) -> 2.6.3.2.2-1 (unstable)]
libwxgtk2.6-0 [2.6.3.2.1.5 (testing, stable, now) -> 2.6.3.2.2-1 (unstable)]
openoffice.org-l10n-fr [2.0.4.dfsg.2-5 (now) -> 2.2.1-8 (testing)]

Le score est de 1627

Accepter cette solution? [Y/n/q/?]
Et voilà :

Traitement batch avec The Gimp pour la conversion de fichiers

Pour la conversion de format graphique j’utilise habituellement ImageMagick et une petite boucle for de Bash. Malheureusement, il existe des formats de fichiers que les outils ImageMagick ne peuvent pas manipuler. C’est le cas des Motifs (patterns) utilisés par The Gimp. Il faut alors se tourner vers The Gimp lui-même et l’utiliser en mode non interactif, le mode batch.

The Gimp peut s’utiliser depuis la ligne de commande et sans interface (donc sans X et ses tonnes de bibliothèques et autres fichiers). On utilise la commande gimp avec les options -i, -c et -b, respectivement pour désactiver l’interface graphique, afficher les messages sur la console et non dans des boîtes de dialogue et pour prendre en argument une procédure en mode batch.

Pour la conversion des .pat en JPEG, il faut ensuite créer une procédure adaptée qu’on placera dans un fichier dans son ~/.gimp-2.2/scripts :
(define (patconv infile
outfile
)

(let* )
(drawable (car (gimp-image-get-active-layer img)))
)
(gimp-message-set-handler 1)
(gimp-file-save RUN-NONINTERACTIVE img drawable outfile outfile)
(gimp-image-delete img)
))
La procédure accepte en argument un nom de fichier en entrée et un nom de fichier en sortie. Elle ouvre le fichier d’entrée, récupère le drawable nécessaire pour la procédure d’enregistrement puis, enregistre le fichier de sortie et détruit l’image.

Il suffit ensuite d’utiliser la commande :
gimp -i -c -b « (patconv « wax.pat » « wax.jpg ») » « (gimp-quit 0) »
Notez qu’il faut échapper les  » et utiliser la procédure (gimp-quit 0) dans l’argument et non dans la procédure stockée dans le fichier.

Pour boucler sur les fichiers dans un répertoire, le shell est mis à contribution :
mkdir JPG
for i in `/bin/ls *.pat`
do
gimp -i -c -b « (patconv « $i » « JPG/`basename $i .pat`.jpg ») » « (gimp-quit 0) »
done
Et voilà un répertoire JPG plein de JPEG. Pour récupérer le nom des motifs, la commande file est notre amie.