La plupart des paquets contiennent des fichiers dont vous n’avez pas besoin, comme par exemple des traductions dans des langues qui vous sont inconnues, ou de la documentation que vous ne lirez pas. Ne serait-il pas intéressant de s’en dispenser et sauver ainsi quelques méga-octets ? Bonne nouvelle : à partir de dpkg 1.15.8, c’est possible !
dpkg met à disposition deux options dans ce but :
--path-include=motif-de-type-glob
--path-exclude=motif-de-type-glob
D’elles dépend l’installation ou non d’un fichier. Le motif de recherche « glob » fonctionne de la même façon que ce à quoi vous êtes habitués au travers du shell (cf. la page de manuel glob(7)).
Passer ces deux options via la ligne de commande étant tout sauf pratique, la meilleure manière de les utiliser reste de les mettre dans un fichier de configuration résidant dans /etc/dpkg/dpkg.cfg.d/
. Attention toutefois : l’ordre dans lequel sont énumérées les options compte. Lorsqu’un fichier correspond à plusieurs motifs de recherche, la dernière entrée l’emporte !
Un de leurs usages habituels consiste à exclure un dossier entier, puis à réintégrer certaines de ses parties que vous voulez conserver. Par exemple exclure les traductions gettext et manuels dans toutes les langues sauf le français. Il faut alors que le fichier /etc/dpkg/dpkg.cfg.d/excludes
contienne :
# Supprimer toutes les locales, sauf le français path-exclude=/usr/share/locale/* path-include=/usr/share/locale/fr/* path-include=/usr/share/locale/locale.alias # Supprimer les pages de manuels, sauf celles en français path-exclude=/usr/share/man/* path-include=/usr/share/man/man[1-9]/* path-include=/usr/share/man/fr*/*
Notez bien qu’à partir du moment où vous aurez mis à jour /etc/dpkg/dpkg.cfg.d/excludes
, les fichiers commenceront à disparaître au fur et à mesure des mises à jour des paquets. Si l’objectif consiste à sauver de l’espace disque immédiatement, alors il vous faudra réinstaller les paquets installés sur votre système. aptitude reinstall
ou apt-get --reinstall install
pourront alors vous être utiles. En théorie, il serait même possible d’utiliser aptitude reinstall ~i
, mais cela a de grandes chances d’échouer, du fait d’un paquet non disponible (parce qu’il a été installé manuellement ou parce qu’une nouvelle version a pris la place sur le miroir de l’ancienne ayant été installée).
Cet article est une traduction de Save disk space by excluding useless files with dpkg contribuée par Weierstrass01. Abonnez-vous à ce blog par RSS ou par email pour recevoir tous les prochains articles et améliorer votre maîtrise de Debian/Ubuntu.
Freddec says
Salut
Voila un article concis, efficace et qui plus est extrêmement utile
Merci
Desidia says
Excellent!
Ça me rappelle qu’il y a déjà bien longtemps, j’utilisais une distribution à base de rpm, et celui-ci offrait une option « –nodoc » ou quelque chose d’approchant, et que j’ai toujours regretté que l’équivalent n’existait pas avec les deb’s. Avec cette option, dpkg offre encore plus.
Merci pour cet article.
macsim says
Salut,
Il y a aussi localepurge pour virer les man pages etc… d’une autre langues
– Reclaim disk space removing unneeded localizations
Raphaël Hertzog says
Oui, mais localepurge est un bricolage pas propre (ca supprime les fichiers après qu’ils aient été installé), à terme localepurge devrait utiliser la fonctionnalité de dpkg pour réaliser son travail.
Cf http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=603587
macsim says
C’est vrai que je ne l’avais pas vu comme ça pourquoi les télécharger pour ensuite les supprimés 😉
J’adopte donc cette nouvelle solution.
Merci pour ton blog et bonne continuation.
SurcouF says
Bonjour,
Est-ce que cette fonctionnalité est compatible avec debsums ?
Ce dernier ne va-t-il pas déduire qu’il manque des fichiers ?
Merci.
Raphaël Hertzog says
Bonjour Surcouf, je ne pense pas que debsums sache gérer ces options. Il va donc sûrement signaler des fichiers manquants (en particulier parce que dpkg garde la liste complète des fichiers et pas seulement celle des fichiers installés).
Mais je t’invite à ouvrir un rapport de bogue pour demander une amélioration de ce point de vue. 😉
zoroastre says
« Supprimer toutes les locales, sauf le français »
Faudrait-il mieux ne pas supprimer l’anglais ???
Certaines applications pourraient ne pas être afficher correctement, non?
@+
Raphaël Hertzog says
@Zoroastre: L’anglais est la langue de référence, donc si tu supprimes toutes les locales tu auras des messages en anglais (équivalent LANG=C). Ces messages sont en « dur » dans les applications.
MisB says
Merci pour cet article très intéressant, aussitôt lu aussitôt mis en application.
Il ne me reste plus à attendre les mises à jour de mes paquets installés.
SB says
Toujours très intéressé par ce genre de petits outils je me demande quelles sont les différences avec l’option d’APT :
Acquire::Languages {};
voir man apt.conf
Raphaël Hertzog says
C’est simple, cela n’a rien à voir. Acquire::Languages définit les traductions de description de paquets que APT va télécharger, cela n’a rien à voir avec les traductions _contenues_ dans les paquets.