Man Ports(7)
Un article de Projet de documentation fug-fr .
Cette page vous propose une traduction de la page man 7 ports qui offre un bon résumé des principaux mots-clés et des variables d'environnement utilisables lors de la construction (souvent abrégée en "compilation") d'un port. Toutefois, avant de nous plonger dans le haut niveau d'abstraction d'une page man, prenons un petit exemple virtuellement concret : au cours de votre lecture vous ressentirez sans doute le besoin de faire un petit jeu de cartes...
- cd /usr/ports : vous allez voir les ports.
- make quicksearch cat=games key=card : vous leur demandez ce qu'ils ont.
Parmi les réponses, il y en a une qui vous plaît bien :
Port: belooted-0.1.4.1
Path: /usr/ports/games/belooted
Info: A popular 32-card trick-taking game played in France
- cd games/belooted : vous allez voir belooted.
- make missing : vous contrôlez l'ampleur de la tâche.
- make fetch-recursive : vous téléchargez tout le nécessaire.
- make config-recursive : vous configurez le tout si nécessaire.
- make depends : vous compilez et installez les dépendances.
- make install : vous compilez et installez le port.
- make clean : vous faites tout le ménage.
Oui, bien sûr, vous auriez aussi pu faire bien autrement ou plus simplement :
- make -C /usr/ports/games/belooted install clean
Mais de toute façon, vous êtes bien distrait, vous avez oublié de faire un beau paquet pour l'offrir à votre meilleur ami :
- make FORCE_PKG_REGISTER=yes PKGREPOSITORY=~ package clean
Vous êtes vraiment gentil avec vos amis (un peu expéditif là, mais bon...), cependant avez-vous bien suivi ? Si oui, vous n'avez peut-être pas besoin de lire cette page, vous pouvez dans ce cas toujours la relire ; si non, bonne lecture.
Sommaire |
[modifier] Nom
ports : logiciels portés.
[modifier] Description
Le catalogue des logiciels portés de FreeBSD offre aux utilisateurs et administrateurs une façon simple d'installer des applications. Chaque port contient tous les patches nécessaires afin que le code source de l'application originale puisse compiler et s'exécuter sous BSD. Compiler une application est aussi simple que d'entrer make build dans le répertoire de son port ! Le Makefile télécharge automatiquement le code source de l'application, soit depuis un disque local soit par FTP, le désarchive dans votre système, lui applique les patches et le compile. Si tout se déroule correctement, entrez simplement make install pour installer l'application.
Il est possible de télécharger et d'utiliser des ports du dépôt FreeBSD qui sont plus récents que le système installé ; cependant il est important d'installer d'abord l'Upgrade Kit depuis http://www.FreeBSD.org/ports/. Le script portcheckout(1) (ports/ports-mgmt/portcheckout ; aussi un port, bien sûr !) vous aidera à télécharger les nouveaux ports (ndt : voyez plutôt le Handbook).
Pour plus d'informations sur l'utilisation des ports, voyez Installer des applications : les logiciels pré-compilés et les logiciels portés dans le Handbook de FreeBSD. Pour plus d'informations sur la création de nouveaux ports, voyez The Porter's Handbook.
[modifier] Mots-clés
Certains mots-clés travaillent récursivement à travers les sous-répertoires. Ceci vous permet, par exemple, d'installer tous les ports biology. Les mots-clés qui procèdent ainsi sont : build, checksum, clean, configure, depends, extract, fetch, install, et package.
Les mots-clés ci-dessous seront activés automatiquement par chacun des mots-clés qui les suivent dans la liste ordonnée. Ainsi build sera activé (si nécessaire) par install, et ainsi de suite jusqu'à fetch. Habituellement vous n'utiliserez que le mot-clé install.
- config : configure les OPTIONS du port au travers d'une interface dialog(1).
- config-recursive : configure les OPTIONS du port et de toutes ses dépendances au travers d'une interface dialog(1).
- fetch : télécharge tous les fichiers nécessaires pour construire le port depuis les sites référencés en MASTER_SITES et PATCH_SITES. Voyez FETCH_CMD, MASTER_SITE_OVERRIDE et MASTER_SITE_BACKUP
- checksum : vérifie que les checksum des fichiers sources téléchargés correspondent à ceux inscrits dans le port (ndt : contrôle l'intégrité des fichiers sources). Définir NO_CHECKSUM supprimera cette étape.
- depends : installe (ou compile si seule une compilation est nécessaire) toutes les dépendances du port courant. Quand ce mot-clé est appelé par les mots-clés extract ou fetch, ceci s'effectue par étapes comme fetch-depends, build-depends, etc. Définir NO_DEPENDS supprimera cette étape.
- extract : désarchive les fichiers sources dans un répertoire de travail (ndt : répertoire work/).
- patch : applique tous les patches nécessaires pour le port.
- configure : configure le port. Certains ports vous poseront des questions lors de cette étape. Voyez INTERACTIVE et BATCH.
- build : construit le port. Ce mot-clé revient au même que le mot-clé all.
- install : installe le port et l'enregistre avec le système de gestion des paquets. C'est tout ce que vous avez réellement besoin de faire.
Les mots-clés suivants ne sont pas activés lors du processus normal d'installation (ndt : ils n'en sont pas moins intéressants et utiles).
- showconfig : affiche les OPTIONS de configuration pour ce port.
- showconfig-recursive : affiche les OPTIONS de configuration pour ce port et toutes ses dépendances.
- rmconfig : supprime les OPTIONS de configuration pour ce port.
- rmconfig-recursive : supprime les OPTIONS de configuration pour ce port et toutes ses dépendances.
- config-conditional : ignore les ports dont les OPTIONS ont déjà été configurées.
- fetch-list : affiche la liste des fichiers à télécharger pour construire le port.
- fetch-recursive : télécharge les fichiers sources nécessaires pour le port et toutes ses dépendances.
- fetch-recursive-list : affiche la liste des fichiers qui seraient téléchargés par fetch-recursive.
- pretty-print-build-depends-list : affiche la liste de toutes les dépendances de compilation, ainsi que des dépendances de ces dépendances.
- pretty-print-run-depends-list : affiche la liste de toutes les dépendances d'exécution, ainsi que des dépendances de ces dépendances.
- missing : affiche la liste des dépendances non satisfaites et à installer pour le port.
- clean : efface le code source désarchivé. Agit récursivement sur les dépendances sauf si NOCLEANDEPENDS est défini.
- distclean : efface les fichiers sources du port et active le mot-clé clean. Le mot-clé clean agit récursivement sur les dépendances sauf si NOCLEANDEPENDS est défini, mais le mot-clé distclean n'agit jamais récursivement (ceci est peut-être un bug).
- reinstall : utilisez ce mot-clé pour réinstaller un port supprimé avec pkg-delete(1) alors que vous auriez dû utiliser deinstall.
- deinstall : supprime du système un port installé, similaire à pkg_delete(1) (ndt : attention deinstall efface le port même si celui-ci possède des dépendances inverses qui resteront alors insatisfaites, similaire à pkg_delete -f).
- deinstall-all : supprime du système tous les ports installés avec le même PKGORIGIN.
- package : construit un paquet binaire pour le port. Le port sera aussi installé s'il ne l'est déjà. Le paquet binaire est un fichier .tbz que vous pouvez utiliser pour installer le port sur d'autres machines avec pkg_add(1). Si le répertoire spécifié par PACKAGES (ndt : par défaut packages/) n'existe pas, le paquet sera placé dans le répertoire courant. Voyez PKGREPOSITORY et PKGFILE.
- package-recursive : agit comme package, mais crée un paquet binaire pour tous les ports dépendants.
- readmes : crée un fichier README.html pour le port. Ce mot-clé peut être utilisé depuis /usr/ports pour créer des pages web de tous les ports de votre système !
- search : recherche dans le fichier INDEX le modèle spécifié comme variable de make(1) - key (cherche dans le nom, le commentaire et les dépendances du port), name (cherche uniquement dans le nom du port), path (cherche dans le chemin du port), info (cherche dans le commentaire du port), maint (cherche dans le mainteneur du port), cat (cherche dans la catégorie du port), bdeps (cherche dans les dépendances de construction du port), rdeps (cherche dans les dépendances d'exécution du port), www (cherche dans l'url de la page web du port) - ou recherche leurs contreparties exclusives : xname, xkey, etc. Par exemple on pourra entrer :
cd /usr/ports && make search name=query
pour trouver tous les ports dont le nom contient query. Le résultat inclut le chemin, le commentaire, le mainteneur, les dépendances de construction et les dépendances d'exécution des ports correspondant.
cd /usr/ports && make search name=pear- xbdeps=apache
Permet de trouver tous les ports dont le nom contient pear- et dont les dépendances de construction n'incluent pas apache.
cd /usr/ports && make search name=pear- xname='ht(tp|ml)'
Permet de trouver tous les ports dont le nom contient pear- mais pas html ou http.
make search key=apache display=name,path,info keylim=1
Permet de trouver tous les ports dont le nom, le chemin ou le commentaire contient apache ; ignore les autres champs de l'enregistrement.
Par défaut la recherche n'est pas sensible à la casse. Pour la rendre sensible à la casse, vous pouvez utiliser la variable icase :
make search name=p5-R icase=0 - quicksearch : réduit l'affichage de search. Seuls le nom, le chemin et le commentaire sont affichés.
- describe : génère une description en une ligne de chaque port, à utiliser dans le fichier INDEX.
- maintainer : affiche l'adresse email du mainteneur du port.
- index : crée le fichier /usr/ports/INDEX qui est utilisé par les mots-clés pretty-print-* et search. Utiliser le mot-clé index vous assure que votre fichier INDEX est synchrone avec votre arborescence des ports.
- fetchindex : télécharge le fichier INDEX du serveur FreeBSD (ndt : ceci est bien plus rapide que de créer ce fichier avec index et généralement suffisant).
[modifier] Environnement
Vous pouvez modifier chacune de ces variables d'environnement.
- PORTSDIR : l'emplacement de l'arborescence des ports. C'est par défaut /usr/ports sous FreeBSD et OpenBSD, et /usr/pkgsrc sous NetBSD.
- WRKDIRPREFIX : le répertoire où créer tous les fichiers temporaires. Utile si PORTSDIR est en mode écriture seule (peut-être monté à partir d'un CD-ROM).
- DISTDIR : le répertoire où placer et trouver les fichiers sources, normalement le répertoire distfiles/ dans PORTSDIR.
- PACKAGES : utilisé uniquement pour le mot-clé package ; le répertoire de base pour l'arborescence des paquets compilés, normalement le répertoire packages/ dans PORTSDIR. Si ce répertoire existe, l'arborescence des paquets y sera (partiellement) construite. Ce répertoire n'a pas nécessairement à exister ; s'il n'existe pas, les paquets seront placés dans le répertoire courant, sinon vous pouvez définir :
- PKGREPOSITORY : le répertoire où placer les paquets.
- PKGFILE : le chemin complet du paquet.
- PREFIX : le répertoire où tout installer de façon générale (habituellement le répertoire /usr/local).
- MASTER_SITE : les sites primaires où télécharger les paquets sources s'ils ne sont pas trouvés localement.
- PATCH_SITES : les sites primaires où télécharger les fichiers patch s'ils ne sont pas trouvés localement.
- MASTER_SITE_FREEBSD : si positionné, les téléchargements de tous les fichiers se feront à partir du site primaire de FreeBSD.
- MASTER_SITE_OVERRIDE : les sites où essayer de télécharger, en premier, tous les fichiers et les patches.
- MASTER_SITE_BACKUP : les sites où essayer de télécharger, en dernier, tous les fichiers et les patches.
- RANDOMIZE_MASTER_SITES : essaie les sites de téléchargement de façon aléatoire.
- MASTER_SORT : trie les sites de téléchargement selon le modèle donné par l'utilisateur. Par exemple :
.dk .sunet.se .se dk.php.net .no .de
heanet.dl.sourceforge.net - MASTER_SITE_INDEX : le serveur d'où télécharger le fichier INDEX parmi les serveurs FreeBSD (pour le mot-clé fetchindex). Par défaut : http://www.FreeBSD.org/ports/.
- FETCHINDEX : la commande utilisée pour télécharger le fichier INDEX (pour le mot-clé fetchindex). Par défaut : fetch -am.
- NOCLEANDEPENDS : si défini, le mot-clé clean n'agira pas récursivement sur les dépendances.
- FETCH_CMD : la commande utilisée pour télécharger les fichiers. Normalement fetch(1).
- FORCE_PKG_REGISTER : si défini, remplace tout enregistrement de paquet existant dans le système.
- MOTIFLIB : le répertoire contenant les libXm.{a,so}.
- INTERACTIVE : si défini, n'opère sur un port que s'il requiert une interaction (ndt : pour sa configuration par exemple).
- BATCH : si défini, n'opère sur un port que s'il peut être installé 100% automatiquement.
- DISABLE_VULNERABILITIES : si défini, désactive le contrôle de sécurité utilisant portaudit(1) (ports/ports-mgmt/portaudit) lors de l'installation d'un nouveau port.
- NO_IGNORE : si défini, permet l'installation d'un port marqué <FORBIDDEN>. Le fonctionnement par défaut du système des ports est de s'interrompre lorsque l'installation d'un port interdit est requise. Bien sûr ces ports peuvent ne pas fonctionner comme attendu, mais si vous savez vraiment ce que vous faites et êtes sûr de vous en installant un port interdit, alors NO_IGNORE vous permet de le faire.
- PORT_DBDIR : le répertoire où le résultat de la configuration des OPTIONS est sauvegardé. Par défaut c'est le répertoire /var/db/ports. Chaque port pour lequel des OPTIONS ont été configurées y possède un unique sous-répertoire à son nom, contenant un seul fichier nommé options.
[modifier] Fichiers
- /usr/ports : le répertoire des ports, par défaut, de FreeBSD et OpenBSD.
- /usr/pkgsrc : le répertoire des ports, par défaut, de NetBSD.
- /usr/ports/Mk/bsd.port.mk : The big Kahuna (ndt : rien à dire).
[modifier] Voir aussi
- make(1), pkg_add(1), pkg_create(1), pkg_delete(1), pkg_info(1), pkg_version(1)
- Dans le catalogue des logiciels portés :
portaudit(1), portcheckout(1), portlint(1). - Le Handbook / Manuel de FreeBSD.
- La page de recherche des ports : http://www.FreeBSD.org/ports
[modifier] Histoire
Le catalogue des logiciels portés est apparu avec FreeBSD 1.0. Il a depuis été repris par NetBSD et OpenBSD.
[modifier] Auteurs
David O'Brien est le créateur original de cette page man.
[modifier] Bugs
La documentation concernant les ports est répartie en quatre endroits : /usr/ports/Mk/bsd.port.mk, The Porter's Handbook, le chapitre sur les Paquets et Ports dans le Handbook, et cette page man.
FreeBSD 7.0 - 21 janvier 2008

