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 implémenté 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 une interface de navigation (comme ce projet en cours appelé dp-cocoa, une interface basée sur Cocoa) ou alors 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 de DarwinPorts comparé aux 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. Il y également un portage prévu pour permettre une compatibilité avec la 10.1 (Puma) dès que nous aurons pu identifier toutes les conséquences des "variantes" qui ont besoin d'être ajoutées aux différents ports. Le projet DarwinPorts prend des dispositions pour la version d'OS ou les "variantes" spécifiques d'architecture d'un port et nous souhaitons influencer ce mécanisme pour supporter plusieurs versions d'OS ainsi que plusieurs types d'architectures (pour Darwin/x86 par exemple) en une manière claire.

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

Actuellement, DarwinPorts compile juste les logiciels depuis les sources, les installe et enregistre le processus d'installation afin de permettre à DarwinPorts d'être capable de les désinstaller si vous lui demandiez. Il créera également un binaire "instantané" d'une installation d'un port que vous pourrez donner à quelqu'un d'autre afin de lui permettre d'éviter de repasser par les étapes de compilation du port; mais la gestion de paquet est une chose que nous avons délibérément mise de côté pour la "phase II" du projet, nous adopterons probablement alors un système de gestion de paquet déjà existant et feront que DarwinPorts génère simplement ces paquets à la demande. même avec une "gestion propre et net des paquets", il sera toujours important de laisser le choix de compiler depuis les sources puisque quelque chose doit générer les paquets pour chaque version d'OS ou des différents ports, et les développeurs qui modifient les librairies système ou s'amusant à compiler un type de logiciel de différentes manières peuvent trouver insuffisant pour leurs besoins un paquet du binaire déjà "mis en boîte" et prêt à l'emploi.

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

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 reconstruisez DarwinPorts.

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.