Utiliser les ports

Un article de Projet de documentation fug-fr .

Jump to: navigation, search


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.

Sommaire

[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.


Page d'accueil