Il existe plusieurs façons de se servir de MacPorts. La méthode principale consiste à utiliser la
ligne de commande. On peut donc s'adresser à MacPorts
via des commandes, comme
install,
upgrade, etc. Il y a une commande pour chaque action possible.
On utilise donc MacPorts avec l'application Terminal, située dans /Applications/Utilitaires. Contrairement à ce que beaucoup de gens pensent au premier abord, la ligne de commande n'est absolument pas dangereuse, et surtout pas avec MacPorts.
Avant de commencer, il faut savoir que MacPorts s'installe dans le dossier
/opt/local. Vous pouvez regarder dans
Macintosh HD, il y a bien un nouveau dossier
opt. Le problème, c'est que la commande de MacPorts se trouve dans ce dossier, et que celui-ci ne figure pas dans la variable
$PATH (elle contient les dossiers où se trouvent les commandes : si MacPorts n'y est pas, on ne peut pas l'utiliser correctement). Il faut donc l'y ajouter.
Ouvrez donc Terminal, tapez la commande
echo 'export PATH=${PATH}:/opt/local/bin' >> ~/.profile et appuyez sur <Entrée>. Relancez le Terminal, et tapez la commande
port. C'est la commande de MacPorts.
Code : Console | MacPorts 1.8.1
Entering interactive mode... ("help" for help, "quit" to quit)
[Users/rosewood] > |
Ici, vous êtes en mode interactif, c'est-à-dire que vous êtes
à l'intérieur de MacPorts (plus possible de tout casser

).
Vous l'aurez compris, MacPorts affiche sa version, un message d'accueil, ainsi qu'un
prompt. Le texte entre crochets vous indique dans quel dossier vous vous situez (ici
Users/rosewood).
Pour quitter tout ça, entrez la commande
quit.
Les ports
Les
ports sont les paquets dont on a parlé précédemment. Vous pouvez afficher la totalité des paquets avec la commande
list :
Code : Console | [Users/rosewood] > list
AppHack @1.1 aqua/AppHack
AppKiDo @0.971 aqua/AppKiDo
AquaLess @1.6 aqua/AquaLess
ArpSpyX @1.1 aqua/ArpSpyX
AssignmentTrackerX @2.0beta3.1 aqua/AssignmentTrackerX
BigSQL @1.0 aqua/BigSQL
BiggerSQL @1.3.8 aqua/BiggerSQL
Books @3.2.4 aqua/Books
BwanaDik @3.2.1 aqua/BwanaDik
Cenon @3.83 aqua/Cenon
[[ Je coupe, c'est trop long :p ]]
zope-portaltransforms @1.3.3 zope/zope-portaltransforms
zope-revisionmanager @1.3.2 zope/zope-revisionmanager
zope-stripogram @1.4 zope/zope-stripogram
zope-usersniffer @1.21 zope/zope-usersniffer
zope-usertrack @1.1 zope/zope-usertrack
zope-validation @1.3.1 zope/zope-validation
zope-zopetree @1.3 zope/zope-zopetree
zope-zopezen @0.5 zope/zope-zopezen
zope-zphotoslides @1.3 zope/zope-zphotoslides
zope-zsyncer @0.6.1 zope/zope-zsyncer
[Users/rosewood] > |
J'ai compté, il y a
6435 lignes

. Vous remarquerez que le
prompt est de nouveau là, vous pouvez donc taper une autre commande.
Dans la liste des paquets qui s'est affichée, vous pouvez déjà avoir un peu plus d'informations sur un paquet : vous avez son nom, sa version (
@1.3.1), et sa catégorie (
aqua/AquaLess).
Le problème avec la commande
list, c'est que si elle fait une liste exhaustive des paquets, elle n'est pas très pratique lorsque l'on cherche un paquet en particulier.
C'est là qu'intervient la commande
search. Cette commande prend un ou plusieurs paramètres : les mots-clés que vous souhaitez chercher. Elle va d'ailleurs chercher ces mots-clés dans le nom du paquet, mais aussi dans sa description. Chaque paquet possède une courte description des ses fonctionnalités, pour que vous puissiez savoir ce que fait le programme que vous allez installer.
Code : Console | [Users/rosewood] > search hack
AppHack @1.1 (aqua, devel)
Program for hacking application bundles.
blib @1.1.7 (graphics, blinkenlights)
Library of useful things to hack the Blinkenlights
denyhosts @2.6 (security, sysutils)
DenyHosts is a utility to help sys admins thwart ssh hackers
jnethack @3.4.3-0.10 (games, japanese)
Classic dungeon adventure game, translated in Japanese.
nethack @3.4.3 (games)
Classic dungeon adventure game.
p5-universal-can @1.15 (perl)
Hack around people calling UNIVERSAL::can() as a function
Found 6 ports. |
Vous voyez donc tous les paquets qui correspondent à une recherche avec
hack comme mot-clé.
Une fois que vous avez trouvé un paquet intéressant, vous pouvez utiliser la commande
info pour obtenir des informations détaillées sur ce paquet : ces dépendances, son site web, ses
variantes, le système-cible, etc.
Code : Console | [Users/rosewood] > info nethack
nethack @3.4.3, Revision 2 (games)
Variants: autopickup_exceptions, menucolors, universal, x11
Description: Classic dungeon adventure game.
Homepage: http://nethack.sourceforge.net/
Platforms: darwin, freebsd
License: unknown
Maintainers: yeled@macports.org |
Installer un paquet
Pour installer un paquet, on utilise la commande
install, en précisant le nom du paquet à installer. MacPorts va alors se charger d'installer les dépendances, de compiler les sources, etc. Essayons d'installer le paquet
fetch.
Il faut avoir des privilèges administrateur pour pouvoir installer ou désintaller un paquet. Relancez donc port avec la commande sudo port, puis tapez votre mot de passe administrateur.
Code : Console | [Users/rosewood] > install fetch
---> Computing dependencies for fetch
---> Fetching libfetch
---> Verifying checksum(s) for libfetch
---> Extracting libfetch
---> Applying patches to libfetch
---> Configuring libfetch
---> Building libfetch
---> Staging libfetch into destroot
---> Installing libfetch @6.2.0-RELEASE_0+darwin
---> Activating libfetch @6.2.0-RELEASE_0+darwin
---> Cleaning libfetch
---> Fetching fetch
---> Verifying checksum(s) for fetch
---> Extracting fetch
---> Applying patches to fetch
---> Configuring fetch
---> Building fetch
---> Staging fetch into destroot
---> Installing fetch @6.2.0-RELEASE_0+darwin
---> Activating fetch @6.2.0-RELEASE_0+darwin
---> Cleaning fetch |
On peut voir que MacPorts installe d'abord la bibliothèque
libfetch, puis installe ensuite le programme
fetch, car
fetch dépend de
libfetch (c'est d'ailleurs la seule dépendance) :
On peut séparer le processus d'installation en plusieurs étapes. On a d'abord le téléchargement (
Fetching fetch 
), l'exécution du
script ./configure (
Configuring fetch), la compilation (
Building fetch), l'activation (
Activating fetch) et le nettoyage du paquet, tâche qui consiste à supprimer tous les fichiers liés à la compilation qui ne sont plus nécessaires.
Désinstaller un paquet
Pour désinstaller un paquet, on utilise la commande
uninstall. Seulement, il arrive que l'on se heurte à quelques problèmes lors de la désinstallation. En effet, que se passe-t-il si on désinstalle un paquet qui était nécessaire au bon fonctionnement d'un autre ? Certaines dépendances ne sont nécessaires qu'à la compilation d'un paquet, mais d'autres sont nécessaires à l'exécution du programme. Essayons de désinstaller
libfetch pour voir :
Code : Console | [Users/rosewood] > uninstall libfetch
---> Unable to uninstall libfetch 6.2.0-RELEASE_0+darwin, the following ports depend on it:
---> fetch
Error: port uninstall failed: Please uninstall the ports that depend on libfetch first.
Goodbye |
MacPorts nous annonce gentiment que
fetch est dépendant de
libfetch et qu'on ne peut pas le désinstaller.
Il faudrait d'abord désinstaller fetch puis libfetch alors ? C'est un peu lourd...
Oui, on pourrait faire comme ça. Mais si on voulait désinstaller un paquet comme
xorg, il faudrait supprimer les dizaines de paquets qui en sont dépendants. C'est effectivement trop lourd.
Heureusement, il existe deux
options qui permettent de se simplifier la vie. Les options sont des paramètres passés aux commandes qui permettent d'en modifier le comportement.
L'option
-f permet de forcer la désinstallation du paquet, quoi qu'il arrive.
Code : Console | [Users/rosewood] > uninstall -f libfetch
---> Unable to uninstall libfetch 6.2.0-RELEASE_0+darwin, the following ports depend on it:
---> fetch
Warning: Uninstall forced. Proceeding despite dependencies.
---> Deactivating libfetch @6.2.0-RELEASE_0+darwin
---> Uninstalling libfetch @6.2.0-RELEASE_0+darwin |
Sauf que là,
fetch sera toujours installé, mais ne fonctionnera plus. On n'a donc rien changé au problème, puisqu'au final on aura désinstallé les deux paquets un à un.
Il existe une option plus pratique : l'option
--follow-dependents. Cette option va suivre les paquets qui sont dépendants du paquet que vous souhaitez désinstaller, et les désinstaller avant de s'occuper du vôtre.
Code : Console | [Users/rosewood] > uninstall --follow-dependents libfetch
---> Deactivating fetch @6.2.0-RELEASE_0+darwin
---> Uninstalling fetch @6.2.0-RELEASE_0+darwin
---> Deactivating libfetch @6.2.0-RELEASE_0+darwin
---> Uninstalling libfetch @6.2.0-RELEASE_0+darwin |
Et voilà ! On a réussi à désinstaller deux paquets en une ligne !
Mettre à jour un paquet
Pour mettre à jour un paquet, c'est-à-dire télécharger les nouvelles sources et compiler le nouveau logiciel, on utilise la commande
upgrade. Si le paquet peut être mis à jour, la procédure est lancée. Si ce n'est pas la cas, MacPorts ne fera rien.
Pour vérifier qu'on a la dernière version du paquet disponible, comment s'y prend MacPorts ?
MacPorts possède une liste de tous les paquets disponible. Il compare donc la version du paquet installé avec celle de la liste. Cependant, ce système pose une limite : si la liste des paquets n'est pas à jour, MacPorts ne fera jamais les mises à jour de vos paquets. Il faut donc lui dire de temps en temps de mettre à jour la liste, avec la commande
sync.
Il existe une autre commande qui permet de faire la mise à jour des paquets, mais qui installe la dernière version de MacPorts en même temps. C'est la commande
selfupdate.
Sur d'autres systèmes que Mac OS X (MacPorts fonctionne aussi sur les *BSD), la commande selfupdate ne fait que la mise à jour de MacPorts, mais ne récupère pas la nouvelle liste des paquets. Il faut alors utiliser la commande sync.
Voilà, vous savez à présent faire un usage basique de MacPorts.