Désinstallation
Un article de Projet de documentation fug-fr .
Traduction avec l'aimable autorisation de l'auteur, d'un article intitulé Cleaning and Customizing your ports de Dru Lavigne, dans la série FreeBSD Basics sur le site BSDDevCenter d'ONLamp
Nous avons vu dans les derniers articles comment employer les utilitaires intégrés et portupgrade, pour maintenir à jour et Utiliser les ports. Aujourd'hui, je voudrais terminer la série en montrant comment maintenir votre système au propre après la désinstallation d'applicatifs, et comment personnaliser votre arbre de ports avec pkgtools.conf. N'importe qui ayant déjà installé ou désinstallé un logiciel, réalisera bientôt que l'on peut obtenir du malpropre. Encombrer le disque dur avec des fichiers temporaires, de README non lus, et de répertoires inaperçus. Parfois, une désinstallation de programme laissera des souvenirs : Des fichiers qui ne sont plus exigés, mais encombrent toujours l'espace disque. Plus désagréable, une installation pourrait effacer, ou une désinstallation pourrait retirer des bibliothèques employées par d'autres applications. Ces anéantissements dépassent les bornes, et perturbent souvent le système d'exploitation, conduisant l'utilisateur à le réinstaller à partir de zéro, juste pour pouvoir recommencer de manière propre.
Sommaire |
[modifier] Garder vos ports bien propres
Heureusement, il y a des outils disponibles pour vous aider à contrôler intelligemment l'installation de logiciels, et permettre à votre système FreeBSD de ronronner tranquillement pendant des années. Par exemple, quand vous installez un port, souvenez vous d'ajouter le target (mot) clean à la commande make:
% make install clean
Ceci lui indiquera de nettoyer son répertoire d'installation, une fois le port installé avec succès. Si vous oubliez de nettoyer, vous constaterez bientôt que ces répertoires peuvent consommer beaucoup d'espace disque. Selon vos besoins et la quantité d'espace dont vous disposez, vous pourriez utiliser cette commande à la place :
% make install distclean
Quand vous installez un port, les fichiers sources exigés sont téléchargés depuis l'Internet, et copiés dans /usr/ports/distfiles . Si vous avez à réinstaller un port, les fichiers sources nécessaires seront déjà sur le disque; distclean dit à make d'effacer ces fichiers une fois que le port est installé avec succès. En décidant d'utiliser distclean, vous équilibrez votre espace disque disponible, avec la vitesse et la fiabilité de votre connexion Internet. En outre, pour des raisons de licences, certains ports exigent de chercher la source manuellement, et de la sauvegarder dans /usr/ports/distfiles . Je trouve plus commode de sauvegarder ces fichiers sur le disque, ainsi je n'utilise pas distclean en construisant ces ports. Ces deux options peuvent permettre l'économie d'espace disque. Cependant, si vous avez installé portupgrade, regardez l'utilitaire portsclean qui est fourni avec. Comme son nom le suggère, cet utilitaire est conçu pour nettoyer ce qui peut avoir été oublié dans la collection de ports.
J'ai un système que j'utilise pour tester des applications, employé pour installer et désinstaller des centaines de ports. J'aime habituellement utiliser mes applicatifs proprement, et de me rappeler d'utiliser distclean. jetons un coup d'oeil à son état actuel, et voyons si portsclean fera une différence. D'abord, je contrôlerais l'occupation disque sur /usr :
% df /usr Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1f 13360662 6189648 6102162 50% /usr
Ensuite, je rechercherais dans /usr/ports . Cette commande montrera l'occupation du disque, triée pour les plus grosses utilisations, en sélectionnant les dix principaux mangeurs d'espace:
% du /usr/ports |sort -rn|head 3110862 /usr/ports 1848846 /usr/ports/distfiles 822278 /usr/ports/editors 816710 /usr/ports/editors/openoffice-devel 816592 /usr/ports/editors/openoffice-devel/work 604784 /usr/ports/editors/openoffice-devel/work/oo_644_src 362536 /usr/ports/distfiles/KDE 295404 /usr/ports/distfiles/openoffice 211718 /usr/ports/editors/openoffice-devel/work/mozilla 211654 /usr/ports/editors/openoffice-devel/work/mozilla/work
Hmmm. Regardez comme je n'ai pas utilisé distclean autant que je l'aurais du, j'ai toujours des fichiers résiduels après la construction d'OpenOffice. Je commencerais par nettoyer tous ces répertoires de fonctionnement oubliés:
% portsclean -C
Y a t'il maintenant une différence dans l'occupation de l'espace disque ?:
% df /usr Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1f 13360662 5160664 7131146 42% /usr
Oh ouais. J'ai juste augmenté ma capacité disque de 8%. Rappelez-vous, nettoyer ces répertoires de fonctionnement est une bonne chose, comme ils sont seulement utilisés pendant le processus de construction. Ils ne sont plus nécessaires une fois le port installé avec succès.
L'option suivante de portsclean est intéressante. Disons que vous avez décidé de garder /usr/ports/distfiles intact pendant les années passées. Et, depuis, vous avez désinstallé quelques applications, et en avez mis à jour d'autres, aux dernières versions. Il y a de très fortes chances que quelques fichiers sources périmés et inutiles dorment sous la poussière dans /usr/ports/distfiles . Pour trouver et retirer ces reliques :
% portsclean -DD Detecting unreferenced distfiles... <output varies>
et pour en vérifier l'impact :
% df /usr Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s1f 13360662 4092490 8199320 33% /usr
Whoa. Encore 9% de moins en occupation disque. Je devrais également voir une différence importante avec la commande du:
% du /usr/ports | sort -rn | head 1011998 /usr/ports 780760 /usr/ports/distfiles 161724 /usr/ports/distfiles/openoffice 137010 /usr/ports/distfiles/staroffice52 122648 /usr/ports/distfiles/KDE 55478 /usr/ports/distfiles/xc 24936 /usr/ports/distfiles/rpm 20536 /usr/ports/devel 18194 /usr/ports/distfiles/AbiWord 17704 /usr/ports/distfiles/ghostscript
Remarquez que si l'occupation disque a diminuée considérablement, mon système maintient toujours les distfiles référencés par mes applications installées.
[modifier] Personnaliser les ports disponibles
Voyons comment personnaliser interactivement avec la collection de ports. Quand vous avez installé portupgrade, les fichiers /usr/local/etc./pkgtools.conf et /usr/local/etc./pkgtools.conf.sample ont été installés pour vous. Par défaut, les deux fichiers sont les mêmes. Faites toutes les modifications dans /usr/local/etc./pkgtools.conf et gardez /usr/local/etc./pkgtools.conf.sample tel quel, pour vous rappeler les configurations initiales.
Si vous prenez le temps de lire ce fichier, vous constaterez qu'il est bien commenté, ordonné et utilement conçu pour vous aider à obtenir le meilleur de vos ports. Je mettrais en valeur certaines des options les plus utiles, mais prenez le temps de vérifier tout le fichier vous-même. Pour des débutants, ce fichier permet de positionner les variables d'environnement employées par les utilitaires de portupgrade. Par exemple, le répertoire par défaut est /var/tmp . Ce répertoire peut poser des problèmes sur de petits disques durs, où l'espace disque est limité sur /var . Pour le changer, rechercher cette ligne dans /usr/local/etc./pkgtools.conf :
# ENV['PKG_TMPDIR'] ||= '/var/tmp'
Et changez le en quelque chose comme:
ENV['PKG_TMPDIR'] ||= '/usr/tmp'
Rappelez-vous de retirer le commentaire (#), et de vous assurer que le nouveau répertoire provisoire existe.
Une autre configuration utile est la sélection de catégories à ignorer:
# IGNORE_CATEGORIES: array # # This is a list of port categories you want the pkgtools to ignore. # Typically you want to list language specific categories of the # languages you don't use. # # After configuring this list, you need to rebuild the ports # database to reflect the changes. (run 'portsdb -Ufu') # # e.g.: # IGNORE_CATEGORIES = [ # 'chinese', # 'french', # 'german', # 'hebrew', # 'japanese', # 'korean', # 'russian', # 'ukrainian', # 'vietnamese', # ] IGNORE_CATEGORIES = [ ]
Ici, les commentaires sont tout à fait clairs. Si vous décidez de tirer profit de cette option, retirez le # des catégories que vous souhaitez ignorer. Tandis que les catégories de langage sont suggérées, vous pouvez ignorer n'importe quelle catégorie. Par exemple, si vous ne projetez jamais d'installer des applications de la catégorie astro ou des catégories irc, vous pouvez les inclure. Voici un exemple édité:
IGNORE_CATEGORIES = [ 'chinese', 'german', 'hebrew', 'japanese', 'korean', 'russian', 'ukrainian', 'vietnamese', 'astro', ]
# IGNORE_CATEGORIES = [ # ]
Notez que j'ai remarqué la section vide par défaut IGNORE_CATEGORIES. J'ai alors retiré les remarques de la section énumérant les catégories que je voulais ignorées. J'avais l'habitude d'employer également le même format pour ajouter la catégorie astro. N'oubliez pas de suivre les directions des commentaires et:
% portsdb -Ufu
une fois que vous avez sauvegardé l'édition de cette section.
[modifier] Personnaliser différentes options de construction des ports
Une des configurations les plus maniables dans ce fichier est la section MAKE_ARGS. Quelques ports permettent de personnaliser leur construction en indiquant certains arguments. Ces arguments sont trouvés dans le fichier makefile du port, et sont habituellement appelés comme ceci:
% cd /usr/ports/multimedia/mplayer % make WITH_GUI=yes WITH_FREETYPE=yes install clean
Cette commande make est identique à cette invocation:
% make -DWITH_GUI -DWITH_FREETYPE install clean
Si jamais vous prévoyez d'employer portupgrade pour mettre à jour mplayer, en utilisant les mêmes arguments, vous avez un choix à faire. L'un ou l'autre compte sur votre capacité de vous souvenir d'utiliser l'option -m pour indiquer à make vos arguments avec portupgrade:
% portupgrade -rRm '-DWITH_GUI' '-DWITH_FREETYPE' mplayer
ou rajoutez ces switches dans /usr/local/etc/pkgtools.conf :
MAKE_ARGS = {
'multimedia/mplayer-*' => 'WITH_GUI=1 WITH_FREETYPE=1',
}
Ceci mis à part, cela parait un peu compliqué, avec une syntaxe plutôt barbare. Notez que la section entière de MAKE_ARGS est incluse dans les parenthèses fermées ( { et } ). Entre ces parenthèses, sont les ports particuliers et leurs arguments. Ceci signifie que vous pouvez continuer à ajouter des ports dans cette section, chacun sur sa ligne, en s'assurant que tous ces ports sont inclus entre les parenthèses.
Le nom du port lui-même doit être cité dans des guillemets simples (') et inclut le nom de son sous-répertoire dans la collection de ports. Le nom est suivi du wildcard * .
Les arguments de make eux-mêmes sont également joints entre des guillemet simples situés après le => . Notez que le numéro 1 est utilisé au lieu du mot yes et que les arguments sont séparés par un espace.
Il vaut la peine de passer quelques minutes à ajouter vos arguments à cette section, à chaque fois que vous construisez un port qui en utilise. Quand par la suite vous mettrez à niveau ce port, il est très peu probable que vous vous souveniez qu'il a utilisé tels arguments, ainsi, ils se trouvent conservés.
[modifier] Les outils des ports
Terminons cette série en jetant un coup d'oeil sur la section tools de l'arbre des ports. Si vous ne l'avez pas encore découverte:
% more /usr/ports/Tools/scripts/README
Geee, au moment même où vous avez pensiez tout savoir des ports, vous découvrez une nouvelle cachette pleine d'utilitaires. Puisque ce sont tous des scripts, n'oubliez pas de mettre un ./ devant le nom, quand vous en essayez un:
% cd /usr/ports/Tools/scripts % ./consistency-check
Je suggérerais d'essayer chaque script qui suscite votre intérêt en lisant sa description dans son fichier README. Si vous en trouvez d'intéressants, copiez les dans ~/bin, ou créez un lien symbolique, ainsi ils seront dans votre path.
J'espère que vous avez apprécié les derniers articles sur la collection de ports. Je ferais une pause de la série au cours des mois à venir, après la rédaction de " Les Nouveaux Ports " afin d'écrire un livre. Restez informé pour plus de détails.
Dru Lavigne enseigne les technologies Marketbridge à Ottawa, et participe à l'Open Ressource Protocole.

