FAQ DarwinPorts

Ce document essaye de répondre aux question les plus fréquemment posées à propos de DarwinPorts.

Auteur : Jordan K Hubbard

Qu'EST-ce que DarwinPorts ?

Une description de DarwinPorts est plus compréhensible en utilisant une comparaison : c'est une sorte de collection de ports comme ceux de FreeBSD ou fink qui permet d'automatiser le processus de compilation et d'installation de logiciels tierce partie pour Mac OS X. Cela permet également de garder une trace des dépendances requises pour un logiciel donné et de savoir comment construire le logiciel souhaité sur Mac OS X et de l'installer dans un emplacement commun, ce qui revient à dire qu'un logiciel installé via DarwinPorts ne va pas aller se répandre dans tout le système ou demander une connaissance particulière pour l'installer et surtout dans quel ordre il faut l'installer.

Comment est constituée l'implémentation de DarwinPorts ?

Le système DarwinPorts est pratiquement tout écrit en Tcl et a été pensé pour être intégré dans d'autres applications, comme par exemple dans le framework Cocoa dp-cocoa ainsi que dans ce logiciel de navigation Cocoa (basé sur dp-cocoa) appelé Ports Manager.app, ou bien dans une application contrôlée via une interface web. Il a été prévu pour être très extensible depuis ses tous premiers débuts, il est composé de telle manière qu'un changement de conception et/ou d'infrastructure peut être opéré indépendamment des ports, signifiant que si le système évolue, les choses anciennes ne seront pas affectées.

Même si DarwinPorts est écrit en Tcl, un utilisateur n'a pas besoin de connaître le langage Tcl pour pouvoir utiliser ce système ou même ajouter de nouveaux ports. Même si les fichiers de description des ports sont actuellement des programmes complets en Tcl, ils ressemblent plus à une liste comportant des paires de type clé/valeur.

Quelles sont les différences entre DarwinPorts et les ports de FreeBSD ?

Les ports de FreeBSD sont essentiellement implémentés comme de petites mais impressionnantes macros de BSD make(1) placées un peu partout et pouvant paraître un peu opaques et non extensibles pour une personne voulant étendre ou réarranger des parties du système. Étant donné que les fichiers makefile ne sont pas la chose la plus facile à analyser, il est également plus difficile "d'extraire" la collection de ports de FreeBSD en donnée pour une autre utilisation, comme générer la documentation des index ou des interfaces arbitraires pour la création ou la maintenance des ports.

Pourquoi DarwinPorts a été entièrement créé de A à Z plutôt que d'adopter quelque chose comme les ports FreeBSD ?

Même en ne comptant pas les quelques limitations des ports FreeBSD décrites ci-dessus, la "science" de créer des systèmes de construction automatisés est bien plus complexe à première vue qu'il n'y paraît et il y aura toujours des approches nouvelles concernant la façon d'aborder le problème, ce que nous avons essayé de faire avec DarwinPorts. Il y a probablement d'autres systèmes, certains d'entre eux ont déjà été mentionnés qui ont essayé à leurs manières de résoudre ce problème et il y aura probablement beaucoup plus de systèmes similaires essayant de trouver une solution unique qui plaise à tout le monde - ça n'est que plus ou moins impossible. Nous invitons toute personne susceptible de juger l'aspect de DarwinPorts d'après ses propres spécificités et de le considérer comme un projet parallèle plutôt qu'un élan de compétition car il y a plus d'un logiciel et autre système qui sache gérer et comment permettre l'automatisation de tout ceci.

Quelles sont les conditions requises pour DarwinPorts ?

Il requiert actuellement Mac OS X 10.2 (Jaguar), avec les Developer Tools d'installés puisque c'est le code de référence que la plupart d'entre nous utilise. DarwinPorts va s'adapter à différentes versions d'OS, ainsi qu'aux "variantes" de ports spécifiques à une architecture et nous influencerons ce méchanisme pour supporter plusieurs versions d'OS ainsi que plusieurs types d'architectures (pour Darwin/x86 par exemple) d'une manière propre et claire.

DarwinPorts fonctionne-t-il sur d'autres systèmes ?

Des patchs ont déjà été soumis afin que DarwinPorts puisse fonctionner sur plein d'autres systèmes, de Solaris à FreeBSD, en passant par NetBSD et OpenBSD, bien que toutes ces modifications apportées n'ont pas encore été incluses dans l'arbre principal. DarwinPorts a lui-même été pensé de façon a être un framework extrêmement compatible, dans lequel les ports individuels peuvent contenir une note permettant de savoir sur quelles plateformes ils peuvent s'installer (via le mot-clé platforms) ainsi que des variables spécifiques à certaines plateformes qui sont automatiquement invoquées lorsque le port choisi va être compilé/installé. Le travail actuel en cours influencera le portage de cette collection de ports sur plusieurs systèmes et architectures.

Est-ce que DarwinPorts gère également la création de paquet ?

DarwinPorts fonctionne de cette manière : compilation du logiciel puis installation dans une hiérarchie temporaire (appelée "destroot") puis copie le contenu nécessaire dans $prefix (par défaut /opt/local). À l'issue de l'installation il crée également un "reçu", vous permettant de demander à DarwinPorts de désinstaller le logiciel désiré si nécessaire.

Vous pouvez également demander à DarwinPorts de créer un paquet (pkg) d'un logiciel puis de l'installer avec l'outil d'installation standard (Installer.app) de Mac OS X. Si le paquet a des dépendances, vous pouvez également créer un paquet multi-parties (mpkg) qui peut donc contenir les dépendances requises, vous évitant de gaspiller de l'espace disque. Quelque soit le type de paquet Mac OS X choisi, vous pourrez les désinstaller avec Uninstaller.app, disponible sur packages.opendarwin.org. Dans un avenir proche, nous espérerons supporter le format "RPM Package Manager" (RPM).

Il sera toujours important de préserver la possiblité de compiler les logiciels depuis leurs sources, bien entendu, car les ports doivent être générés depuis quelque chose, et que les développeurs qui modifient des librairies système ou qui essayent différentes méthodes de compilation de logiciel peuvent trouver un binaire mis en boîte d'office insuffisant pour leurs besoins.

Pourquoi est-ce que DarwinPorts installe tout dans /opt/local par défaut ?

Premièrement, cet emplacement peut être modifié par un autre emplacement de votre choix, en éditant /etc/ports/ports.conf donc rien n'est figé. Même l'infrastructure basique de DarwinPorts, qui s'installe dans /opt/local par défaut peut être installée n'importe ou simplement en modifiant la valeur de PREFIX en ligne de commande (reportez au fichier README.fr pour plus de détails). Deuxièmement, nous avons sélectionné un CERTAIN emplacement pour que les choses à installer s'installent et qu'ils ne se heurtent pas à des composants ou des choses du système déjà installés dans /usr/local, ainsi nous avons choisi de suivre lâchement la convention de Sun et de choisir finalement /opt/local.

OK, donc comment commencer à jouer avec ?

Reportez-vous à la page web de DarwinPorts pour des informations concernant le téléchargement du projet via CVS. Une fois une copie en votre possession, lisez le README.fr situé au premier niveau de la hiérarchie pour l'installation ainsi que les instructions basiques d'utilisation.

Qu'elle est la commande pour voir les ports disponibles ?

port search ".*"

port search utilise une expression régulière (regex) comme argument donc vous pouvez chercher un (ou des) port(s) particulier(s) qui vous intéresse(nt).

Comment créer un Port ?

Il y a un excellent portfile-HOWTO disponible, qui explique en détails ce processus.

Problèmes connus et Incompatibilités

Unable to open port: can't find package Pextlib 1.0

DarwinPorts ne se compilera pas correctement avec les librairies TCL livrées dans les premières versions du paquet TCL de Fink. Mettez à jour votre paquet TCL de Fink, ou assurez-vous que vous utilisez la librairie TCL du système, et recompilez DarwinPorts.

wrong tclsh

Quelques installations Tcl tierces parties ont la fâcheuse habitude d'écraser littéralement le lien /usr/bin/tclsh, produisant une erreur lors de l'installation de DarwinPorts. Recréez le lien vers tclsh8.3 devrait résoudre ce problème :

sudo ln -s /usr/bin/tclsh8.3 /usr/bin/tclsh

Norton AntiVirus

Le projet Fink a découvert récemment de nombreux problèmes incluant des kernel panics et des gels durant la mise en place de patchs lorsque certains logiciels anti-virus étaient installés. Vous devrez peut-être désactiver tout logiciel anti-virus avant d'utiliser DarwinPorts ou Fink.