[OpenBSD]

La collection de ports et de paquetages


Index


Motivations

OpenBSD est de lui-même un système assez complet, mais il y a toujours beaucoup de paquetages que l'on pourrait désirer voir ajoutés. Cependant, il est nécessaire de déterminer ce qui doit réellement être inclus, et de traiter les problèmes occasionnels de licence et de restriction d'exportation. Etant donné qu'OpenBSD est censé être un petit système d'exploitation autonome de type UNIX, certaines choses ne peuvent justement pas être fournies avec le système.

La collection de ports et de paquetages NE passe PAS par l'audit complet de sécurité dont la base d'OpenBSD fait l'objet. Bien que nous nous efforçons de maintenir la qualité de la collection des paquetages à un niveau élevé, nous n'avons malheureusement pas assez de ressources humaines pour assurer le même niveau de robustesse et de sécurité.

La collection de ports, à l'origine empruntée à FreeBSD et une réécriture significative, comble ce vide. Ce concept stipule que chaque logiciel tiers doit avoir un fichier "makefile" qui définit :

Ces informations sont maintenues dans le répertoire /usr/ports.

Les paquetages sont l'équivalent binaire des ports. Un port compilé devient un paquetage qui peut être facilement installé et enregistré dans le système en utilisant pkg_add(1)

Les paquetages ressemblent à de simples paquets .tgz, mais ils devraient toujours être ajoutés en utilisant pkg_add(1), car il pourrait y avoir des informations supplémentaires que seul pkg_add(1) sait manipuler. Astuce : vous pouvez distinguer les paquetages des paquets .tgz en utilisant pkg_info(1).

Obtenir des paquetages

Une large collection de paquetages pré-compilés est disponible pour la plupart des architectures communes : Ajouter un paquetage est aussi facile que pkg_add pkgname. Si vous prenez les paquetages dans une même source (un dépôt de paquetages), réglez PKG_PATH sur l'URL de ce dépôt, afin de traiter les dépendances.

Par exemple, pour installer le paquetage Gimp (et toutes les dépendances nécessaires) sur la révision 4.7, et ce sur une machine i386, faites à partir du site ftp :

    # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.7/packages/i386/
    # pkg_add gimp

Mise à jour des ports et des paquetages pour une version finale d'OpenBSD

Il y a une branche stable pour l'arborescence des ports. Par exemple, pour saisir la branche stable de la version 4.7 :

    $ cd /usr/ports
    $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_4_7 -Pd

Si vous voulez recevoir les annonces de sécurité, vous pouvez vous inscrire à la liste de diffusion ports-security.

Les noms des paquetages sont toujours changés en cas de mise à jour du logiciel, pour éviter tout risque de confusion entre un logiciel en version finale et un logiciel corrigé de ses bogues.

Gérer les paquetages installés

La page packages(7) du manuel détient des informations utiles sur les manières de gérer les paquetages installés, de résoudre les conflits (fichiers déjà existants) ou encore de manipuler les dépendances.

A partir d'OpenBSD 3.9, un mécanisme de mise à jour est fourni par pkg_add(1). Pour mettre à jour un paquetage (ainsi que ses dépendances) réglez PKG_PATH sur l'URL d'un dépôt qui contient les mises à jour et utilisez pkg_add -ui pkgname.

Utiliser des ports

Si un logiciel donné n'existe pas pour votre architecture, vous pouvez encore compiler le port. En outre, certains utilisateurs voudront tout compiler à partir des sources pour différentes raisons.

Vous pouvez télécharger par ftp la version finale souhaitée à partir du répertoire pub/OpenBSD/[version] (où [version] est le numéro de la version finale) sur n'importe lequel des sites ftp miroirs. Les versions finales sont celles que nous livrons sur notre CDROM, et sont soumises à plus de tests que celles sur n'importe quel "snapshot". Davantage d'informations sont disponibles dans la page ports(7) du manuel.

Cycle de vie de l'arborescence des ports

L'arborescence des ports, comme le reste d'OpenBSD, change constamment.

L'arborescence courante des ports ne devrait pas être employée avec la version finale précédente. Ceci est dû aux changements, typiques du processus de construction du port, qui exigent du code basé sur l'arborescence courante des sources d'OpenBSD.

L'arborescence des ports fonctionne comme une seule entité. Le fonctionnement de la mise à jour d'un seul répertoire n'est pas garanti, car les dépendances du logiciel peuvent vous forcer à mettre à jour et recompiler de vastes parties de l'arborescence des ports. Il est fortement conseillé de ne pas suivre les ports courants à moins que vous ne soyez préparé à traiter des problèmes variés. Des listes de discussion comme ports-changes@openbsd.org ou tech@openbsd.org seront probablement d'une valeur inestimable.

Vous êtes invités à utiliser les ports stables sur une machine de production : nous essaierons de garder l'arborescence des ports stables à jour en prenant en compte les problèmes, et également en fournissant des mises à jour de binaires opportunes.

Notez que la suppression des "distfiles" n'est pas un problème, car ftp.openbsd.org contient le dépôt complet. Même le changement des "checksums" n'est pas un problème : vous pouvez utiliser la commande

        make checksum REFETCH=true
pour vous assurer de saisir la "distfile" correcte pour votre arborescence des ports. Pour des définitions de current et de stable, consultez les saveurs OpenBSD.

Une liste des changements quotidiens des ports et des ports-current est disponible.

L'arborescence des ports-current peut être retrouvée via :

Ports et X Window System

Il y a quelque chose de magique dans les fichiers de configuration X d'OpenBSD qui permet à l'arborescence des ports d'installer des applications basées sur "imake" dans /usr/local.

Exemple d'utilisation de l'arborescence des ports

Si vous prévoyez d'obtenir une arborescence des ports et de compiler, installez l'utilitaire d'archivage unzip. Vous devriez pouvoir faire quelque chose comme :

    % cd /usr/ports/archivers/unzip
    % su
    # make install clean
    # exit
Facile, non ? Ceci l'est particulièrement si l'on considère tout ce qui s'est produit en arrière-plan :

A partir d'OpenBSD 3.0, la majorité des ports construisent automatiquement les paquetages pendant l'installation.

Quand les ports sont construits, le répertoire /usr/ports/distfiles contient les sources des programmes, et /usr/ports/packages contient les binaires. Les utilisateurs dotés d'une connexion à faible débit peuvent se référer à mirroring-ports(7) pour saisir immédiatement et efficacement tous les "distfiles". Dans la version OpenBSD -current, vous pouvez employer le script /usr/ports/infrastructure/fetch/clean-old pour suivre les vieilles "distfiles". Notez que le CD d'OpenBSD inclut seulement l'arborescence des ports et les paquetages choisis. Si vous souhaitez avoir les "distfiles", vous devrez les obtenir d'une manière indépendante.

Utilisation avancée de l'arborescence des ports

L'arborescence des ports possède beaucoup de dispositifs pour l'utilisateur avancé qui seront de précieux outils au delà de l'installation de base. Les utilisateurs avancés peuvent souhaiter fouiner dans les fichiers "makefile" (vous devriez d'abord lire la page make(1) du manuel) ou assigner diverses variables à partir de la ligne de commande ou bien dans /etc/mk.conf. Ces variables sont décrites en détail dans la page bsd.port.mk(5) du manuel et dans les documents "porting" ci-dessous.

Créer de nouveaux ports

Si vous souhaitez participer au développement de l'arborescence des ports d'OpenBSD, vous devriez d'abord lire porting.html. Cette page fait référence au FreeBSD Porter's Handbook et aux conseils liés à la politique spécifique d'OpenBSD.

Quand un port est en retard sur la version principale

La collection de ports est un projet volontaire. Parfois, le projet n'a simplement pas les ressources en développeurs pour maintenir tout à jour. Les développeurs reprennent majoritairement ce qu'ils considèrent comme intéressant et pouvant être testé dans leur environnement. Vos donations sont essentielles aux tests multiplates-formes de ces ports.

Certains ports peuvent être en retard sur les versions principales pour cette raison. La collection de ports peut récupérer une version d'un programme de janvier tandis qu'une nouvelle version du programme a été lancée par ses développeurs en mai, il y a trois mois. C'est souvent une décision réfléchie ; la nouvelle version peut comporter des problèmes sur OpenBSD, ce que le mainteneur essaie de résoudre, ou peut simplement être en deçà de la version précédente : OpenBSD peut avoir des objectifs différents de ceux des développeurs d'autres projets, qui ont parfois comme conséquence des dispositifs et des choix de conception ou d'exécution qui sont indésirables du point de vue des développeurs d'OpenBSD. La mise à jour peut également être remise à plus tard parce que la nouvelle version n'est pas considérée comme cruciale.

Si vous avez cependant réellement besoin d'une nouvelle version d'un port, vous devriez demander au MAINTENEUR du port sa mise à jour (voir ci-dessous comment découvrir qui est le mainteneur); si vous pouvez envoyer des "patchs" pour ceci, c'est encore mieux. Pour créer les "patchs" appropriés, vous devriez vous référer à la documentation de fabrication des ports.

Problèmes et contacts

Si vous avez des ennuis avec un port existant, envoyez s'il vous plait un e-mail au mainteneur. Pour voir qui est le mainteneur du port, essayez par exemple :

       % cd /usr/ports/archivers/unzip
       % make show=MAINTAINER
Alternativement, s'il n'y a pas de mainteneur ou si vous ne pouvez pas le/la joindre, envoyez un mail à la liste de discussion des ports d'OpenBSD, ports@openbsd.org. Veuillez ne pas utiliser la liste de discussion misc@openbsd.org pour des questions au sujet des ports. Les corrections sont toujours les bienvenues, si vous fournissez : Pour les ports qui ne se compilent pas correctement, une transcription complète est presque toujours exigée. Pour ceci, vous pouvez employer le script de "portslogger", trouvé dans /usr/ports/infrastructure/build. Une utilisation de "portslogger" pourrait être :
       % cd /usr/ports/archivers/unzip
       % su
       # mkdir -p ~/portslogs
       # make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
               ~/portslogs
Après ceci, vous devriez avoir un fichier de logs de compilation dans votre dossier ~/portslogs que vous pourrez envoyer au "maintainer" du port. En outre, assurez-vous que vous n'employez aucune option spéciale pour votre compilation, par exemple dans /etc/mk.conf.

Alternativement, vous pouvez


OpenBSD www@openbsd.org
$OpenBSD: ports.html,v 1.41 2010/06/12 19:51:10 ajacoutot Exp $