Gestion maintenance
- Gagner de la place
- Détecter les paquets mal installés?
- Empêcher la mise à jour d'un paquet?
- S'abonner à un paquet
- Intra et inter-distributions
- Optimiser, nettoyer son installation
- Sortir de la distribution standard
Gagner de la place
Les gros paquets
L'utilisation de grep-status (paquet dpkg-ctrl ) permet de construire une commande (puissante) pour classer les paquets selon leur occupation disque :
grep-status -nsInstalled-size,Package -F Status ' installed' \ || perl -p00l12 -e 's/\n/ /' \ || sort -rn
ou encore
dpkg-query -W --showformat='${Installed-Size} ${Package}\n' || sort -n
Juste pour info : ?DebFrPackSize
Les paquets inutiles
Il est très facile d'installer des tonnes de programmes que l'on n'utilise jamais. La question est alors de connaître les paquets que je peux désinstaller sans risque?
Il ne faut supprimer que des paquets dont aucun paquet ne dépend (que l'on nommera dans la suite les paquets terminaux). Il est donc possible de les désinstaller sans casser le système, mais évidemment, si on désinstalle ainsi un paquet terminal, mais utile quand même, ce n'est pas très malin. Par exemple, j'aime bien programmer en ["OCaml"], donc le paquet ocaml peut bien être terminal, je ne vais pas me priver de mon compilateur favori pour autant...Voici comment on peut vouloir procéder pour se débarrasser de certains paquets superflus :
- étape 1 : recenser les paquets terminaux
Il existait (potato) un programme, pkg-nodep dans le paquet pkg-order , qui liste les paquets terminaux. On peut par exemple écrire dans un fichier la liste de ces paquets avec la commande :
pkg-nodep > liste-des-nodeps
Remarque
Une autre commande analogue existe, il s'agit de deborphan (paquet deborphan ). Elle semble plus riche en fonctionnalités.
Pour éliminer les paquets dont aucun autre ne dépend, effectuer simplement :
deborphan || xargs apt-get -s -u remove
- étape 2 : pour chaque paquet recensé, déterminer son utilité réelle
Plusieurs méthodes :
- Lire le descriptif. La commande
dpkg -s ocaml
peut être bien utile pour cela.
- Lister les fichiers constituant le paquet. C'est la commande
dpkg -L ocaml
On fera par exemple attention aux programmes exécutables qui disparaîtront dans la bataille, en cherchant les fichiers dans bin. On peut vouloir connaître la date de dernière utilisation des exécutables. Dans ce cas, la commande
ls --time=atime fichier
est bien pratique.
- étape 3 : retirer les paquets jugés inutiles
Si on n'est pas sûr, le paquet dpkg-repack fournit la commande homonyme utile pour réempaqueter un paquet (avec ses fichiers de configuration actuels) pour le stocker avant de le retirer.
Si une applications a été installée «non empaquetée Debian» , il est possible de supprimer un paquet dont celle-ci dépend et de la rendre dès lors inutilisable...Prudence!
Détecter les paquets mal installés?
La commande "dpkg -l" donne l'état des paquets installés. La première colonne du listing utilise un codage à deux ou trois lettres des états possibles (lire les 3 premières lignes du listing pour comprendre leur signification)
La ligne d'un paquet correctement installé commence par le code «ii» i.e l'«i»nstallation a été demandée et le paquet est (effectivement) dans l'état «i»nstallé.
La commande ci-dessous permet donc de sélectionner les paquets qui ne sont pas dans l'état correct.
dpkg -l || grep -v ^ii
Exemple
pc mozilla-mailne 0.9.6-7 Mozilla Web Browser - pc php4 4.1.2-2 A server-side, ... pc zope-zshell 1.2-1 Zshell present ...
et effectivement, il y a problème, ainsi ...
dpkg --purge php4 (Lecture de la base de données ... 50815 fichiers et répertoires déjà installés.) Suppression de php4 ... Purge des fichiers de configuration de php4 ... rmdir: `/etc/php4': Aucun fichier ou répertoire de ce type dpkg: erreur de traitement de php4 (--purge): le sous-processus post-removal script a retourné une erreur de sortie d'état 1
4.3 Empêcher la mise à jour d'un paquet?
Il suffit de marquer le paquet « à garder » (on hold, en anglais). Pour ce faire, on peut soit :
- utiliser dselect
il faut se placer sur la ligne correspondant au paquet, puis appuyer sur 'H'.
- utiliser dpkg
Voici une belle solution, qui fonctionne en ligne de commande :
echo "<paquet à garder> hold" || dpkg --set-selections
S'abonner à un paquet
Si vous voulez suivre de manière assidue et étroite la <<vie>> d'un ou plusieurs paquets Debian, le plus simple est de vous abonner au PTS, le système de suivi de paquet.
Le système de suivi de paquet
- Package Tracking System
(FixMe) description du PTS
Interface web au PTS
(traduction inspiré d'un message de R. Herzog sur DebianListPage:debian-devel-announce )
La page http://packages.qa.debian.org/nom-de-paquet donne une vue globale de l'état du paquet "nom-de-paquet". Vous y trouverez par exemple :
- informations générales (dernière version, mainteneur, co-mainteneurs, ...)
- aperçu des versions disponibles dans chaque distributions (y compris security updates et proposed-updates)
- les messages d'annonce d'uploads sur debian-devel-changes,
- les liens sur l'interface web de buildd et autres informations relatives à QA (Assurance qualité)
- et enfin, le formulaire d'abonnement au paquet (système PTS usuel)
4.5 Intra et inter-distributions
4.5.1 Un paquet d'unstable/testing alors qu'on utilise stable
Il est parfois utile d'installer un paquet qui n'existe que dans une distribution supérieure (et moins stable).
Les versions supérieures à 0.5.0 d'apt permettent de faire cela simplement. Donc, si vous avez une patate ou plus ancien, il faudra auparavant obtenir une version d'apt plus récente par un autre moyen (backport).
Voici la marche à suivre pour cette opération :
- indiquer la deuxième distribution dans /etc/apt/sources.list en ajoutant :
deb http://serveur/debian unstable main contrib deb http://serveur/debian unstable non-free deb http://serveur/debian-non-US unstable/non-US main deb http://serveur/debian-non-US unstable/non-US contrib deb http://serveur/debian-non-US unstable/non-US non-free
Avec comme serveur par exemple ftp.fr.debian.org
- indiquer la distribution par défaut dans /etc/apt/apt.conf en incluant la ligne :
APT::Default-Release "stable";
- mettre à jour la liste des paquets
apt-get update
- indiquer à apt qu'on veut récupérer un paquet d'une autre distribution. Deux syntaxes :
apt-get install -t unstable paquet apt-get install paquet/unstable
apt-get va alors installer le paquet et toutes ses dépendances. La différence entre les deux versions étant que dans le premier cas (avec «-t unstable»), les dépendances sont cherchées dans unstable, alors que dans l'autre cas (avec « /unstable »), les dépendances sont cherchées dans la distribution par défaut.
En créant un fichier /etc/apt/preferences , cette technique peut être affinée en spécifiant des niveaux de préférences, avec par exemple :
Package: * Pin: release a=woody Pin-Priority: 800
Package: * Pin: release a=stable Pin-Priority: 500
Package: * Pin: release a=unstable Pin-Priority: 80
4.5.2 Un paquet d'une autre distribution
Vous l'aurez sans doute remarqué, il est plus courant de trouver des paquets (rpm) faits pour les distributions basées sur RedHat que pour celles basées sur Debian (deb). La tentation est donc grande de récupérer ces paquets!
Il faut pour cela utiliser le paquet alien afin de convertir le paquet «étranger» en paquet Debian.
Les informations relatives aux dépendances, aux répertoires standards étant différentes selon les distributions, il est impossible de garantir qu'un paquet ainsi "converti" soit correct (quelque soit le sens de la conversion!). Cette manipulation n'est à utiliser qu'en cas d'absolue nécessité!
- C'est à dire jamais...