Chapitre 8. La collection de paquetages

Table des matières
8.1. Installer la collection de paquetages
8.2. Mettre à jour la collection de paquetages
8.3. Exemple: installer un programme depuis ses sources
8.4. installer un paquetage binaire
8.5. Commandes de gestion de paquetages
8.6. Guide rapide pour empaqueter

La collection de paquetages de NetBSD est un outil qui permet de largement simplifier la compilation et l'installation d'un grand nombre de logiciels libres pour les systèmes Unix. Une ou deux commandes seulement sont nécessaires pour installer un paquetage parfaitement configuré et en état de marche.

Le premier contact avec les paquetages de NetBSD peut entrainer de petites confusions: il existe des commandes différentes qui font apparemment la même chose. La question est en fait toute simple: il existe deux façons d'installer un programme. Vous pouvez:

Ces deux méthodes nécessitent que quelqu'un ait "empaqueté le programme", c'est à dire que le programme soit porté et configuré pour NetBSD. Bien que la collection comprenne plus de 1000 programmes, il est possible que celui que vous voulez n'y soit pas. Dans ce cas, vous pouvez toujours le compiler sans avoir recours au système de paquetages et, une fois que vous l'aurez fait fonctionner, "l'empaqueter" et l'ajouter à la collection: d'autres utilisateurs bénéficieront de votre travail.

8.1. Installer la collection de paquetages

Avant d'installer un programme depuis ses sources, vous devez télécharger et installer la collection de paquetages depuis le site de NetBSD ou d'un de ses miroirs. Voici comment faire:

  1. Téléchargez la dernière version des sources du système de paquetages. Elle comprend tous les fichiers de compilation et de configuration nécéssaires. Vous la trouverez sur ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/. Le fichier s'appelle pkgsrc.tar.gz.

  2. Le cas échéant, enlevez la collection existant sur votre disque à l'aide des commandes:

    # cd /usr
    # rm -rf pkgsrc
    	  

  3. Installez la collection que vous venez de télécharger:

    # tar -xzvpf pkgsrc.tar.gz -C /usr	  
    L'exécution de ces commandes peut prendre plusieurs minutes car il y a un grand nombre de (petits) fichiers à extraire. Une fois terminé, l'environnement nécessaire à l'installation de nouveaux programmes est prêt.

    Note : il est clair que nous n'avons, jusqu'à maintenant, fait que mettre en place les fichiers de configuration nécessaires à l'installation automatique de programmes. Nous n'avons pas encore installé de programmes ! En fait, le système possède désormais la liste des paquetages disponibles ainsi que les instructions pour aller les chercher, les compiler et les installer.

Une fois la collection de paquetages installée, vous pouvez la parcourir avec lynx ou netscape ainsi que lire les détails et les descriptions des catégories et des paquetages. Par exemple:

$ cd /usr/pkgsrc
$ lynx README.html
      

8.2. Mettre à jour la collection de paquetages

La collection de paquetages est fréquemment mise à jour: vous pouvez trouver une nouvelle version, sur le site ftp, à peu près chaque semaine. Pour mettre à jour votre collection, suivez les mêmes étapes que pour sa première installation.

Lors de cette mise à jour, il peut parfois aussi être nécessaire de mettre à jour les utilitaires " pkgtools" . Pour le savoir, la marche est simple: lorsque vous essayez d'installer un programme, le système vous prévient que vos outils " pkgtools"  sont dépassés.

# make
===> Validating dependencies for gqmpeg-0.6.3
Your package tools need to be updated to 2000/02/02 versions.
The installed package tools were last updated on 1999/01/01.
Please make and install the pkgsrc/pkgtools/pkg_install package.
*** Error code 1    

La plus simple façon de les mettre à jour:

# cd /usr/pkgsrc/pkgtools/pkg_install
# make install
    

Une fois fait, vous pouvez reprendre l'installation du paquetage qui vous a causé l'erreur.

Note : vous pouvez déterminer la version requise en regardant dans le fichier pkgsrc/mk/bsd.pkg.mk: recherchez la ligne indiquant:

PKGTOOLS_REQD = 20000202      

(la date 20000202 n'est là que pour l'exemple). Cela veut dire que la version des programmes qu'il vous faut se trouve dans le fichier pkg_install-20000202.tar.gz. Il se trouve sur le site ftp de NetBSD: packages/distfiles/LOCAL_PORTS. pkg_install s'installe comme tout autre programme.

8.3. Exemple: installer un programme depuis ses sources

Cette section décrit, pour l'exemple, l'installation du programme addnerd, qui simplifie la création de nouveaux comptes sur le système. Tout d'abord, allez dans le répertoire /usr/pkgsrc/sysutils/addnerd.

8.3.1. Télécharger les sources

Si vous êtes connecté à internet, le fichier Makefile ira chercher les sources requises et vous n'avez pas besoin de lire cette section.

Dans les autres cas, il vous faut récupérer les archives vous-même. Vous devez alors en connaitre le nom. Pour cela, regardez dans le fichier Makefile à la ligne

DISTNAME = addnerd-1.6      

Le nom complet du paquetage est donc addnerd-1.6.tar.gz.

Vous arriverez au même résultat mais plus simplement avec les commandes suivantes:

# cd /usr/pkgsrc/sysutils/addnerd
# make fetch-list
      

qui montre aussi la liste des sites sur lesquels peut être téléchargé le paquetage.

8.3.2. Compiler et installer

Pour compiler le paquetage, tapez:

# cd /usr/pkgsrc/sysutils/addnerd
# make
      

Cette commande va chercher l'archive contenant les sources (si elle ne se trouve pas dans le répertoire des distfiles), les extrait, applique les correctifs éventuels pour les adapter à NetBSD puis compile le paquetage.

Pour l'installer:

# make install      

L'installation du nouveau programme est enregistrée dans votre système. Vous pouvez vérifier avec la commande pkg_info -a.

Le paquetage addnerd est prêt à être utilisé. Vous pouvez faire de la place en effaçant les fichiers intermédiaires créés par le compilateur:

# make clean
# make clean-depends
      

La deuxième commande n'est utile que si des paquetages dépendants ont été installés, ce qui n'est pas le cas de addnerd. Le même résultat peut être obtenu avec:

# make clean CLEANDEPENDS=1      

8.4. installer un paquetage binaire

Comme je l'ai expliqué dans la première partie de ce chapitre, le système de paquetages peut installer un programme à partir de ses sources mais peut aussi en installer une version binaire, préparée par quelqu'un d'autre pour NetBSD. Cette seconde méthode est plus rapide puisqu'elle ne nécessite pas de compilation et l'archive est généralement plus petite et plus rapide à quérir. Pour installer un paquetage binaire, la collection de paquetages n'est pas nécessaire: seuls les utilitaires " pkgtools"  sont utiles.

L'archive du programme binaire porte généralement l'extension .tgz alors que celle des sources finit par .tar.gz.

Note : toutes les archives de sources ne finissent pas par .tar.gz. Le système de paquetages peut gérer d'autres types tels que .zip, .bz2...

Il n'est pas strictement nécessaire de télécharger les paquetages binaires avant de les installer. Vous pourvez aussi utiliser les URL ftp://-. Par exemple:

ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/tcsh-6.09.00.tgz    

Si vous ne savez pas quelle version du paquetage est disponible sur le site, vous pouvez même ne rien indiquer et pkg_add recherchera la dernière présente. Par exemple:

# pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/tcsh    

Il est aussi possible de donner une liste (dont le séparateur est un ";") de chemins d'accès et d'URL comme valeur à PKG_PATH. Vous pouvez alors omettre les chemins d'accès:

# PKG_PATH="/cdrom;/usr/pkgsrc/packages/All;ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/"
export PKG_PATH
# pkg_add tcsh
    

Cette dernière commande installe le premier paquetage tcsh trouvé par pkg_add.

Par exemple, installons le programme texinfo dans sa forme pré-compilée.

  1. Copiez gtexinfo-3.12.tgz dans un répertoire temporaire.

  2. Tapez la commande suivante:

    # pkg_add -v gtexinfo-3.12.tgz	  

  3. Vérifiez que le paquetage a été installé:

    # pkg_info	  

  4. Effacez le fichier gtexinfo-3.12.tgz du répertoire temporaire.

Les paquetages pré-compilés sont très pratiques car ils demandent un minimum d'effort et de temps pour être installés. Mais les paquetages de sources permettent plus de contrôle puisqu'il est possible d'avoir accès aux options de compilation. C'est alors beaucoup plus long à installer, à cause de la compilation, ce qui peut être critique sur certaines (anciennes) plateformes.

Avant d'installer un paquetage avec pkg_add, il est préférable de l'examiner avec pkg_info. Par exemple:

# pkg_info -f jpeg-6b.tgz    

Il peut aussi être intéressant d'examiner la première commande CWD pour voir où se trouve le répertoire de base du paquetage. Les répertoires les plus courants sont /usr/pkg et /usr/X11R6. Si celui-ci n'est pas celui que vous voulez, vous pouvez le changer avec l'option -p de la commande pkg_add. Par exemple, le paquetage jpeg-6b.tgz se trouve, par défaut, dans /usr/pkg mais vous pouvez l'installer dans /usr/X11R6 si vous effectuez l'extraction avec la commande suivante:

# pkg_add -p /usr/X11R6 -v jpeg-6b.tgz    

8.5. Commandes de gestion de paquetages

Les commandes les plus importantes pour gérer les paquetages sont:

pkg_add

ajoute un paquetage pré-compilé.

pkg_delete

enlève un paquetage installé. Les noms peuvent être donnés avec ou sans la version. Si aucune version n'est donnée, pkg_delete trouvera celle qui est installée. Les caractères d'équivalences peuvent être utilisés à condition d'être détachés de l'interpréteur de commandes. Par exemple:

# pkg_delete "*emacs*"	    
L'option -r est très puissante: elle enlève tous les paquetages requis par celui en question puis celui en question lui-même. Par exemple:
# pkg_delete -r jpeg	    
enlève jpeg et tous les paquetages dont il a besoin. Cela permet de le mettre à jour.

pkg_info

affiche des informations sur les paquetages installés ou non-installés.

pkg_create

crée un nouveau paquetage pour la collection. Ce programme sert pour les versions pré-compilées. Il est appelé par le compilateur et n'a donc pas besoin d'être tapé à la main.

pkg_admin

exécute diverses fonctions administratives sur le système de paquetages.

8.6. Guide rapide pour empaqueter

Cette section (Guide rapide pour empaqueter) est une contribution de Jason R. Fink

Cette section décrit une méthode rapide pour construire de relativement petits paquetages pour NetBSD. Pour plus de détails sur la complexité du système de paquetages de NetBSD, reportez-vous au fichier Packages.txt dans l'arborescence de pkgsrc.

8.6.1. Outils

Il existe trois outils fondamentaux pour rapidement construire un petit paquetage supplémentaire pour NetBSD:

url2pkg
un paquetage de modèles
pkglint

8.6.1.1. url2pkg

L'utilitaire url2pkg peut être installé depuis l'arborescence de pkgsrc. Il aide le constructeur de paquetages à rapidement remplir et tester les aspects rudimentaires de la construction.

8.6.1.2. Paquetage de modèles

Il sert à celui qui compile. Packages.txt montre un exemple de compilation à la section 11 "A simple example of a package: bison". La plupart des paquetages de pkgsrc ne sont pas aussi complexes.

8.6.1.3. pkglint

L'utilitaire pkglint peut être installé depuis l'arborescence de pkgsrc. Il vérifie l'intégrité du paquetage.

8.6.2. Première étape

Démarrer le processus est assez simple. Il est important que le constructeur (par exemple vous) ait déjà testé la compilation sur un système NetBSD. Autrement, établir un paquetage peut devenir problématique si la compilation échoue. Notez que la plupart du temps, un correctif doit être écrit pour les sources et être inclus dans le paquetage. Mais cela n'entre pas dans le cadre de ce guide rapide (voyez Packages.txt pour plus de détails).

8.6.2.1. Utiliser url2pkg

L'étape suivante utilise url2pkg.

Voici les étapes à suivre afin que url2pkg crée les premiers fichiers utiles au nouveau paquetage:

  1. Créez le répertoire du nouveau paquetage dans le répertoire approprié de pkgsrc. Ne mettez encore rien dedans.

  2. Allez (cd) dans ce répertoire.

  3. Tapez

    $ url2pkg	      

  4. On vous demande une url, donnez-là et appuyez sur " Retour" .

  5. Un session vi s'ouvre.

    Note : cela utilise la localisation par défaut, nvi, de vi sur NetBSD. Si vous avez l'habitude d'utiliser un clone tel que vim, vous pourrez avoir des erreurs .exrc.

    La session vi sert à établir le fichier Makefile du nouveau paquetage. Il vous faut entrer le nom du paquetage, l'adresse électronique de son développeur et sa catégorie.

  6. Sauvegardez et quittez.

  7. url2pkg va automatiquement chercher le paquetage et le place dans le sous-répertoire de travail.

  8. url2pkg génère ensuite les fichiers md5.

Nous en avons terminé avec url2pkg. Veuillez noter qu'il ne remplit aucun fichier hormis Makefile. Il génère un fichier PLIST vide.

8.6.3. Etapes suivantes

Maintenant que le fichier Makefile est généré, le reste des fichiers doit être créé. A l'aide de votre paquetage de modèles, copiez les fichiers suivant depuis le sous-répertoire pkg:

DESCR

Une description du logiciel sur plusieurs lignes. Elle doit aussi contenir les crédits.

COMMENTS

Description du logiciel sur une ligne. Pas besoin de préciser le nom du paquetage, il sera automatiquement ajouté par les outils pkg_* au moment voulu.

PLIST

Ce fichier contient la localisation des fichiers à installer sur le système. Pour un petit paquetage (par exemple, un binaire et une ou deux pages de manuel), jeter un oeil au Makefile de la distribution, au script d'installation... peut facilement donner une idée de l'endroit où les placer.

8.6.4. Vérification avec pkglint

Une fois tous les fichiers prêts, il reste à les vérifier avec l'outil pkglint. La plupart du temps, il faut, dans le fichier Makefile, déplacer une section, la modifier ou en ajouter une. Cependant, pour la première fois, il est utile de lancer pkglint pour savoir exactement ce que vous avez à changer. Voici un extrait issu du fichier Packages.txt d'une session pkglint:

$ pkglint
OK: checking pkg/COMMENT.
OK: checking pkg/DESCR.
OK: checking Makefile.
OK: checking files/md5.
OK: checking patches/patch-aa.
looks fine.	

Si une erreur survient, elle est normalement facile à résoudre. Voici un exemple d'erreur que j'ai obtenue lorsque de la construction d'un paquetage:

extract suffix not required	
Je n'avais pas besoin de définir de suffixe d'extraction dans le fichier Makefile.

8.6.5. Lancer et vérifier la compilation et l'installation

A ce stade, si pkglint est passé correctement, je lance, normalement, une vérification complète du processus: aller chercher, compiler et installer. Pour le faire proprement, il faut effacer le répertoire de travail ainsi que les distfiles de /usr/pkgsrc/distfiles. De cette manière, je suis sûr que le test sera effectué entièrement.

8.6.6. Soumettre un paquetage avec send-pr

Tout d'abord, faites une archive de l'arborescence du paquetage (y compris le sous-répertoire pkg/work) comme ceci:

$ tar -czf packagename.tgz package_dir	

Ensuite, déposez cette archive à un endoit accessible au gestionnaires des paquetages de NetBSD. Si vous ne le pouvez pas, contactez NetBSD pour savoir s'il existe d'autres méthodes pour lui donner.

La meilleure méthode pour prévenir le gestionnaire de paquetages de NetBSD est d'utiliser l'utilitaire send-pr avec la catégorie " pkg" , un synopsis indiquant le nom et la version, une courte description et l'URL du fichier tar.

Vous pouvez utiliser l'utilitaire send-pr soit depuis votre NetBSD soit en ligne à l'adresse http://www.NetBSD.org/cgi-bin/sendpr.cgi?gndb=netbsd au cas où l'utilitaire soit indisponible.

8.6.7. Dernière note

Encore une fois, ce petit guide n'est utile que pour les petits paquetages ne contenant que quelques fichiers à installer sur NetBSD. Il part du principe que ce paquetage ne nécessite aucun correctif et que la compilation s'effectue sans dépendances.

Pour une utilisation plus complexe, reportez-vous au fichier Packages.txt.