# \[Script\] Aptitude : gestion des dépendances et orphelins

**URL:** <https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192>\
**Category:** Trucs et Astuces\
**Created:** [Février 21, 2016, 3:33 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192 "2016-02-21T03:33:05Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:33 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/1 "2016-02-21T03:33:05Z")

</div>

Chose promise chose due, voici mon script de gestion de dépendances pour aptitude. 😉

L’état Manuel / Automatique des paquets installés est la clef de la gestion automatique de dépendances d’[b]apt/b car c’est ce qui permet de savoir quels paquets ne sont plus utiles et peuvent donc être désinstallés sans problème lorsque plus aucun paquet ne dépend d’eux.  
Quand on installe/désinstalle souvent des paquets, il arrive régulièrement que cet état ne soit plus tout à fait correct (trop de paquets marqués en Manuel), voire que des paquets deviennent orphelins.  
Il est donc important que l’état Manuel / Automatique des paquets soit le plus précis possible. Ce script se charge de ce problème, et tant qu’à faire automatise dans la foulée la détection des paquets orphelins.

[size=150]IMPORTANT : LISEZ ATTENTIVEMENT CE QUI SUIT[/size]

Bien que j’utilise ce script sans aucun souci depuis longtemps et que j’aie une totale confiance en lui, il n’est pas totalement exclu que vous rencontriez des problèmes. Cela dit étant donné que le paramétrage est très limité, ça réduit d’autant les risques.

Ce script est conçu de telle manière (utilisation de l’option –schedule-only) que même en cas de bug dans mon code, aucun paquet ne puisse être supprimé automatiquement, si vous ne faites pas n’importe quoi par la suite.

Si après invocation de ce script, aptitude venait à vous proposer de supprimer des paquets par le jeu des dépendances considérées (à tort) inutiles (ce qui ne devrait jamais arriver, je n’ai pas vu ça une seule fois en plus de deux ans), pas de panique. La commande suivante s’assurera que vous conserviez tous vos paquets en l’état (par contre il est possible que des paquets restent marqués en Manuel alors qu’ils devraient être en Automatique, mais rien de bien grave au final) :

```auto

```

Notez que cette commande sert à annuler toutes les actions en attente, ce qui fait qu’elle est aussi utile si la première partie du script détecte de telles actions en attente (voir plus loin).  
Maintenant que les avertissements d’usage sont faits, on peut passer au reste…

[size=150]Obtenir le script[/size]

Téléchargement : [github.com/syam44/fix-aptitude- … encies.deb](https://github.com/syam44/fix-aptitude-dependencies/raw/master/fix-aptitude-dependencies.deb)  
Dépôt Git : [github.com/syam44/fix-aptitude-dependencies](https://github.com/syam44/fix-aptitude-dependencies)

Installation / mise à jour :

[code]# aptitude install debianutils libappconfig-perl libreadonly-perl libreadonly-xs-perl deborphan ncurses-bin

# wget [https://github.com/syam44/fix-aptitude-dependencies/raw/master/fix-aptitude-dependencies.deb](https://github.com/syam44/fix-aptitude-dependencies/raw/master/fix-aptitude-dependencies.deb)

# dpkg -i fix-aptitude-dependencies.deb

# rm fix-aptitude-dependencies.deb[/code]

[size=150]À qui s’adresse ce script ?[/size]

[ul][li] Vous utilisez aptitude comme gestionnaire de paquets principal.  
Ça marche également si vous utilisez apt-get mais attendez-vous à ce que la première partie du script vous trouve régulièrement des actions en attente si vous continuez ensuite à utiliser apt-get en parallèle d’aptitude (de ce script, donc). Ce n’est pas grave, faut juste être prévenu. 🙂[/li]  
[li] Vous n’aimez pas conserver des paquets inutiles lorsque vous désinstallez un paquet.[/li][/ul]

[size=150]Pré-requis[/size]

[ul][li] aptitude version 0.6.3 (squeeze) et plus.[/li]  
[li] Il est conseillé mais non nécessaire d’avoir deborphan installé.[/li][/ul]

[size=150]Fonctionnalités[/size]

[ul][li] Corrige automatiquement l’état Manuel / Automatique des paquets installés.  
Ce script parcourt les dépendances (PreDepends, Depends et Recommends) de tous les paquets installés, et marque en Automatique tout ce qu’il peut…  
Vous pouvez également (et devrez probablement) définir une liste de paquets à maintenir en Manuel quoi qu’il arrive.[/li]  
[li] Détection des dépendances circulaires.  
Le problème qui survient quand on marque un maximum de paquets en Automatique, c’est les chaînes de dépendances circulaires entre paquets. Plus précisément, les groupes de paquets inter-dépendants qui ne sont une dépendance (directe ou indirecte) d’aucun paquet marqué en Manuel.  
Face à ce cas de figure, ce script ne sait pas quel(s) paquet(s) il convient de marquer en Manuel, et se rabat sur la solution de facilité : marquer tous les paquets concernés en Manuels. Mais il vous prévient tout de même, en identifiant les différentes chaînes de dépendances circulaires problématiques. Il vous suffit alors de choisir le bon paquet et de l’ajouter à la configuration du script pour éviter les problèmes la prochaine fois.[/li]  
[li] Détection des paquets orphelins.  
Une fois tout ce travail effectué, deborphan est appelé automatiquement (s’il est présent) afin de vous avertir des éventuels paquets orphelins. Le comportement exact de deborphan est facilement personnalisable.[/li]  
[li] Routine de nettoyage personnalisée.  
Vous pouvez facilement rajouter des commandes personnalisées qui s’exécuteront à la fin du script. Personnellement j’utilise ça pour nettoyer le cache d’aptitude et deux-trois autres choses qui me sont utiles.[/li][/ul]

[size=150]Paramétrage[/size]

Le paramétrage du script se passe dans le fichier /etc/apt/fix-aptitude-dependencies.conf :  
[ul][li] Variable manual-packages : contient le nom de tous les paquets qui doivent être forcés en mode Manuel. Typiquement il s’agit de paquets contenant des dépendances circulaires, ou bien de paquets que vous tenez absolument à conserver même si tous les paquets qui en sont dépendants venaient à être supprimés.  
Les paquets sont séparés les uns des autres par des espaces, tabulations et/ou retours chariots.[/li]  
[li] Fonction user-cleanup : vous permet de rajouter des commandes à effectuer à la fin du script si tout s’est bien déroulé. Mettez juste true dans cette fonction si vous ne voulez pas lancer de commandes personnalisées.[/li]  
[li] Fonction custom-deborphan : permet de personnaliser le comportement de deborphan. Je vous laisse aller fouiller dans le man si vous voulez l’adapter à vos besoins…[/li][/ul]  
Note : voir également mon [message](https://www.debian-fr.org/aptitude-gestion-des-dependances-et-orphelins-t35575.html#p359323) ci-après pour un exemple de configuration.

[size=150]Exemple d’utilisation et explication détaillée du fonctionnement[/size]

Note : voir également mon [message](https://www.debian-fr.org/aptitude-gestion-des-dependances-et-orphelins-t35575.html#p389845) ci-après pour plus d’explications concernant les actions en attente.

À la première utilisation de ce script, il est plus que probable qu’il va trouver quelques soucis de dépendances, voire même des actions en attente ou des paquets cassés.

[code]# aptitude --schedule-only remove amarok

# fix-aptitude-dependencies

Recherche des actions prévues et des dépendances cassées…

## État Depuis Vers Paquet

id 2.4.3-1+b2 2.4.3-1+b2 amarok  
id 2.4.3-1 2.4.3-1 amarok-common  
id 2.4.3-1+b2 2.4.3-1+b2 amarok-utils  
id 4:4.6.5-3 4:4.6.5-3 kdemultimedia-kio-plugins  
id 0.4.0~git2 0.4.0~git2 liblastfm0  
id 1.4.3-7 1.4.3-7 libloudmouth1-0  
id 0.7.1-5 0.7.1-5 libqjson0  
id 0.1.0+git2 0.1.0+git2 libqtscript4-core  
id 0.1.0+git2 0.1.0+git2 libqtscript4-gui  
id 0.1.0+git2 0.1.0+git2 libqtscript4-network  
id 0.1.0+git2 0.1.0+git2 libqtscript4-sql  
id 0.1.0+git2 0.1.0+git2 libqtscript4-uitools  
id 0.1.0+git2 0.1.0+git2 libqtscript4-xml  
id 1.0.1-3 1.0.1-3 libtag-extras1

ATTENTION : fix-aptitude-dependencies ne peut pas continuer. Veuillez appliquer ou annuler les actions prévues, et résoudre les dépendances cassées avant de relancer fix-aptitude-dependencies.[/code]  
Pour des raisons de sécurité, le script refusera de faire quoi que ce soit s’il détecte qu’il y a des actions en attente sur certains paquets, ou que des paquets sont cassés. Il vous donne même la liste des paquets concernés…

On corrige donc cela (ici je dis à aptitude de garder amarok, mais il faut user de jugement : parfois vous voudrez conserver vos paquets en l’état, et d’autres fois appliquer ce qu’aptitude propose) et on relance le script…  
Pour rappel, la commande indiquée au début de ce tuto dans la section IMPORTANT permet d’annuler toutes les actions en attente : aptitude keep ‘!~v’

[code]# aptitude keep ‘!~v’

# fix-aptitude-dependencies

Recherche des actions prévues et des dépendances cassées…  
Marquage des paquets en « Automatique » en fonction des dépendances des paquets…  
Recherche des dépendances circulaires…

ATTENTION : des paquets marqués en « Automatique » contiennent des dépendances circulaires.

## État Version Paquet

i 0.138-9 acpi-support-base  
i 1:2.0.12-1 acpid  
i 1.0.23+dfs alsa-base  
i 1.0.24.2-3 alsa-utils  
i 2.4.3-1+b2 amarok  
i 2.4.3-1 amarok-common  
i 1.3.13-5+b audacity  
i 1.3.13-5 audacity-data  
i 1.3.1+git4 konversation  
i 1.3.1+git4 konversation-data  
i 4:4.6.5-2 kopete  
i 4:4.6.5-2 libkopete4

Les différentes chaînes de dépendances circulaires sont :  
\* acpi-support-base acpid  
\* alsa-base alsa-utils  
\* amarok amarok-common  
\* audacity audacity-data  
\* konversation konversation-data  
\* kopete libkopete4  
La procédure correcte est de rajouter à la liste « paquets manuels » de fix-aptitude-dependencies.conf au moins un paquet de chaque chaîne de dépendances circulaires afin de casser les cycles de dépendances, puis de relancer fix-aptitude-dependencies pour appliquer la nouvelle configuration. En attendant, ces paquets ont tous été marqués en « Manuel », ce qui n’est probablement pas le résultat souhaité mais permet d’éviter leur suppression accidentelle.

deborphan : 1 bibliothèques orphelines (0 ignorées). Si vous êtes certain(e) que ces paquets ne vous sont pas utiles, vous pouvez les supprimer manuellement.  
Pour que ces paquets n’apparaissent plus comme orphelins, utilisez « deborphan -A » (cf. man deborphan).

## État Version Paquet

i 280.13.rea libgl1-nvidia-glx-ia32

Nettoyage du cache d’aptitude…  
Désactivation des services KDE indésirables…  
Suppression des dictionnaires MySpell indésirables…[/code]  
Ouhla ça grogne… Voyons ça de plus près…

[quote]Marquage des paquets en « Automatique » en fonction des dépendances des paquets…  
Recherche des dépendances circulaires…

ATTENTION : des paquets marqués en « Automatique » contiennent des dépendances circulaires.[/quote]  
Le script a détecté ces dépendances circulaires dont je parlais plus haut.  
Il commence par donner la liste de tous les paquets concernés, avec leur état et leur version actuelle, puis affiche les différentes chaînes de dépendances :

[quote]Les différentes chaînes de dépendances circulaires sont :  
\* acpi-support-base acpid  
\* alsa-base alsa-utils  
\* amarok amarok-common  
\* audacity audacity-data  
\* konversation konversation-data  
\* kopete libkopete4[/quote]  
Chaque ligne correspond à un groupe de paquets inter-dépendants, il va donc falloir choisir lesquels on veut marquer en Manuel (sachant qu’un seul, le principal, est en général suffisant pour solutionner une chaîne complète).

Dans mon cas, les paquets Manuels seront acpi-support-base, alsa-utils, amarok, audacity, konversation et kopete. Je rajoute donc ces paquets dans la variable manual-packages du fichier de configuration /etc/apt/fix-aptitude-dependencies.conf.

[quote]deborphan : 1 bibliothèques orphelines (0 ignorées). Si vous êtes certain(e) que ces paquets ne vous sont pas utiles, vous pouvez les supprimer manuellement.  
Pour que ces paquets n’apparaissent plus comme orphelins, utilisez « deborphan -A » (cf. man deborphan).[/quote]  
Là c’est deborphan qui me prévient qu’une bibliothèque semble orpheline. Bien évidemment ce n’est pas le cas ici (cette lib me sert pour avoir la 3D sous Wine), je la rajoute donc à la liste des paquets ignorés par deborphan :

```auto

```

Si cette bibliothèque avait réellement été orpheline, j’aurais pu la supprimer manuellement à coup d’« aptitude purge ». Encore une fois il faut user de jugement, deborphan renvoie généralement assez peu de faux positifs mais ça arrive tout de même (la preuve dans l’exemple ci-dessus).

Je relance ensuite le script pour vérifier que la configuration est bonne :

[code]# fix-aptitude-dependencies  
Recherche des actions prévues et des dépendances cassées…  
Marquage des paquets en « Automatique » en fonction des dépendances des paquets…  
Recherche des dépendances circulaires…  
deborphan : aucune bibliothèque orpheline (1 ignorées).

Nettoyage du cache d’aptitude…  
Désactivation des services KDE indésirables…  
Suppression des dictionnaires MySpell indésirables…[/code]  
C’est tout bon ! 😃

[size=150]Bonus : trouver tous les paquets marqués en Manuel[/size]

Une fois stabilisé l’état Automatique / Manuel de vos paquets, utilisez la commande suivante pour afficher la liste de tous les paquets qui sont encore marqués en Manuel :

```auto

```

Ça pourra vous aider à identifier les paquets dont vous ne voulez plus, pratique pour faire du ménage en complément des informations fournies par deborphan… 😉

[size=150]Bonus : trouver et supprimer tous les paquets désinstallés non purgés[/size]

Lors d’un apt-get remove ou aptitude remove les fichiers de configuration des paquets supprimés restent sur le disque (contrairement aux commandes équivalentes utilisant l’option purge).  
Pour trouver tous ces paquets “à moitié” désinstallés :

```auto

```

Si vous voulez purger définitivement tous les paquets concernés :

```auto

```

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:33 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/2 "2016-02-21T03:33:05Z")

</div>

Et pour les curieux, ma configuration actuelle :

[code]manual-packages = \<\<EOF  
aptitude  
plasma-desktop  
alsa-utils  
acpi-support-base  
amarok  
audacity  
konversation  
kopete  
python3.1  
EOF

user-cleanup = \<\<EOF  
echo  
echo "Nettoyage du cache d’aptitude…"  
aptitude clean 2\>/dev/null

```
/opt/share/apt/apt-postinvoke-clean

```

EOF

custom-deborphan = \<\<EOF  
deborphan --ignore-suggests --guess-interpreters --no-show-section 2\>/dev/null  
EOF[/code]

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:33 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/3 "2016-02-21T03:33:07Z")

</div>

Pour les quelques personnes ayant déjà (!!) téléchargé le script : j’ai fait quelques modifs cosmétiques (notamment dans les commentaires, pour clarifier / corriger certains points).  
Rien de fonctionnel n’est impacté, comme je l’ai déjà dit j’utilise et fais évoluer ce script depuis un moment, et la seule chose que j’aie faite avant de le mettre sur le forum c’est rendre le code un peu moins moche et de rajouter des commentaires.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Février 21, 2016, 3:33 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/4 "2016-02-21T03:33:07Z")

</div>

[quote=“syam”]Pour les quelques personnes ayant déjà (!!) téléchargé le script : j’ai fait quelques modifs cosmétiques (notamment dans les commentaires, pour clarifier / corriger certains points).  
Rien de fonctionnel n’est impacté, comme je l’ai déjà dit j’utilise et fais évoluer ce script depuis un moment, et la seule chose que j’aie faite avant de le mettre sur le forum c’est rendre le code un peu moins moche et de rajouter des commentaires.[/quote]

Merci bien je vais tacher de le tester un de ces quatre je te ferais un retour de la chose ![:033](https://www.debian-fr.org/uploads/default/original/1X/42cd8bd0447ecac24cdff1e26fa990a5c8442791.gif "petard")

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:42 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/5 "2016-02-21T03:42:01Z")

</div>

À titre d’information…

> [@](#):
>
> Ce script ne gère pas les dépendances circulaires entre paquets virtuels. Depuis le temps que je l’utilise, je n’ai jamais rencontré le cas de figure. On verra bien si ça arrive un jour…

Bon bah je viens de rencontrer le cas de figure !  
[ul][li] wicd-daemon recommande le paquet virtuel wicd-client[/li]  
[li] wicd-kde dépend de wicd-daemon et fournit le paquet virtuel wicd-client[/li][/ul]

Résultat, aptitude considère ça comme une dépendance circulaire (à juste titre) et mon script affiche une belle “ERREUR : il y a un bug dans l’identification des dépendances circulaires.” 😃  
Heureusement ça ne porte pas à conséquence, tous les paquets concernés ont été correctement marqués en Manuel comme prévu donc aucun risque de perdre quoi que ce soit, je n’ai même pas eu à corriger l’état des paquets à la main (il m’a suffi de rajouter wicd-kde dans ma liste de paquets au début du script et de relancer ce dernier, comme pour des dépendances circulaires “normales”).

Maintenant que j’ai trouvé un cas, je vais pouvoir implémenter la gestion des paquets virtuels… Bien entendu je vous ferai savoir quand ça sera fonctionnel. 😉

En tous cas ça prouve bien que la paranoïa paye au final :

` # NORMALEMENT ça ne devrait pas être utile, mais je préfère gaspiller un peu de CPU à vérifier l'état des paquets une dernière fois
    # plutôt que de risquer des suppressions accidentelles`  
😃

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:44 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/6 "2016-02-21T03:44:31Z")

</div>

Corrigé. Les dépendances qui impliquent des paquets virtuels sont maintenant correctement traitées. Malheureusement ça m’a obligé à dépendre de /bin/bash au lieu de /bin/sh, mais bon…  
Plus une ou deux corrections bénignes ayant trait à l’affichage.

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 3:47 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/7 "2016-02-21T03:47:41Z")

</div>

J’ai basculé le script sur Github, ça sera beaucoup plus pratique que de le mettre à jour ici.

J’ai également séparé le script lui-même de sa configuration (/etc/apt/fix-aptitude-dependencies.conf) et créé un petit script d’installation (configure install/remove/purge).

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 11:07 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/8 "2016-02-21T11:07:59Z")

</div>

Mise à jour pour aptitude 0.6.5 qui vient d’arriver dans testing.  
Télécharger la nouvelle version puis ./configure install, il n’effacera pas votre fichier de config actuel.

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Février 21, 2016, 11:08 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/9 "2016-02-21T11:08:00Z")

</div>

[quote=“syam”]Mise à jour pour aptitude 0.6.5 qui vient d’arriver dans testing.  
Télécharger la nouvelle version puis ./configure install, il n’effacera pas votre fichier de config actuel.[/quote]

Merci bien je le test ce week-end, je ferai un retour en cas de souci rencontrer 😉

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 11:08 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/10 "2016-02-21T11:08:02Z")

</div>

LE cas certainement le plus évident serait (si tu as ça) de supprimer un paquet inutile qui fait partie des dépendances d’un méta-paquet voire d’une série de méta-paquets.  
On sait tous à quel point c’est pénible de supprimer un paquet de ce genre :

- soit il vire la moitié du système à cause des dépendances automatiques
- soit on fait le bourrin, on marque tout en manuel et on perd toutes les infos de dépendances automatiques
- soit on passe un temps incalculable à marquer soi-même en manuel les paquets qui vont bien

Avec ce script, plus besoin de s’emmerder : on peut tout marquer en manuel comme un bourrin (aptitude unmarkauto ~i), on supprime le paquet concerné (et seul le strict minimum partira avec, sans toucher aux autres programmes qu’on veut conserver), et enfin on utilise le script pour remettre en place les infos de dépendances automatiques / identifier les orphelins.

Sinon pour la maintenance au jour le jour c’est bien aussi, ça permet de remettre les choses en place par exemple quand on joue un peu trop à changer la version de certains paquets (testing \<-\> unstable pour voir où l’herbe est plus verte). ![:mrgreen:](https://www.debian-fr.org/uploads/default/original/1X/cc83e9b583138e48ff45f96609046b06d06c7f9d.gif "Mr. Green")

Pour la différence avant/après :

`aptitude search '~i!~M' -F '%p' | sort > paquets-manuels-avant.txt
fix-aptitude-dependencies
aptitude search '~i!~M' -F '%p' | sort > paquets-manuels-apres.txt
diff -u paquets-manuels-avant.txt paquets-manuels-apres.txt`  
😉

---

<div class="post-metadata">

**Author:** ![panthere](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/5daacb/32.png) [@panthere](https://www.debian-fr.org/u/panthere)\
**Post date:** [Février 21, 2016, 11:15 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/11 "2016-02-21T11:15:52Z")

</div>

je voudrai juste dire qu’il y a un paquet :debfoster qui permet de tester des logiciel asser facilment donc assez proche de celui-ci :j’explique en bref 😉

on considere que le systeme est ok:  
on lance en root debfoster et on accepte tout a Y

ensuite on veux tester des logiciel. ,donc aptitude install compiz et compagnie:

ensuite on refait :  
debfoster

```auto
# debfoster

google-earth-stable is keeping the following 6 packages installed:
  alien ed librpmbuild1 lsb-core pax rpm
Keep google-earth-stable? [Ynpsiuqx?], [H]elp: S

jpilot is keeping the following 2 packages installed:
  jpilot-plugins libpisock9
Keep jpilot? [Ynpsiuqx?], [H]elp: S
Keep compiz-fusion-plugins-extra? [Ynpsiuqx?], [H]elp: S
Keep compiz-fusion-plugins-main? [Ynpsiuqx?], [H]elp: S
Keep rcconf? [Ynpsiuqx?], [H]elp: S
```

S= ne fait rien et le laisse donc installer. il vous reposera la question si vous relancer debfoster  
Y= ne vous posera plus la question et le paquet est conserver  
N=le paquet est désinstaller.

voila 🙂  
simple mai pratique , genre je teste compiz pour frimer devant les amis, dès qu’il son parti hop hop debfoster ni vu ni connu 😆

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 11:15 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/12 "2016-02-21T11:15:53Z")

</div>

En complément à debfoster, la commande yes est bien pratique :

```auto

```

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 11:49 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/13 "2016-02-21T11:49:13Z")

</div>

Ben y sont chouettes tes liens, Syam :  
[github.com/syam44/fix-aptitude-](https://github.com/syam44/fix-aptitude-) … all/master

Bon, j’'vais chercher et je trouverai bien 😉

EDIT :  
Bon, c’est rentré dans la boîte, y’a pu K.  
 ![](https://www.debian-fr.org/uploads/default/original/2X/9/9859e7f1705bade2cb652bd9180745d92c34c2c5.jpg)

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 11:49 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/14 "2016-02-21T11:49:13Z")

</div>

Salut,  
Ça serait cool de mettre ça sur le wiki aussi… 😉

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 11:49 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/15 "2016-02-21T11:49:18Z")

</div>

Placé le fichier dans un dossier ad-hoc, cd ce dossier, ==\> root, ./configure install:  
./configure : Aucun fichier ou dossier de ce type

???

Est-ce que je dois d’abord “dézipper” ?

EDIT :  
Je viens de lire qq part que bash ne reconnaissait pas “configure” ???

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 11:49 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/16 "2016-02-21T11:49:19Z")

</div>

Oups oui faut décompresser avant (d’où l’intérêt de prendre le .tar.gz qui garde les permissions +x une fois décompressé).

[code]# wget -O - [https://github.com/syam44/fix-aptitude-dependencies/tarball/master](https://github.com/syam44/fix-aptitude-dependencies/tarball/master) | tar xvz

# cd syam44-fix-aptitude-dependencies\*

# ./configure install[/code]

J’ai mis à jour le message d’origine. 😉

[quote=“ricardo”]Ben y sont chouettes tes liens, Syam :  
[github.com/syam44/fix-aptitude-](https://github.com/syam44/fix-aptitude-) … all/master[/quote]  
Quant tu cliques sur le lien d’origine (celui de mon premier message) ça marche, pas quand tu fais du copier/coller (à cause du …). Faut se plaindre auprès de phpBB qui raccourcit l’affichage du lien… 😉

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 11:52 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/17 "2016-02-21T11:52:11Z")

</div>

[quote=“syam”]Oups oui faut décompresser avant (d’où l’intérêt de prendre le .tar.gz qui garde les permissions +x une fois décompressé).

[code]# wget -O - [https://github.com/syam44/fix-aptitude-dependencies/tarball/master](https://github.com/syam44/fix-aptitude-dependencies/tarball/master) | tar xvz

# cd syam44-fix-aptitude-dependencies\*

# ./configure install[/code]

J’ai mis à jour le message d’origine. 😉

[quote=“ricardo”]Ben y sont chouettes tes liens, Syam :  
[github.com/syam44/fix-aptitude-](https://github.com/syam44/fix-aptitude-) … all/master[/quote]  
Quant tu cliques sur le lien d’origine (celui de mon premier message) ça marche, pas quand tu fais du copier/coller (à cause du …). Faut se plaindre auprès de phpBB qui raccourcit l’affichage du lien… 😉[/quote]

Y’a qq chose que je ne pige pas :

1ère ligne, parfait  
2ème lignes, je suppose que ça crée un dossier et que ça y va ???  
Ensuite, OK  
Problème, à aucun moment je ne vois de dossier créé ??? ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit")  
Sinon, j’ai exécuté les 3 lignes sans réfléchir plus loin et je n’ai pas eu d’erreur.  
MAIS où se trouve ce dossier j’ai fouillé partout dans ~/ = invisible ???

À ce soir ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

EDIT :  
Trouvé … dans /root 😊

---

<div class="post-metadata">

**Author:** ![Golmut](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/a9a28c/32.png) [@Golmut](https://www.debian-fr.org/u/Golmut)\
**Post date:** [Février 21, 2016, 11:57 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/18 "2016-02-21T11:57:26Z")

</div>

Bonjour,

Intrigué par ce script, j’ai voulu le tester même si mes connaissances dans ce domaine sont limitées… mais bon, j’ai essayé…  
voilà ce que me retourne le script, et je reste un peu dubitatif 😮

[code]root@debian:~/syam44-fix-aptitude-dependencies-aa361bb# fix-aptitude-dependencies  
Recherche des actions prévues et des dépendances cassées…

## État Depuis Vers Paquet

pi 3.2.2-14 apmd  
pi 0.43+bzr790-1 aptdaemon  
pi 0.43+bzr790-1 aptdaemon-data  
pi 0.18.1.1-6 autopoint  
pi 1:1.19.3-7 busybox  
pi 9.20120419 debhelper  
id 0.11.12 0.11.12 defoma  
pi 1.55-2 diffstat  
pi 0.0.20090925-1 execstack  
iB 3:11.2.202.233 3:11.2.202.233 flashplayer-mozilla  
pB 1:2.8.3 flashplugin-nonfree  
pB 0.7.pristine-2 freedesktop-sound-theme  
pi 4.6.3-2 gcj-4.6-base  
pi 1.5.4-1 gir1.2-clutter-gst-1.0  
pi 3.2.1-1+b1 gir1.2-evince-3.0  
pi 1:1.7.10-1 git  
pi 1:1.7.10-1 git-man  
pi 3.4.0-2 gnome-color-manager  
pi 0.28-4 gnome-session-canberra  
pi 3.4.1-1 gnome-session-fallback  
pi 3.2.0-2~webupd gnome-shell-extensions-common  
pB 0.4.1-1 gnome-sushi  
pi 3.2.1-3 gnome-utils-common  
pi 1:2.4.10-2 gnucash  
pi 1:2.4.10-2 gnucash-common  
pi 2.4.1-3 gnucash-docs  
pi 0.97-66 grub  
pi 0.10.36-1 gstreamer0.10-gnomevfs  
pi 1.8.8+1-8 guile-1.8  
pi 1.8.8+1-8 guile-1.8-libs  
pi 3.12.2-1 hplip-cups  
pi 1.3.2a-15 html2text  
pi 20120102 ia32-libs-gtk  
pi 1.26.2-9 libaccess-bridge-java  
pi 1.26.2-9 libaccess-bridge-java-jni  
pi 3.2.2-14 libapm1  
pi 5.0.22-1 libaqbanking-data  
pi 5.0.22-1 libaqbanking33  
pB 2.8.4.forreal- libarchive1  
pi 6:0.8.1-7 libavutil-extra-51  
pi 1:0.2.2-1 libbluray-bdj  
pi 1.46.1-8 libboost-filesystem1.46.1  
pi 1.48.0-3 libboost-filesystem1.48.0  
pi 1.48.0-3 libboost-program-options1.48.0  
pi 1.46.1-8 libboost-python1.46.1  
pi 1.48.0-3 libboost-python1.48.0  
pi 1.48.0-3 libboost-regex1.48.0  
pi 1.46.1-8 libboost-system1.46.1  
pi 1.48.0-3 libboost-system1.48.0  
pi 1.46.1-8 libboost-thread1.46.1  
pi 1.48.0-3 libboost-thread1.48.0  
pi 2.26.3-10 libcdt4  
pi 0.58-1 libcrypt-ssleay-perl  
pi 2:1.1.3-4squee libcryptsetup1  
pi 6.31-1 libdate-manip-perl  
pi 4.8.30-11 libdb4.8  
pi 0.8.4-6 libdbi1  
pi 0.8.13-3 libelfg0  
pi 0.17-1 liberror-perl  
pi 1.17+git201109 libfinance-quote-perl  
pi 2.1.3~rc5-4 libftgl2  
pi 4.6.3-2 libgcj12  
iBA 3.4.0-2 3.4.0-2 libgdict-common  
pi 2.4.25-1~bpo60 libgmime-2.4-2  
pB 2.4.25-1~bpo60 libgmime2.4-cil  
pi 0.8.17-1.1 libgoffice-0.8-8  
pi 0.8.17-1.1 libgoffice-0.8-8-common  
pi 2.26.3-10 libgraph4  
pi 1.14.21-2.1 libgsf-1-114  
pi 1.14.21-2.1 libgsf-1-common  
pi 2.26.3-10 libgvc5  
pi 4.3.1-1 libgwengui-gtk2-0  
pi 4.3.1-1 libgwenhywfar-data  
pi 4.3.1-1 libgwenhywfar60  
pi 2.11-1 libhtml-tableextract-perl  
pi 2009-12 libkpathsea5  
pi 1.38-1 libktoblzcheck1c2a  
pi 2.06-1 liblzo2-2  
pi 1:2.34.1-2 libmetacity-private0a  
pi 0.29.6-3 libneon27  
pi 1:0.9.4-2 libofx4  
pi 1.5.2-10 libosp5  
pi 44-1 libpam-systemd  
pi 2.26.3-10 libpathplan4  
pi 2.0.1+dfsg-12+ libprojectm-qt1  
pi 2.0.1+dfsg-12+ libprojectm2  
pi 0.2.0-1.1 libquvi0  
pi 1:1.4.3-33 libsvga1  
pi 6:0.8.1-7 libswscale-extra-2  
pi 2.2-11 libtextcat-data  
pi 2.2-11 libtextcat0  
pi 2.0.1+dfsg-12+ libvisual-projectm  
pi 0.2.8.4-10 libwmf0.2-7  
pi 2.26.3-10 libxdot4  
pi 1.20-1 libyaml-syck-perl  
pi 5.11-1 linuxlogo  
pi 02.15-2 lshw-gtk  
pi 1:2.34.1-2 metacity  
pi 1:2.34.1-2 metacity-common  
pi 2:1.0~rc4.dfsg mplayer  
pi 2:1.0~rc4.dfsg mplayer-gui  
pi 1.6-2 mplayer-skin-blue  
pi 295.40-1 nvidia-glx-ia32  
pi 295.40-1 nvidia-kernel-source  
pi 295.33-1 nvidia-xconfig  
pi 0.0.20090925-1 prelink  
pi 2.0.1+dfsg-12 projectm-data  
pi 2.0.1+dfsg-12+ projectm-pulseaudio  
pi 0.43+bzr790-1 python-aptdaemon  
pi 0.43+bzr790-1 python-aptdaemon-gtk  
pi 0.43+bzr790-1 python-aptdaemon.gtk3widgets  
pi 0.43+bzr790-1 python-aptdaemon.gtkwidgets  
pi 1.0.2+bzr481-1 python-defer  
pi 2.32.0+dfsg-1 python-gnomekeyring  
pi 0.3.2-9.1 python-gnupginterface  
pi 0.82.4debian3 python-software-properties  
pi 1:0.28.2-4 python-vte  
pi 1.2.8-1 python-xapian  
pi 3.2.3~rc1-2 python3  
pi 0.8.4 python3-apt  
pi 3.2.3~rc1-2 python3-minimal  
pi 3.2.3~rc2-1 python3.2  
pi 3.2.3~rc2-1 python3.2-minimal  
pi 0.60-2 quilt  
pi 3b1-3.1 slib  
pi 0.82.4debian3 software-properties-common  
pi 0.82.4debian3 software-properties-gtk  
pB 1.10.0-1 tomboy  
pi 2.5.1 wajig  
pB 1:0.4.2-4+b3 xserver-xorg-video-fbdev  
pi 1:1.42-9 xsnow  
pB 10.0.4esr-2 xulrunner-10.0

ATTENTION : fix-aptitude-dependencies ne peut pas continuer. Veuillez appliquer ou annuler les actions prévues, et résoudre les dépendances cassées avant de relancer fix-aptitude-dependencies.[/code]

j’ai donc des problèmes si je comprend bien, mais comment les résoudre afin de pouvoir relancer le script correctement? Quelles actions à appliquer ou à annuler? Ai-je des dépendances cassées (je crois que oui avec l’état B)?

j’ai beaucoup d’état de paquet “pi”, ca veux dire quoi? c’est grave docteur?

p le paquet et tous ses fichiers de configuration ont été supprimés, ou le paquet n’a jamais été installé  
i le paquet est installé et toutes ses dépendances sont satisfaites  
B le paquet a des dépendances cassées  
A le paquet a été automatiquement installé

j’ai également un état ‘id’ et j’ai pas trouvé à quoi correspondait le d.  
Y’a t il pas une opposition entre l’état p et i?

je suis peut être à coté de la plaque… si ce script est fait pour les barbus comme vous, dites le moi, et je le désinstalle illico! 😃  
Sinon, avez-vous un lien vers lequel je pourrais étudier un peu tous les aspects d’apt/aptitude? (mais relativement accessible pour un non-informaticien).

Merci!

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 11:57 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/19 "2016-02-21T11:57:29Z")

</div>

Je laisse Syam te répondre mais sache que j’avais à peu près le même premier résultat.  
C’est assez vite réparé mais il t’expliquera mieux que moi qui vient juste de l’installer (5 jours).  
Aujourd’hui, tout propre, plus d’alerte.  
Je ne suis pas un barbu pourtant 😉

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 11:57 UTC](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192/20 "2016-02-21T11:57:53Z")

</div>

[quote=“Golmut”]j’ai beaucoup d’état de paquet “pi”, ca veux dire quoi? c’est grave docteur?

p le paquet et tous ses fichiers de configuration ont été supprimés, ou le paquet n’a jamais été installé  
i le paquet est installé et toutes ses dépendances sont satisfaites  
B le paquet a des dépendances cassées  
A le paquet a été automatiquement installé

j’ai également un état ‘id’ et j’ai pas trouvé à quoi correspondait le d.  
Y’a t il pas une opposition entre l’état p et i?[/quote]  
Il faut bien se rappeler qu’aptitude dispose, contrairement à apt-get, d’une liste d’actions en attente (ou actions prévues, c’est la même chose).  
Dit autrement, apt-get ne permet que de faire des actions immédiatement, alors qu’aptitude permet également de les planifier.

En soi t’as pas tort dans ton interprétation des états de paquets (p/i/B/A…) mais tu oublies simplement cette fonctionnalité d’aptitude dont je viens de parler.  
Sachant qu’aptitude présente l’état des paquets sur 3 “colonnes” (lettres) :

- 1ère lettre = état courant du paquet, correspond également à ce qu’apt-get et dpkg connaissent
- 2ème lettre = action prévue sur le paquet, spécifique à aptitude
- 3ème lettre = état automatique (A) ou manuel

Du coup, tu remarqueras que les paquets marqués pi contiennent dans la deuxième colonne (Depuis) de la liste affichée, ce qui confirme qu’ils ne sont pas installés actuellement mais qu’ils sont simplement marqués pour installation dans les actions en attente.

Pourquoi tu as ça, je sais pas trop, mais j’aurais tendance à soupçonner que tu utilises apt-get d’habitude, sinon tu aurais déjà remarqué des bizarreries dans le comportement d’aptitude. Note bien, je ne pense pas que ça soit le fait d’utiliser apt-get qui provoque ça (il n’y a aucune raison logique), c’est plus probablement dû à l’utilisation d’aptitude à un moment donné et à l’annulation en cours de route des actions que tu avais commencées. (sans garantie de véracité hein, je devine plus qu’autre chose) Le fait que tu es en Sid, avec toutes les mises à jour compliquées que ça implique, ne doit pas améliorer les choses.

Concernant l’état d dans la deuxième lettre de l’état de paquet : paquet en attente de suppression (delete). À cet endroit il est aussi possible d’avoir p (purge) à la place de d.

Note : ce système d’actions prévues est directement lié à l’option –schedule-only d’aptitude utilisée plus tard dans le script (mais au point où il s’arrête dans ton cas, il n’en est pas encore là, pour le moment il ne fait que lire l’état actuel de tes paquets sans rien modifier du tout).

Pour remettre tout ça à plat (je donne la solution pour tout le monde, tant qu’à faire) :  
 En fait il y a beaucoup plus simple que les commandes ci-dessous : aptitude keep '!~v’  
Cette commande est moins ciblée mais le résultat est identique aux commandes plus complexes (et en plus elle ne dépend pas de la version d’aptitude).  
Les deux commandes ci-dessous sont donc à considérer comme “obsolètes”.   
[ul][li] Si votre version d’aptitude est supérieure ou égale à 0.6.6 (actuellement en testing/unstable) : aptitude keep $(aptitude search ‘~b!~i|~ainstall|~areinstall|~aupgrade|~adowngrade|~aremove|~apurge’ -F ‘%p’)[/li]  
[li] Si votre version d’aptitude est inférieure ou égale à 0.6.5, il y avait un [bug dans les motifs de recherche ~a](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=603862) donc il faut utiliser aptitude keep $(aptitude search ‘~b!~i|!~aupgrade’ -F ‘%p’) (ne cherchez pas à comprendre la logique, il n’y en a pas, c’est juste la manière de contourner le bug pour arriver au même résultat)[/li]  
[li] Pour les versions d’aptitude antérieures à squeeze je ne sais pas, je n’ai plus rien pour tester…[/li][/ul]  
Ça supprimera toute la liste d’actions prévues dans aptitude sans toucher aux paquets eux-mêmes. Ça devrait aussi régler le cas des paquets cassés (B), car avec aptitude c’est les actions prévues qui font qu’un paquet serait cassé si vous appliquiez les actions prévues en question ; sans actions prévues il n’y a aucune raison qu’un paquet soit cassé (sauf si vous vous êtes amusé à utiliser une option --force… d’apt-get ou de dpkg, mais dans ce cas là vous avez des choses plus urgentes à faire que d’utiliser mon script).

* * *

Concernant le comportement du script lui-même, je sens qu’il y a besoin de quelques éclaircissements car ricardo m’a déjà posé ce genre de questions.

Le script est susceptible de vous fournir 3 listes de paquets différentes :  
[ul][li] juste après « Recherche des actions prévues et des dépendances cassées… » : cela correspond aux actions prévues dont nous avons parlé. En temps normal il n’y a aucune raison de garder des actions prévues dans aptitude. Évidemment ça peut arriver qu’on ait besoin d’utiliser directement cette fonctionnalité (–schedule-only) mais en principe on applique les actions prévues à la fin (sinon ça sert à rien 😛). Cette liste correspond donc à un état anormal (mais pas grave en lui-même) d’aptitude.[/li]  
[li] juste après « Recherche des dépendances circulaires… » : c’est tout à fait normal d’avoir des paquets dans cette liste là, ça correspond aux dépendances circulaires que j’ai évoquées dans mon message d’origine. Après une installation de nouveaux paquets ou une mise à jour, des paquets peuvent apparaître dans cette liste auquel cas il suffit de suivre les instructions (rajouter un paquet de chaque chaîne de dépendances dans la variable MANUAL\_PACKAGES).[/li]  
[li] juste après « deborphan : X bibliothèques orpheline » : c’est aussi normal que des paquets apparaissent ici suite à des suppressions de paquets ou à des mises à jour. Ce n’est que deborphan qui détecte des paquets orphelins, qu’il faudra gérer manuellement (je me refuse à les traiter automatiquement dans le script, ça serait trop facile de prendre les mauvaises décisions). Typiquement, on voudra soit supprimer ces paquets (aptitude remove) s’ils ne servent plus à rien, ou bien dire à deborphan de les ignorer (deborphan -A) s’ils servent toujours car deborphan peut parfois renvoyer des “faux positifs”.[/li][/ul]

J’espère que c’est plus clair… 🙂

* * *

> [@](#):
>
> Sinon, avez-vous un lien vers lequel je pourrais étudier un peu tous les aspects d’apt/aptitude? (mais relativement accessible pour un non-informaticien).

Y’a toujours la documentation d’aptitude mais c’est pas forcément très accessible vu qu’il s’agit du manuel de référence, pas d’un tuto.  
En ligne (version obsolète) : [algebraicthunk.net/~dburrows/pro … de/doc/fr/](http://algebraicthunk.net/~dburrows/projects/aptitude/doc/fr/)  
Sinon, installer le paquet aptitude-doc-fr et aller voir dans /usr/share/doc/aptitude/html/fr/index.html (respectivement, /usr/share/doc/aptitude/html/en/index.html si c’est aptitude-doc-en qui est installé).

Ça fait un moment que je me dis qu’il faudrait que je prenne le temps de faire un tuto complet pour aptitude (et donc aussi pour une grosse partie du système apt, histoire de bien expliquer les concepts) mais tu sais ce que c’est, on a toujours plus urgent à faire… Mais bon y’a bien un moment où je vais me décider, d’autant qu’il y a de la demande apparemment.

[Page suivante](https://www.debian-fr.org/t/script-aptitude-gestion-des-dependances-et-orphelins/34192.md?page=2)
