OBSD4* : wiki

Version de traduction basée sur la 6.2 officielle


Ports - Travailler avec les ports

Introduction

L'arborescence des ports est destinée aux utilisateurs avancés. Chacun est encouragé à utiliser les packages de binaire précompilé. Si vous avez des questions à-propos de l'arborescence des ports, il est supposé que vous ayez lu les pages de manuel et cette FAQ, et que vous soyez capable de travailler avec.

L'arborescence des ports est un ensemble de Makefiles, un pour chacune des applications tierces, qui contrôle :

  • Où et comment récupérer la source du logiciel
  • De quel autre logiciel il dépend
  • Comment modifier les sources (si nécessaire)
  • Comment le configurer et le compiler
  • Comment le tester (optionnel)
  • Comment l'installer

Outre le Makefile, chaque port contient également au moins les éléments suivants :

  • PLIST - instructions pour la création du package une fois que l'application a été compilée.
  • DESCR - description de l'application
  • distinfo - les sommes de contrôle et la taille du fichier de distribution

Toutes ces informations sont conservées dans un répertoire hiérarchique sous /usr/ports. Cette hiérarchie contient trois sous-répertoires spéciaux :

  • distfiles/ - où les ensembles de distribution logicielle sont stockés après le téléchargement
  • infrastructure/ - tous les scripts et makefiles nécessaires pour l'infrastructure des ports.
  • packages/ - les packages binaires compilés pour le système des ports

Les autres sous-répertoires forment tous des catégories d'applications différentes, qui contiennent les sous-répertoires des ports actuels. Les ports complexes peuvent être organisés à un niveau encore plus profond, par exemple s'ils ont une partie centrale et un ensemble d'extensions, ou une version stable et instantanée (snapshot) de l'application. Chaque répertoire de port doit contenir un sous-répertoire pkg/ avec une/des liste(s) d'empaquetage et le(s) fichier(s) de description. Il peut aussi y avoir les sous-répertoires patches/ et files/, pour les correctifs des sources et des fichiers additionnels, respectivement.

Quand un utilisateur a des problèmes avec make(1) dans le sous-répertoire d'un port spécifique, le système va parcourir son arborescence dépendante, vérifier quelles dépendances requises sont installées, compiler et installer les dépendances manquantes, et ensuite continuer la compilation du port désiré. Toutes les compilations s'effectuent à l'intérieur du répertoire de travail que le port crée. Normalement, cela est sous ${WRKOBJDIR}, par défaut vers /usr/ports/pobj, mais vous pouvez surcharger cela (lisez configuration du système de ports).

L'arborescence des ports est liée aux saveurs d'OpenBSD. Ne pas vous attendre à ce que l'arborescence du port -current fonctionne sur un système -release ou -stable. Si vous suivez -current, vous avez besoin à la fois du système de base -current et de l'arborescence du port -current. Du fait qu'aucun changement intrusif n'est fait dans -stable, il est possible d'utiliser l'arborescence du port -stable sur un système -release, et vice-versa.

Un autre défaut courant est d'oublier l'installation de X11. Même si le port que vous essayez de compiler n'a pas de dépendance directe à X11, un de ces sous-packages ou une de ses dépendances peut requérir les entêtes et bibliothèques de X11. Compiler les ports sur les systèmes sans X11 n'est pas supporté.

Plus d'informations à-propos du système des ports peuvent être trouvées dans ces pages de manuels :

  • ports(7) - décrit les différents stages (les cibles make) d'une installation de port, l'usage des saveurs, des sous-packages et d'autres options.
  • bsd.port.mk(5) - l'information en profondeur à-propos de toutes les cibles make, variables, le framework de simulation (répertoire d'installation), etc.

Récupérer l'arborescence des ports

Une fois que vous avez décidé quelle saveur de l'arborescence des ports vous désirez, vous pouvez l'obtenir depuis différentes sources. Le tableau ci-dessous donne un aperçu d'où vous pouvez trouver les différentes saveurs, et dans quel format. Un 'o' marque la disponibilité et un '-' signifie qu'il n'est pas disponible par la source spécifique.

Source Format Saveurs
-release -stable snapshots -current
Mirrors .tar.gz o - o -
AnonCVS cvs checkout o o - o

Recherchez un fichier nommé ports.tar.gz sur les miroirs.

  $ cd /tmp
  $ ftp https://ftp.openbsd.org/pub/OpenBSD/$(uname -r)/{ports.tar.gz,SHA256.sig}
  $ signify -Cp /etc/signify/openbsd-$(uname -r | cut -c 1,3)-base.pub -x SHA256.sig ports.tar.gz

Vous voulez décompresser le fichier dans le répertoire /usr, qui créera /usr/ports et tous les répertoires à l'intérieur :

  # cd /usr
  # tar xzf /tmp/ports.tar.gz

Les snapshots disponibles sur les miroirs sont générés quotidiennement depuis l'arborescence du port -current. Vous trouverez les instantanés dans le répertoire /pub/OpenBSD/snapshots/. Si vous utilisez un instantané depuis l'arborescence des ports, vous devriez avoir installé le snapshot d'OpenBSD correspondant. Assurez-vous de garder votre arborescence des ports et votre système OpenBSD synchronisés !

Pour plus d'informations à-propos de l'arborescence des ports via CVS, lisez la page AnonCVS, qui contient une liste des serveurs disponibles et plusieurs exemples.

Configuration du système de ports

Cette section introduit quelques paramètres globaux additionnels pour la compilation des ports. Vous pouvez le sauter, mais vous devrez ensuite exécuter plusieurs états make(1) dans les exemples suivants en tant que root.

Puisque le projet OpenBSD n'a pas les ressources pour revoir correctement le code source de tous les logiciels dans l'arborescence des ports, vous pouvez configurer le système de ports en prenant quelques précautions de sécurité. L'infrastructure des ports est capable d'assumer toutes les compilations en tant qu'utilisateur régulier, et d'assumer seulement certaines étapes qui requièrent les privilèges super-utilisateur tel que root (par exemple, la cible make install). Toutefois, parce que les privilèges administrateur sont toujours requis sur certains points, le système de ports ne vous sauvera pas lorsque vous déciderez de construire une application malveillante.

  • Vous pouvez paramétrer doas(1) et demander au système de ports de l'utiliser pour les tâches nécessitant des permissions super-utilisateur. Cela nécessite l'octroi de deux autorisations :
    • L'utilisateur qui s'occupe de construire les ports a besoin de permissions pour exécuter des commandes arbitraires en tant que super-utilisateur et de passer certaines variables d'environnement au shell privilégié. Voir les options setenv et keepenv dans doas.conf(5).
    • Le système de ports a besoin des permissions pour invoquer doas(1). Ceci peut être accordé en définissant la variable SUDO définie dans bsd.port.mk(5), ce qui peut être rendu permanent en ajoutant SUDO=/usr/bin/doas à mk.conf(5).
  • Vous pouvez modifier le propriétaire de l'arborescence des ports de manière à écrire en tant qu'utilisateur régulier. Dans ce cas, un utilisateur exemple a été ajouté au groupe wsrc et les répertoires sous-jacents ont les permissions en écriture pour le groupe.
  # user mod -G wsrc exampleuser
  # chgrp -R wsrc /usr/ports
  # find /usr/ports -type d -print0 | xargs -0r chmod g+w

Il est possible d'utiliser l'arborescence des ports en lecture seule en séparant les répertoires qui sont écrits durant la construction du port :

  • Le répertoire de travail des ports. Cela est contrôlé par la variable WRKOBJDIR, qui spécifie le répertoire qui contiendra les répertoires de travail.
  • Le répertoire contenant les fichiers distribution. Cela est contrôlé par la variable DISTDIR.
  • Le répertoire contenant les packages binaires nouvellement construits. Cela est contrôlé par la variable PACKAGE_REPOSITORY.

Par exemple, vous pouvez ajouter les lignes suivantes à /etc/mk.conf :

  WRKOBJDIR=/usr/obj/ports
  DISTDIR=/usr/distfiles
  PACKAGE_REPOSITORY=/usr/packages

Si désiré, vous pouvez également changer le propriétaire de ces répertoires par votre nom d'utilisateur et groupe local, afin que le système de ports puisse créer les répertoires de travail sous-jacents en tant qu'utilisateur régulier. Encore une fois, les ports peuvent être construits en tant qu'utilisateur, mais doivent être installés par root ou avec doas(1).

Recherche dans l'arborescence des ports

Une fois que vous avez l'arborescence des ports en place dans votre système, il devient très facile de chercher un logiciel. Utilisez juste make search key=“searchkey” tel que vu dans cet exemple :

  $ cd /usr/ports
  $ make search key=rsnapshot
  Port:   rsnapshot-1.3.1p0
  Path:   net/rsnapshot
  Info:   remote filesystem snapshot utility
  Maint:  Antoine Jacoutot <ajacoutot@openbsd.org>
  Index:  net sysutils
  L-deps:
  B-deps: :net/rsync
  R-deps: :devel/p5-Lchown :net/rsync
  Archs:  any

Le résultat de la recherche donne un bon aperçu de chaque application trouvée : le nom du port, le chemin du port, une description sur une ligne, le responsable du port, les mots-clés relatifs au port, les dépendances library/build/runtime, et les architectures sur lesquelles le port est connu pour fonctionner.

Ce mécanisme, cependant, est un mécanisme très basique, qui ne fait qu'exécuter awk(1) sur le fichier d'index des ports. Un port appelé “sqlports” permet une recherche très fine en utilisant SQL. C'est une base de données SQL, mais à peu près n'importe quel format de base de données peut être créé en utilisant l'infrastructure des ports. Le port sqlports inclut le script utilisé pour générer la base de données, qui pourrait servir de base pour générer des bases de données dans différents formats.

Il suffit d'installer le paquet sqlports pour démarrer. Une séance d'essai pourrait ressembler à celle-ci :

  $ sqlite3 /usr/local/share/sqlports
  SQLite version 3.3.12
  Enter ".help" for instructions
  sqlite> SELECT FULLPKGNAME,COMMENT FROM Ports WHERE COMMENT LIKE '%statistics%';
  Guppi-0.40.3p1|GNOME-based plot program with statistics capabilities
  mailgraph-1.12|a RRDtool frontend for Postfix statistics
  R-2.4.1|clone of S, a powerful math/statistics/graphics language
  py-probstat-0.912p0|probability and statistics utilities for Python
  darkstat-3.0.540p1|network statistics gatherer with graphs
  pfstat-2.2p0|packet filter statistics visualization
  tcpstat-1.4|report network interface statistics
  wmwave-0.4p2|Window Maker dockapp to display wavelan statistics
  diffstat-1.43p0|accumulates and displays statistics from a diff file
  sqlite>

Ce qui précède est encore une recherche très basique. Avec SQL, il est possible de rechercher toute chose, y compris les dépendances, les drapeaux de configuration, les bibliothèques partagées, etc.

Installation simple et rapide : un exemple simple

Pour plus de clarté, considérons un exemple simple : rsnapshot. Cette application a une seule dépendance : rsync. Les commandes suivantes supposent que vous avez configuré la variable SUDO dans /etc/mk.conf, telle que mentionnée ci-dessus.

  $ cd /usr/ports/net/rsnapshot
  $ make install
  ===>  Checking files for rsnapshot-1.2.9
  >> rsnapshot-1.2.9.tar.gz doesn't seem to exist on this system.
  >> Fetch http://www.rsnapshot.org/downloads/rsnapshot-1.2.9.tar.gz.
  100% |**************************************************|   173 KB    00:02
  >> Size matches for /usr/ports/distfiles/rsnapshot-1.2.9.tar.gz
  >> Checksum OK for rsnapshot-1.2.9.tar.gz. (sha1)
  ===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - not found
  ===>  Verifying install for rsync-2.6.9 in net/rsync
  ===>  Checking files for rsync-2.6.9
  >> rsync-2.6.9.tar.gz doesn't seem to exist on this system.
  >> Fetch ftp://ftp.samba.org/pub/rsync/old-versions/rsync-2.6.9.tar.gz.
  100% |**************************************************|   792 KB    00:31
  >> Size matches for /usr/ports/distfiles/rsync-2.6.9.tar.gz
  >> Checksum OK for rsync-2.6.9.tar.gz. (sha1)
  ===>  Verifying specs:  c
  ===>  found c.40.3
  ===>  Extracting for rsync-2.6.9
  ===>  Patching for rsync-2.6.9
  ===>  Configuring for rsync-2.6.9
    [...]
  ===>  Building for rsync-2.6.9
    [...]
  ===>  Faking installation for rsync-2.6.9
    [...]
  ===>  Building package for rsync-2.6.9
  Link to /usr/ports/packages/i386/ftp/rsync-2.6.9.tgz
  Link to /usr/ports/packages/i386/cdrom/rsync-2.6.9.tgz
  ===>  Installing rsync-2.6.9 from /usr/ports/packages/i386/all/rsync-2.6.9.tgz
  rsync-2.6.9: ok
  ===> Returning to build of rsnapshot-1.2.9
  ===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - found
  ===>  Extracting for rsnapshot-1.2.9
  ===>  Patching for rsnapshot-1.2.9
  ===>  Configuring for rsnapshot-1.2.9
    [...]
  ===>  Building for rsnapshot-1.2.9
    [...]
  ===>  Faking installation for rsnapshot-1.2.9
    [...]
  ===>  Building package for rsnapshot-1.2.9
  Link to /usr/ports/packages/i386/ftp/rsnapshot-1.2.9.tgz
  Link to /usr/ports/packages/i386/cdrom/rsnapshot-1.2.9.tgz
  ===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - found
  ===>  Installing rsnapshot-1.2.9 from /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz
  rsnapshot-1.2.9: ok

Ainsi que vous pouvez le voir, le système de ports fait beaucoup de choses automatiquement. Il ira récupérer, extraire, et corriger le code source, configurer et construire (compiler) les sources, installer les fichier dans le répertoire de simulation, créer un package (correspondant à la liste d'empaquetage) et installer le package sur votre système (habituellement sous /usr/local/). Et il le fait récursivement pour toutes les dépendances du port. Remarquez les lignes “====⇒ Verifying install for …” et “====⇒ Returning to build of …” dans la sortie ci-dessus, indiquant la marche à travers l'arborescence des dépendances.

Si une ancienne version de l'application que vous désirez installer est déjà installée sur votre système, vous pouvez utiliser make update au lieu de make install. Cela appellera pkg_add(1) avec le drapeau -r.

Les applications volumineuses nécessiteront beaucoup de ressources système pour compiler. Si vous avez des erreurs de type “out of memory” lors de la construction d'un tel port, ceci a généralement l'une des deux causes suivantes :

  • Vos limites de ressources sont trop restrictives. Ajustez les avec les commandes ulimit de ksh ou limit de csh.
  • Vous n'avez simplement pas assez de RAM.

Nettoyage après une construction

Vous voulez probablement nettoyer le répertoire de travail par défaut du port après avoir construit et installer le package :

  $ make clean
  ===>  Cleaning for rsnapshot-1.2.9

De plus, vous voulez aussi nettoyer les répertoires de travail de toutes les dépendances du port avec la cible make :

  $ make clean=depends
  ===>  Cleaning for rsync-2.6.9
  ===>  Cleaning for rsnapshot-1.2.9

Si vous souhaitez supprimer le(s) ensemble(s) de distribution source du port, vous devriez utiliser :

  $ make clean=dist
  ===>  Cleaning for rsnapshot-1.2.9
  ===>  Dist cleaning for rsnapshot-1.2.9

Dans le cas où vous avez compilé de multiples saveurs d'un même port, vous pouvez effacer les répertoires de travail de toutes ces saveurs en une seule fois en utilisant :

  $ make clean=flavors

Vous pouvez également nettoyer les choses au fur et à mesure qu'elles sont construites en définissant une variable spéciale. Les répertoires de travail seront automatiquement effacés après que les packages aient été créés.

  $ make package BULK=Yes

Désinstallation d'un package du port

Il est très facile de désinstaller un port :

  $ make uninstall
  ===> Deinstalling for rsnapshot-1.2.9
  rsnapshot-1.2.9: ok
  Read shared items: ok

Cela appellera pkg_delete(1) pour que le package correspondant soit supprimé de votre système. Si vous le désirez, vous pouvez aussi désinstaller pour réinstaller un package du port en utilisant :

  $ make reinstall
  ===>  Cleaning for rsnapshot-1.2.9
  /usr/sbin/pkg_delete rsnapshot-1.2.9
  rsnapshot-1.2.9: ok
  ===>  Installing rsnapshot-1.2.9 from /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz
  rsnapshot-1.2.9: ok

Si vous voulez vous débarrasser des paquets que vous venez de construire, vous pouvez faire ce qui suit :

  $ make clean=packages
  ===>  Cleaning for rsnapshot-1.2.9
  rm -f /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz

Utiliser les saveurs et les sous-packages

Veuillez lire la page de manuel des ports(7), qui donne un bon aperçu de ce sujet. Il y a deux mécanismes à contrôler pour empaqueter les logiciels selon différents besoins.

Le premier mécanisme est appelé saveurs. Une saveur indique habituellement un certain ensemble d'options de compilation. Par exemple, quelques applications ont la saveur “no_x11” qui peuvent être utilisées sur les systèmes sans X. Quelques shell ont la saveur “static” qui compilera une version liée statiquement. Il y a des ports qui ont différentes saveurs pour les construire avec différents outils graphiques. D'autres exemples incluent le support pour différents formats de base de données, différentes options réseaux (SSL, IPv6, …), différentes tailles de papier, etc.

En résumé : Vous utiliserez très probablement des saveurs lorsqu'un package n'a pas été mis à disposition pour la saveur que vous recherchez. Dans ce cas, vous pouvez spécifier la saveur désirée et construire le port vous-même.

La plupart des saveurs de port ont leur propre répertoire de travail durant la compilation, et chacune des saveurs sera empaquetée dans un package au nom correspondant afin d'éviter la confusion. Pour lire les différentes saveurs d'un port, vous changeriez son sous-répertoire et demanderez :

  $ make show=FLAVORS

Vous pouvez aussi regarder les fichiers DESCR du port, qui expliquent les saveurs disponibles plus en détails.

Le second mécanisme est appelé sous-package. Un porteur peut décider de créer des sous-packages pour différentes pièces d'une même application si elles peuvent être logiquement séparées. Vous verrez souvent des sous-paquets pour la partie client et la partie serveur d'un programme. Parfois une documentation abondante est fournie dans un sous-paquet parce qu'elle prend trop d'espace disque. Des fonctionnalités supplémentaires qui attirent de fortes dépendances seront souvent empaquetées séparément. Le porteur peut aussi décider quel sous-paquet est le principal, qui doit être installé par défaut. D'autres exemples sont des suites de tests extensifs livrés avec le logiciel, des modules séparés avec le support de différentes choses, etc.

En résumé : Quelques ports sont découpés en plusieurs packages. make install installera le sous-paquet principal.

Pour lister les différents packages construits par un port, utilisez :

  $ make show=PKGNAMES

make install installera le sous-paquet principal. Pour les installer tous, utilisez :

  $ make install-all

Pour lister les différents sous-paquets disponibles d'un port, utilisez :

  $ make show=MULTI_PACKAGES

Il est possible de sélectionner quel(s) sous-package(s) est à installer depuis l'arborescence des ports. Après plusieurs tests, cette procédure appellera simplement pkg_add(1) pour installer les sous-paquets désirés.

  # env SUBPACKAGE="-server" make install

Le mécanisme des sous-paquets ne prend en charge que les packages. Il ne modifie aucunes options de configuration avant de construire le port. Vous devez utiliser les saveurs pour ce propos.

Utilisez dpb pour construire de multiples ports

Quand vous avez besoin de construire plus d'un port ou deux à la fois, vous devez utiliser l'outil /usr/ports/infrastructure/bin/dpb. dpb(1) prend la liste des ports à construire et les construit automatiquement dans un ordre optimal, utilisant autant que possible le parallélisme. Il peut aussi utiliser plusieurs machines pour exécuter la construction, et produire des journaux détaillés du processus de construction pour le dépannage, placés par défaut dans /usr/ports/logs.

  # /usr/ports/infrastructure/bin/dpb -P ~/localports

Cette commande lira la liste de pkgpaths dans ~/localports et construire tous les packages. Il peut aussi installer les packages après leur construction. Le fichier ~/localports peut ressembler à cela :

  net/rsync
  www/mozilla-firefox
  editors/vim

Si vous ne fournissez pas une liste des ports à construire à la ligne de commande ou via -P ou -I, dpb(1) construira tous les ports qui sont dans l'arborescence des ports. Si vous l'exécutez en tant que root, dpb supprimera automatiquement les privilèges des utilisateurs dédiés pour récupérer distfiles et construire les ports. C'est la manière recommandée pour l'utiliser, mais il peut aussi l'être en tant qu'utilisateur régulier. De plus, l'utilitaire proot(1) peut aussi être utilisé pour isoler davantage les opérations de construction.

Mises à jour de sécurité (-stable)

Quand de sérieux bogues ou des failles de sécurité sont découverts dans un logiciel tiers, ils sont fixés dans la branche -stable de l'arborescence des ports. En contraste du système de base, l'arborescence des ports -stable ne reçoit que les backports de sécurité pour la dernière version.

Cela signifie que tout ce dont vous avez besoin de faire est de vous assurez de vérifier que vous êtes dans la branche correcte de l'arborescence des ports, et de construire le logiciel désiré depuis celle-ci. Vous pouvez garder à jour votre arborescence avec CVS et souscrire à la liste de diffusion ports-changes pour recevoir les annonces de sécurité relatives aux logiciels dans l'arborescence des ports.

Signature des paquets

Les signatures sont un bon moyen d'assurer que les packages soient légitimes et non corrompus. OpenBSD offre des paquets signés officiellement en utilisant signify(1). Aucun effort supplémentaire n'est nécessaire de la part de l'utilisateur pour s'assurer que les paquets n'ont pas été trafiqués.

Si vous voulez construire vos propres paquets signés, vous aurez en premier besoin de créer des clés pour signer.

  # signify -Gns /etc/signify/my-pkg.sec -p /etc/signify/my-pkg.pub

Notez les noms : les clés pour signer les packages doivent terminer en pkg.

Les packages existants peuvent être signés avec pkg_sign(1) après avoir été construits.

  # cd /usr/ports/packages/$(uname -p)
  # pkg_sign -s signify2 -s /etc/signify/my-pkg.sec -o signed -S all

Afin d'installer le package sur une autre machine, la clé publique my-pkg.pub devrait être déposée dans le répertoire /etc/signify sur la machine.

Rapporter des problèmes

Si vous avez des problèmes avec un port existant, veuillez envoyer un courriel au responsable du port. Pour connaître le responsable du port, tapez, par exemple :

  $ cd /usr/ports/archivers/unzip
  $ make show=MAINTAINER

Alternativement, s'il n'y a pas de responsable, ou que vous ne pouvez le contacter, envoyez un mail à la liste de diffusion ports@openbsd.org.

Dans tous les cas, veuillez fournir :

  • Votre version d'OpenBSD, incluant tous les correctifs que vous avez appliqués. La version du noyau est donnée par : sysctl -n kern.version
  • La version de votre arborescence des ports : si le fichier /usr/ports/CVS/Tag existe, fournissez son contenu. Si le fichier est absent, vous utilisez l'arborescence des ports -current.
  • Une complète description du problème. N'ayez pas peur de fournir des détails. Mentionnez toutes les étapes que vous avez suivies avant que le problème n'arrive. Le problème est-il reproductible ? Plus vous fournissez d'informations, plus vous aurez de chances de recevoir de l'aide.

Pour les ports qui ne se construisent pas correctement, une complète transcription de la construction est presque toujours requise. Vous pouvez utiliser le script portslogger, trouvé dans /usr/ports/infrastructure/bin, pour cela. Une simple exécution peut ressembler à cela :

  $ mkdir ~/portlog
  $ cd /usr/ports/archivers/unzip
  $ make 2>&1 | /usr/ports/infrastructure/bin/portslogger ~/portlog

Après cela, vous devriez avoir un fichier journal de construction dans votre répertoire ~/portlog que vous pouvez envoyer au responsable du port. De même, assurez vous de n'utiliser aucunes options spécifiques à votre construction, par exemple dans /etc/mk.conf.

Alternativement, vous pouvez :

  • Utiliser script(1) pour créer une complète transcription de construction.
  • Attacher la sortie de pkg_info(1) si cela semble même plus significatif.
  • Les erreurs du compilateur interne gcc(1) vous demandent de rapporter le bogue à la liste de diffusion gcc. Cela permet de gagner du temps si vous suivez leur direction, et de fournir au moins les différents fichiers produits par gcc -save-temps.

Aidez-nous

Il y a beaucoup de manières dont vous pouvez aider. Elles sont listées ci-dessous, par ordre croissant de difficultés :

  • Signalez les problèmes au fur et à mesure que vous les rencontrez.
  • Vous pouvez systématiquement tester les ports et rapporter les problèmes, ou suggérer des améliorations. Prenez simplement le temps de regarde le Guide de Test des Ports. Vous devez exécuter un système -current pour créer et tester des ports.
  • Testez les mises à jour des ports qui sont postées sur la liste de diffusion des ports.
  • Envoyez les mises à jour ou les correctifs au responsable du port, ou sur la liste de diffusion des ports s'il n'y a pas de responsable. Généralement, cela est hautement apprécié, à moins que vos correctifs ne causent aux développeurs une perte de temps plus qu'ils n'en gagnent.

Des dons en matériel peuvent aider à tester des ports sur les différentes plates-formes sur lesquelles OpenBSD fonctionne.


Cette page est la traduction officieuse de la page “Ports - Working with Ports” de la FAQ officielle d'OpenBSD.
En cas de doute, merci de vous y référer !

Si vous voulez participer à l'effort de traduction, merci de lire ce topic.