Utiliser les ports
Un article de Projet de documentation fug-fr .
Traduction avec l'aimable autorisation de l'auteur, d'un article intitulé Ports Tricks de Dru Lavigne, dans la série FreeBSD Basics
sur le site BSDDevCenter d'ONLamp
Pour profiter au maximum d'un système FreeBSD, il est utile de maitriser la collection des ports, permettant l'installation de logiciels tiers.
Une des nombreuses raisons d'apprécier FreeBSD, est justement sa collection de
ports. Presque 10.000 applications sont disponibles, et n'importe quelle installation se
fait proprement. Ici, je voudrais vous faire partager certaines de mes astuces
préférées avec les ports.
[modifier] A LIRE
Même si vous utilisez déjà la collection des ports depuis un moment, une relecture des pages man peut vous révéler quelques astuces dont vous restiez ignorant. Si vous avez un espace disque, ou une connexion Internet lente ou intermittente, cette relecture de la page-manuel est un vrai trésor:
% cd /usr/ports % make readmes
Vous pouvez vouloir aller profiter d'un déjeuner, tandis que la commande fait son travail.
Quand elle a terminé, vous avez un nouveau fichier appelé /usr/ports/README.html. Ouvrez
ce fichier dans votre navigateur préféré, et vous y trouverez quelques hyperliens très
pratiques. D'abord, il y a un lien vers le manuel FreeBSD, qui peut être consulté à partir de votre disque dur, ou en ligne sur le site Web de FreeBSD. Ensuite, il y a un lien vers le manuel du créateur du port. Si vous ne vous êtes jamais demandé qu'elle magie se cache derrière le fichier makefile d'un port ,ou si vous avez un besoin urgent de faire votre propre port, ce fichier est à lire.
Ensuite, il y a une liste d'hyperliens dans chacun des sous-répertoires /usr/ports. Ne
vous laissez pas envahir par la simplicité. Choisissez un sous-répertoire et celui de ses
applications. Je cliquerais par exemple sur editors/abiword2. La page contient des
hyperliens sur la description du port, le site Web, l'adresse email du mainteneur, et
l'adresse email de l'origine des ports. Elle contient également une liste des dépendances de
tout les ports. D'accord, toute ces informations étaient déjà sur votre disque dur, mais
si on ne peut y accéder par l'intermédiaire d'une page Web, cela reste disponible hors connexion.
[modifier] Faire un dépôt de Packages
Un autre avantage, est de faire un dépôt de package. Ceci peut faire économiser du temps et
de l'occupation bande passante, surtout si vous devez installer un logiciel sur des
machines multiples dans votre réseau. C'est également l'idéal pour l'installation logicielle
sur des serveurs, car vous n'avez pas besoin d'y installer la collection entière de ports,
juste pour les applications requises.
Sélectionnez une machine de votre réseau destinée à recevoir le dépôt de Paquetages. Seule
cette machine aura besoin de communiquer la collection ; on ne l'exigera pas sur le reste
des machines dans le réseau. Commencez par y créer un répertoire pour accueillir les
paquetages:
% mkdir /usr/ports/packages
Créez alors les packages dont vous avez besoin. Ici, je crée deux packages:
% cd /usr/ports/www/lynx % make package % cd /usr/ports/mail/getmail % make package
Quand vous utilisez make package, deux choses se produisent. Un, un module est créé et
enregistré dans un sous-répertoire, /usr/ports/packages. En second lieu, le port est
installé sur la machine locale, s'il n'a pas déjà été installé. Si vous ne voulez pas
conserver l'application installée sur la machine agissant en tant que dépôt, faites
simplement make deinstall une fois le paquetage créé.
Quand vous avez ce qu'il vous faut dans /usr/ports/packages, nécessaires à votre réseau,
établissez un montage NFS pour partager le dépôt de paquetages. La manière la plus facile
de le faire, est avec stand/sysinstall.
Sur la machine détenant les modules :
% /stand/sysinstall
Choisissez configure, Networking, et serveur NFS. Vous devriez voir le message suivant:
Operating as an NFS server means that you must first configure an /etc/exports file to indicate which hosts are allowed certain kinds of access to your local file systems. Press [ENTER] now to invoke an editor on /etc/exports
Car un serveur NFS implique d'abord de configurer /etc./exports, pour indiquer quel clients seront autorisés à accéder à certains de vos systèmes de fichiers locaux. Appuyez sur [ENTER] maintenant pour appeler dans un éditeur /etc./exports. À moins que vous n'ayez changé votre éditeur par défaut, /etc./exports sera ouvert dans vi. Le fichier par défaut contient une syntaxe d'exemple. J'ai ajouté cette ligne à mon fichier,pour refléter l'identification utilisée sur mon réseau :
/usr/ports/packages -network 192.168.2.0 -mask 255.255.255.0
Une fois vos changements sauvegardés, vous pouvez relancer pour initialiser le serveur NFS. Si redémarrer n'est pas une bonne option, suivez les instructions dans le manuel. Puis, assurez vous que le serveur NFS est à l'écoute des demandes de connections:
% sockstat | grep nfs root nfsd 3973 tcp4*:2049 *:*
Ensuite, vous devrez créer des clients NFS sur chaque machine qui utilisera le dépôt de
paquetages. Cette fois, dans /stand/sysinstall, choisir client NFS au lieu de serveur NFS. Vous n'obtiendrez pas d'invites; cochez juste dans la boite de dialogue.
Une fois que vous avez quitté l'utilitaire, tapez :
% nfsiod -n 4
Puis, contrôlez si vous pouvez accéder au dépôt de paquetages. Dans mon exemple, 192.168.2.12 est la machine contenant les paquetages:
% mount 192.168.2.12:/usr/ports/packages /mnt % ls /mnt All Latest ipv6 mail python www
Vous noterez que des sous-répertoires ont été créés pour mail/getmail et www/lynx. Les sous-répertoires ipv6 et python sont pour les dépendances de ces paquetages. Le sous-répertoire est tout à fait clair:
% ls /mnt/All getmail-3.1.7.tbz lynx-2.8.4.1d.tbz
J'essayerais maintenant d'ajouter un paquetage:
% pkg_add /mnt/www/lynx-2.8.4.1d.tbz
Dès que je retrouve mon invite de commande, je vérifierais que l'application a en effet été installée:
% pkg_info | grep lynx lynx-2.8.4.1d A non-graphical, text-based World-Wide Web client
Si vous êtes habitué à installer des ports, vous constaterez que les paquetages n'installent
pas forcément toutes leurs dépendances.
Ils se plaignent plutôt, quand il en manque. Par exemple:
% pkg_add /mnt/mail/getmail-3.1.7.tbz % pkg_add: could not find package python-2.2.3_2 !
Habituez vos utilisateurs à installer d'abord les dépendances (dans ce cas-ci, python-2.2.3_2), et ensuite le paquetage désiré. En outre, quand un utilisateur a terminé, rappelez-lui de se déconnecter du partage NFS, et démontez le:
% cd % umount /mnt
[modifier] Afficher les dépendances
Ok, que peut-on faire d'autre avec les ports ? J'ai déjà montré une façon de visualiser les
dépendances d'un port,utilisant make readmes.
Une autre manière est de faire comme ceci:
%cd /usr/ports/graphics/gimp %make pretty-print-build-depends-list This port requires package(s) "XFree86-libraries-4.3.0_5 aalib-1.4.r5_1 cups-base-1.1.19.0 cups-pstoraster-7.07 expat-1.95.6_1 fontconfig-2.2.90_3 freetype2-2.1.4_1 gettext-0.11.5_1 ghostscript-gnu-7.07_3 gimp-print-4.2.5 glib-1.2.10_9 gmake-3.80 gtk-1.2.10_9 imake-4.3.0_1 jpeg-6b_1 libiconv-1.9.1_1 libijs-0.34 libtool-1.3.5_1 perl-5.6.1_13 pkgconfig-0.15.0 png-1.2.5_2 tiff-3.5.7_1" to build.
[modifier] Rechercher des ports
La collection de ports inclut également un dispositif de recherche. C'est extrêmement utile, particulièrement si vous connaissez le type d'application voulue, et souhaitez savoir quels ports sont disponibles pour satisfaire votre besoin. Par exemple:
% cd /usr/ports % make search key=dvd | more
Le résultat sera une liste de tous les ports traitant de dvd. Voici le premier résultat de la recherche, pour donner une idée de l'information qui peut être recueillie:
Port:dvdauthor-0.5.3 Path:/usr/ports/multimedia/dvdauthor Info:Makes a DVD file structure from one or more MPEG2 streams Maint:pb@FreeBSD.org Index:multimedia B-deps:expat-1.95.6_1 gettext-0.11.5_1 gmake-3.80 libdvdcss-1.2.5 libdvdread-0.9.4 libgnugetopt-1.2 libiconv-1.8_2 png-1.2.5_2 R-deps:libdvdcss-1.2.5 libdvdread-0.9.4 libgnugetopt-1.2 png-1.2.5_2
Les "B-deps" sont les dépendances de construction, alors que le "R-deps" sont des
dépendances de transition.
Si à la place vous voulez juste rechercher le nom d'un port, utilisez make search name= à
la place. Par exemple, si je veux installer Netscape, et savoir quelles versions sont disponibles, ceci fera l'affaire:
% make search name=netscape | more
Si vous trouvez le service de recherche utile, c'est une bonne idée de mettre d'abord à jour votre index des ports. C'est une commande qui prend un moment, ainsi, ne l'exécutez pas si vous êtes pressé.
[modifier] Affichage des paquetages et des ports installés
Passons au man pkg_info. Cet utilitaire est employé pour afficher les paquetages et les
ports installés en fonction du système. A moins que vous n'ayez lu cette page man avant,
vous risquez de manquer certainement de beaucoup d'options utiles.
En utilisant pkg_info, vous pouvez employer -a en combinaison avec d'autres options, pour
recueillir l'information sur tout les logiciels installés.
Alternativement, indiquez le nom de l'application particulière pour laquelle vous souhaitez
recueillir des information. Par exemple :
% pkg_info -ac
Affiche le commentaire de chaque application installée, tandis que:
% pkg_info -c lynx-2.8.4.1d
Affichera un commentaire pour lynx-2.8.4.1d. Si vous préférez plutôt une longue description,
utiliser -d au lieu de -C.
Si vous êtes comme moi, et détestez trop d'entrées clavier, en se rappelant le nom de
version d'une application, ajoutez -x :
% pkg_info -xc lynx
La commande ci-dessous montrera le commentaire de chaque applicatif qui démarre avec lynx. Sans compter l'économie en mémoire pour le système, c'est une excellente manière de découvrir si plus d'une version de lynx s'avèrent justement être installées sur votre système.
[modifier] Messages de post-installations
Après l'installation d'un port, il est utile de vérifier s'il y avait des messages, ces
derniers contenant souvent des instructions de configuration.
Par exemple, dans un article précédent, j'ai montré comment voir les message de
/usr/ports/courrier/messagewall. Voici une autre méthode:
% pkg_info -xD messagewall
Une option très utile est -L, car elle donne le nom complet de chaque fichier qui a été installé avec l'application:
% pkg_info -xL lynx | more Information for lynx-2.8.4.1d: Files: /usr/local/man/man1/lynx.1.gz /usr/local/bin/lynx /usr/local/etc/lynx.cfg.default /usr/local/share/doc/lynx/CHANGES <snip>
D'après la sortie, je sais maintenant que lynx est installé avec une page-manuel, que l'emplacement de l'application elle-même est /usr/local/bin/lynx, qu'il y a un fichier de configuration par défaut, et qu'il y a un répertoire contenant des documents concernant lynx. Habituellement, je ne suis pas intéressé par chaque fichier qui a été installé. Puisque ceux qui m'intéressent sont habituellement en tête de liste, je limite habituellement la sortie au début:
% pkg_info -xL lynx | head
[modifier] Contrôle des dépendances avant une désinstallation
Avant de désinstaller une application, c'est toujours une bonne idée de vérifier si d'autres modules exigent cette application comme dépendance. Par exemple, vous avez tapé pkg_info |more et voyez cette application :
ORBit-0.5.17
Vous pensez en vous-même, "je ne me souviens pas d'avoir installé, ou même utilisé cette application. Peut-être devrais-je juste m'en débarrasser ? " . Cette commande indiquera si elle a été installée par une autre application, dont vous avez besoin :
% pkg_info -R ORBit-0.5.17 Information for ORBit-0.5.17: Required by: AbiWord-gnome-1.0.5 flashplugin-mozilla-0.4.10_2 <snip>
Ahh, peut être cette application est elle utile, après tout. Mais, ne vous inquiétez pas. Si vous vous essayez à désinstaller cette application, pkg_delete se plaindra parce qu'elle est exigée par d'autres. Cependant, il est toujours bon de s'en informer avant.
[modifier] Contrôler l'espace disque de votre utilisation des ports
Que se produit il si vous installez des applications volumineuses sans espace disque suffisant ?. Utilisez l'option taille pour déterminer quel espace les fichiers d'une application utilisent. Redirigez la sortie à l'un ou l'autre des éditeurs:
% pkg_info -as | more
Ou à un fichier que vous pouvez lire à loisir:
% pkg_info -as > sizes
Vous aurez alors une idée des applications utilisant la plupart de l'espace, de sorte que
vous pourrez décider de celles qui en valent la peine.
Rappelez-vous, vous avez également l'option des commentaires, et des options de dépendances
pour vous aider dans votre décision.
[modifier] Contrôle du statut des ports installés
Et encore un autre moyen de découvrir quel logiciel est installé sur votre système, est d'utiliser pkg_version:
%pkg_version | more
Enumérera chaque application installée, dans l'ordre alphabétique. Vous noterez que chaque application est suivie d'un de ces trois symboles:
* = : l'application est à jour. * < : il y a une nouvelle version de l'application disponible. * > : votre incrément peut être obsolète.
Ainsi, pour déterminer quelles applications exigent une mise à jour:
% pkg_version -l "<"
Notez que vous devez placer des guillemets autour du <, ou votre interpréteur de commandes
se plaindra d'un nom manquant pour votre redirection.
Si vous ne recevez aucune sortie, félicitations !. Toutes vos applications sont à jour.
Si vous recevez une sortie, elle vous dit quelles applications exigent une mise à niveau. Inversement, cette commande montrera toutes les applications qui sont obsolètes:
% pkg_version -L "="
Voyez la page man pkg_version, si vous n'interprétez pas bien la différence entre -l et L.
Si vous préférez un résultat plus verbeux que =, <, ou >, essayez cette commande:
% % pkg_version -v | more
Habituellement, vous exécutez pkg_versionaprès l'utilisation de /usr/ports/net/cvsup-without-gui, pour rechercher les dernières mises à jour de ports. (Voyez la section cvsup du manuel FreeBSD.) si pour quelque raison vous n'utilisez pas cvsup, vous pouvez encore contrôler la version de ports installés avec le dernier arbre des ports:
% pkg_version -v ftp://ftp.freebsd.org/pub/FreeBSD/branches/-current/ports/INDEX \|more
Notez que cette commande est longue. Alternativement, utilisez -l ou -L avec cet URL pour
trouver vos applications obsolètes.
Tous les utilitaires mentionnés dans cet article, viennent de votre système FreeBSD. Dans un prochain article [1], je parlerais de quelques ports, ceux-ci ajoutant bien plus de fonctionnalités à la collection des ports.
Dru Lavigne enseigne les technologies Marketbridge à Ottawa, et participe à l'Open Ressource Protocole.

