La prison des ports

Voici donc notre portjail, à côté du système principal. Quand vous demandez la création d’une prison, le système de base de FreeBSD y est automatiquement installé. L’administrateur de la prison peut ensuite y installer toutes les applications qu’il veut, en se servant des ports ou des paquets TBZ. Plus le nombre d’applications disponibles dans l’AppCafé augmentera et plus l’utilité de la portjail, ou « prison des ports » diminuera. Son utilisation est effectivement plus complexe. Pour l’instant, vous pouvez encore en avoir besoin.

Mais si l’administrateur les installe dans /usr/local/, ça ne va pas se mélanger avec le système de base ?

Non, car ce n’est pas le même /usr/local/. Il y a un dossier de ce nom sur le système principal et un autre dans la prison.

Mais comment deux dossiers différents peuvent-ils avoir le même chemin d’accès ? Smiley

Vous comprendrez mieux en essayant. Nous allons tout de suite créer une portjail. Ouvrez une console (pardon, une Konsole). Nous avons maintenant besoin du code-source de FreeBSD. Si vous avez suivi mes instructions, vous l’avez demandé pendant l’installation de PC-BSD et il se trouve maintenant dans /usr/src/. Allez donc dans ce dossier avec la commande cd et vérifiez qu’il contient bien quelque chose avec ls.

[brice@Acer] ~> cd /usr/src
[brice@Acer] /usr/src> ls
COPYRIGHT         UPDATING          include           share
LOCKS             bin               kerberos5         sys
MAINTAINERS       cddl              lib               tools
Makefile          contrib           libexec           usr.bin
Makefile.inc1     crypto            release           usr.sbin
Makefile.mips     etc               rescue
ObsoleteFiles.inc games             sbin
README            gnu               secure

Si ls ne vous renvoie rien, c’est que vous avez oublié d’installer le code-source. Il faut lire plus attentivement. :colere2: Mais ne vous inquiétez pas, vous pouvez vous rattraper en utilisant lePanneau de contrôle de PC-BSD. Ouvrez-y l’outil Gestionnaire système puis l’onglet Tâches. Allez-y même si vous avez les sources, pour bien repérer les lieux.

Image utilisateur

Regardez un peu ce gros bouton Télécharger les Sources du Système qui n’attend que votre clic. Si vous n’avez pas encore les sources, allez-y : faites-vous plaisir. Smiley Ensuite, laissez cette fenêtre ouverte et mettez-la de côté pour une prochaine étape.

Maintenant que nous avons les sources, nous pouvons créer la prison. Mais seul l’administrateur, leroot, le superutilisateur Smiley , a le droit de le faire. Or, vous, vous n’êtes qu’un simple utilisateur ordinaire.

Comment ça, ordinaire ? C’est mon ordinateur, quand même ! Et c’est moi qui ai installé le système. Si ce n’est pas moi l’administrateur, c’est qui ?

C’est effectivement vous. Mais encore faut-il vous connecter en tant que root, ce qui n’est pas le cas pour l’instant. Vous allez utiliser la commande su (comme substitute user) pour vous substituer à l’administrateur. Ensuite, vous tapez le mot de passe de root. Il ne s’affiche pas quand vous le saisissez. C’est qu’il ne faudrait pas que quelqu’un le lise par dessus votre épaule Smiley . Votre invite de commande va se transformer :

[brice@Acer] /usr/src> su
Password:
[brice@Acer] /usr/src#

COMMANDE UNIX —– su (substitute user)

Vous donne les droits d’un autre utilisateur jusqu’à ce que vous tapiez exit. Vous devez connaître son mot de passe.

  • su : vous donne les droits de root, le superutilisateur.

  • su -l tartempion : vous donne les droits de l’utilisateur tartempion (vous perdez temporairement vos droits à vous).

_____________________________________________________________________

Enfin, on peut créer cette prison :

[brice@Acer] /usr/src# portjail init

La création de la portjail est assez longue. Le code-source de FreeBSD va être compilé, pour reconstituer tout un système de base à l’intérieur de la prison. Faites autre chose pendant ce temps là. Quand c’est prêt, démarrez-la avec portjail start. C’est un peu comme si vous allumiez un deuxième ordinateur.

Maintenant que la prison des ports fonctionne, nous voulons y installer des applications, soit par lesports, soit par les paquets TBZ. Dans un cas comme dans l’autre, on commence par récupérer la liste des ports. Reprenez donc la fenêtre du Gestionnaire système, celle que vous aviez mise de côté. En haut, dans la partie Console des ports, il y a un bouton Récupérer les Ports (voir image ci-dessus). Cliquez dessus.

Mais quand est-ce qu’on la voit, cette prison ?

Vous avez raison, il est temps d’y entrer. Vous pouvez cliquer sur Ports Jail dans le Panneau de Contrôle ou aller dans le menu de KDE : Applications -> Système -> Ports Jail.

Image utilisateur

La console des ports est blanche, ce qui permet de la distinguer facilement de celle du système principal. Autre différence, l’invite de commande se termine par le symbole %. Nous voici donc dans la place. La prison des ports est prête, allumée, nous y sommes, et la liste des ports aussi.

On va la voir ?

C’est parti. Tapez cd dans la blanche console des ports et rendez-vous dans le dossier /usr/ports/ pour un petit ls :

Tous ces dossiers sont autant de catégories dans lesquelles sont rangés tous les ports disponibles. Bien sûr, il n’est pas très confortable de les parcourir dans la console pour chercher l’application que vous souhaitez installer. Si vous connaissez son nom précis, vous pouvez essayer la commandewhereis pour trouver dans quelle catégorie il est. Ou consulter le site FreshPorts, comme je vous l’ai montré au chapitre précédent. Imaginons, par exemple, que vous vouliez installer Freemat, un logiciel de mathématiques similaire à Matlab et compatible avec lui. Voici sa fiche sur Freshports :

Image utilisateur

Regardons un peu quelles informations cette fiche nous fournit :

  • La version actuelle de Freemat (4.0_2).

  • L’e-mail du responsable du port (glarkin@FreeBSD.org). C’est la première personne à contacter pour râler Smiley demander de l’aide si vous rencontrez des problèmes.

  • La description de l’application.

  • Son site officiel.

  • La liste des dépendances, c’est à dire des bibliothèques ou programmes qui doivent être présents sur votre système pour que vous puissiez installer ou exécuter freemat. Quand vous demandez l’installation d’un programme, toutes ses dépendances sont également installées.

  • La commande à employer pour installer freemat par le système des ports : cd /usr/ports/math/freemat/ && make install clean

  • La commande pour installer le paquet TBZ : pkg_add -r FreeMat. Je vous déconseille ces paquets sous PC-BSD : ils sont parfois obsolètes et peuvent alors provoquer des conflits.

  • La liste des options de compilation disponibles : des choix que vous pouvez faire pour personnaliser certains logiciels (là, il n’y en a pas).

  • La liste des serveurs HTTP ou FTP que votre ordinateur va contacter automatiquement pendant l’installation.

  • L’historique des mises à jour et événements survenus depuis 10 ans concernant ce port.

La commande qui va nous permettre d’installer Freemat est donc : cd /usr/ports/math/freemat/ && make install clean. Il s’agit en fait de deux commandes distinctes, séparées par un &&.

COMMANDE UNIX —– && (and)

Permet d’écrire deux commandes sur la même ligne. Elles seront exécutées l’une après l’autre.

_____________________________________________________________________

Parmi ces deux commandes, vous connaissez déjà cd. Elle vous conduit tout simplement dans le port de Freemat : le dossier abritant son fichier Makefile.

Eh bien ! Ne restez pas plantez là : allez-y et regardez ce qu’il y a dans ce dossier.

[brice@Acer] /% cd /usr/ports/math/freemat && ls
Makefile  distinfo  files     pkg-descr pkg-plist
[brice@Acer] /usr/ports/math/freemat/%

Dans chaque port, on trouve toujours à peu près les mêmes fichiers. pkg-descr, par exemple, est une description rapide du logiciel concerné. La même que sous Freshports. Vous pouvez le lire avec la commande cat.

COMMANDE UNIX —– cat (concatenate)

Affiche le contenu d’un fichier texte

  • cat fichier : affiche le contenu de ce fichier.

  • cat -n fichier : affiche le contenu de ce fichier, en numérotant les lignes.

  • cat fichier1 > fichier2 : recopie le contenu du fichier1 dans le fichier2. Si fichier2 n’existait pas, il est créé. S’il existait, son ancien contenu est perdu.

  • cat fichier1 >> fichier2 : recopie le contenu du fichier1 dans le fichier2, à la suite de l’ancien contenu du fichier2.

_____________________________________________________________________

Le gros défaut de cat, c’est qu’il affiche la totalité du fichier d’un coup. S’il est court, comme pkg-descr, ça va. Mais essayez avec Makefile : vous allez voir… Ou plutôt non, vous n’allez voir que la fin du fichier. Et s’il est vraiment long, même en remontant, vous ne trouverez pas le début.

Non. Pour lire Makefile, il vous faut la commande more. Ou la commande less, qui est pratiquement équivalente. Un dicton unixien dit d’ailleurs : « less is more, more or less » (traduction : less est identique à more, enfin plus ou moins).

COMMANDE UNIX —– less (less)

Affiche le début d’un fichier. On peut ensuite faire défiler ce fichier avec Entrée pour le lire jusqu’au bout. À tout moment, on peut revenir à la ligne de commande en appuyant sur q. Beaucoup d’autres commandes (dont les flèches directionnelles) permettent de naviguer dans le fichier.

  • less fichier : affiche le début du contenu de ce fichier.

  • less –help : affiche la liste des commandes utilisables quand vous êtes en mode less.

_____________________________________________________________________

Mais c’est quoi ce fichier Makefile ? Je ne comprends rien à son contenu.

Ce fichier est destiné à être lu par la deuxième commande : make install clean. Quand vous tapezmake install clean, le programme make exécute l’ensemble des instructions du fichier Makefile :

  • Il regarde si le programme que vous voulez installer à des dépendances.

  • Si oui, il regarde si ces dépendances sont déjà installées sur votre système.

  • Si non, il les installe.

  • Il télécharge le code-source de votre application.

  • Il s’assure que le téléchargement a bien réussi, en se servant du fichier distinfo.

  • Il compile ce code-source et génère des fichiers objets temporaires, dans un sous dossier work.

  • À partir de ces fichiers objets, il construit les fichiers exécutables de votre application (freemat).

  • Il installe tous les fichiers de l’application dans les sous-dossiers de /usr/local/.

  • Le clean : il efface les fichiers temporaires, qui ne sont plus nécessaires une fois la compilation terminée.

Alors, ça vous dit ? On installe FreeMat ? OK. On se met d’abord en mode root avec su et on tape :

# make install clean BATCH=yes

make install clean, je veux bien. Mais BATCH=yes, c’est quoi ?

Certaines applications sont personnalisables pendant la compilation. Celle-ci s’interrompt soudain et on vous pose une question pour savoir si vous voulez activer telle ou telle fonctionnalité. Ce n’est pas le cas de FreeMat. C’est le cas de quelques-unes des dépendances de FreeMat. Mais nous, on veut juste installer FreeMat et on ne veut pas avoir à surveiller la compilation en attendant les moments où on devra répondre à ces questions. On indique donc BATCH=yes pour dire : avec toutes les options par défaut.

Le programme make est maintenant lancé. Il va mettre un bon moment pour compiler FreeMat (environ 1h). Vous pouvez lire la suite de ce chapitre, et même le suivant, pendant ce temps là. À la fin, vous pourrez lancer FreeMat depuis la console des ports :

Image utilisateur

Laisser un commentaire