OBSD4* : wiki

Version de traduction basée sur la 6.2 officielle


FAQ - Gestion des Packages

Introduction

Il y a beaucoup d'applications qu'une personne peut vouloir utiliser sur un système OpenBSD. Pour rendre la gestion et l'usage des logiciels plus facile, ils ont été portés sur OpenBSD et empaquetés. Le but de ce système de paquets (package) est de garder une trace de quel logiciel est installé, ainsi il peut facilement être mis-à-jour ou supprimé. En quelques minutes, un grand nombre de packages peuvent être récupérés et installés, chacun à sa bonne place.

La collection des ports ne passe pas par la même étape d'audit de sécurité qui est effectué pour le système de base d'OpenBSD. Bien que nous nous efforçons de garder la même qualité des packages, nous n'avons pas assez de ressources pour assurer le même niveau de robustesse et de sécurité.

L'équipe des ports d'OpenBSD considère que créer les packages est l'objectif de leur travail de portage, et non pas les ports eux-mêmes. En général, il vous est conseillé d'utiliser les packages plutôt que de construire une application depuis les ports.
Les mises-à-jour de sécurité sont l'exception à cette règle, elles sont seulement disponibles via les ports. Les packages binaires pour -release et -stable ne sont pas mis-à-jour.

Les packages sont facilement gérables grâce à l'aide de nombreux outils :

  • pkg_add(1) - pour l'installation et la mise-à-jour des packages.
  • pkg_check(8) - pour vérifier la consistance des packages installés.
  • pkg_delete(1) - pour supprimer les packages installés.
  • pkg_info(1) - pour afficher les informations sur les packages.

Afin de fonctionner proprement, une application X peut requérir que d'autres applications Y et Z soient installés. L'application X est dite dépendante de ces autres applications, c'est pourquoi Y et Z sont appelées des dépendances de X. À son tour, Y peut requérir d'autres applications P et Q, et Z peut requérir l'application R pour fonctionner proprement. De cette façon, un arbre de dépendances complet est formé.

Les packages ressemblent simplement à des archives .tgz. Basiquement, c'est ce qu'ils sont, avec une cruciale différence : ils contiennent quelques informations de paquetage supplémentaires. Cette information est utilisée par pkg_add(1) dans de nombreux buts :

  • Différentes vérifications : est-ce que le package est déjà installé, ou est-il en conflit avec d'autres packages installés, ou nom de fichiers ?
  • Les dépendances qui ne sont pas encore présentes sur le système sont automatiquement récupérées et installées avant de procéder à l'installation du package.
  • L'information à-propos des packages est enregistrée dans un référentiel central, par défaut localisé dans /var/db/pkg/. Ceci préviendra, entres autres, que les dépendances d'un package soient supprimées avant que le package lui-même ne le soit. Cela aide à s'assurer qu'une application ne peut être accidentellement cassée par un utilisateur insouciant.

Sélectionner un miroir

Il y a deux endroits où pkg_add(1) ira regarder pour gérer les packages : le fichier installurl(5) ou la variable d'environnement PKG_PATH.

Voici une exemple de /etc/installurl :

https://ftp.openbsd.org/pub/OpenBSD

Si vous avez installé vos jeux de fichiers par internet, le miroir que vous avez choisi sera automatiquement paramétré et aucune autre configuration n'est requise. Autrement, vous pouvez le créer manuellement, ou spécifiez votre adresse préférée en exportant la variable PKG_PATH comme décrite dans le manuel de pkg_add(1).

Trouver des packages

Une large collection de packages pré-compilés est disponible pour la plupart des architectures communes.

Pour rechercher le nom d'un package, utilisez le drapeau -Q de pkg_info(1).

$ pkg_info -Q unzip
lunzip-1.8
unzip-6.0p9
unzip-6.0p9-iconv

Une autre manière de chercher se fait avec la commande pkglocate, disponible depuis le package pkglocatedb.

  $ pkglocate mutool
  mupdf-1.11p1-js:textproc/mupdf,js:/usr/local/bin/mutool
  mupdf-1.11p1-js:textproc/mupdf,js:/usr/local/man/man1/mutool.1
  mupdf-1.11p1:textproc/mupdf:/usr/local/bin/mutool
  mupdf-1.11p1:textproc/mupdf:/usr/local/man/man1/mutool.1

Vous noterez que certains packages sont disponibles dans différentes variétés - elles sont appelées des saveurs. La FAQ ports explique les saveurs en détails, mais basiquement une saveur signifie qu'ils sont configurés avec des options différentes. Par exemple, un package peut avoir le support optionnel d'une base de données, le support pour des systèmes sans X, etc… Certains packages sont aussi divisés en sous-packages qui peuvent être installés séparément.

Tous les packages possibles ne sont pas nécessairement disponibles par les serveurs miroirs. Certaines applications ne sont tout simplement pas fonctionnelles sur toutes les architectures. Certaines applications ne peuvent être distribuées via les miroirs à cause de problèmes juridiques.

Si vous cherchez un nom de fichier spécifique, le package pkglocatedb inclut aussi la commande pkg_locate pour trouver quel package contient le fichier.

Installer de nouveaux packages

L'utilitaire pkg_add(1) est utilisé pour installer les packages. Si de multiples saveurs d'un package existent, il vous sera demandé de choisir lequel vous voulez installer.

# pkg_add rsync
Ambiguous: choose package for rsync
a       0: <None>
        1: rsync-3.1.2p0
        2: rsync-3.1.2p0-iconv
Your choice:

Ici vous auriez sélectionné 1 si vous voulez le package standard, ou 2 si vous voulez celui ayant le support d'iconv. Vous pouvez aussi choisir la saveur directement en ligne de commande en utilisant pkg_add rsync– (pour celle par défaut) ou pkg_add rsync–iconv (pour la saveur iconv).

Il est possible de spécifier de multiples noms de packages sur une ligne, ce qui les installera en une seule fois, ainsi que leurs dépendances. Vous pouvez aussi spécifier l'endroit absolu d'un package, qu'il soit en local, ou à distance. Les préfixes URL supportés sont http, https, ftp, et scp.

Pour quelques packages, des informations importantes additionnelles seront données à propos de la configuration ou de l'utilisation de l'application.

# pkg_add jove
jove-4.16.0.73p0: ok
--- +jove-4.16.0.73p0 -------------------
See /usr/local/share/jove/README about changes to /etc/rc or
/etc/rc.local so that the system recovers jove files
on reboot after a system crash

Additionnellement, quelques packages fournissent des informations de configuration ou autres dans un fichier localisé dans /usr/local/share/doc/pkg-readmes.

Pour votre sécurité, si vous avez installé un package récemment puis supprimé, les fichiers de configuration qui ont été modifiés ne seront pas ré-écrits. Idem quand vous mettez à jour un package.

Parfois, vous pouvez rencontrer une erreur telle que celle dans l'exemple suivant :

# pkg_add xv
quirks-2.367 signed on 2017-10-03T11:21:28Z
xv-3.10ap4:jpeg-6bp3: ok
xv-3.10ap4:png-1.2.14p0: ok
xv-3.10ap4:tiff-3.8.2p0: ok
Can't install xv-3.10ap15 because of libraries
|library X11.16.1 not found
| not found anywhere
Direct dependencies for xv-3.10ap15 resolve to png-1.6.31 jasper-1.900.1p5 tiff-4.0.8p1 jpeg-1.5.1p0v0
Full dependency tree is png-1.6.31 tiff-4.0.8p1 jasper-1.900.1p5 jpeg-1.5.1p0v0

Les informations de compression incluses dans le package comprennent des informations sur les bibliothèques (“libraries”) partagées nécessaires à ce que le package soit installé. Si une des bibliothèques requises ne peut être trouvée, le package n'est pas installé parce qu'il n'aurait pas fonctionné de toute manière.

Il y a plusieurs choses à vérifier :

  • Votre système peut être incomplet : vous n'avez pas installé un des jeux de fichiers qui contient la librairie requise.
  • Votre système (ou les packages) peut être obsolète : vous avez une vieille version de la bibliothèque requise. Assurez-vous que le système de base et les paquets installés sont à jour.
  • Si vous fonctionnez sur -current, les instantanés de la base et des packages peuvent être légèrement désynchronisés. Patientez que les miroirs récupèrent tout et essayez à nouveau.

Mettre à jour les packages installés

Disons que vous avez une ancienne version d'unzip installé avant de mettre-à-niveau votre station vers la dernière version d'OpenBSD. Vous pouvez facilement mettre-à-jour vers la nouvelle version du package :

# pkg_add -u unzip
unzip-5.52->unzip-5.52p0: ok
Read shared items: ok

Quand un package a des dépendances, elles seront examinées pour être aussi mises-à-jour. Invoquer pkg_add(1) avec seulement le drapeau -u essaiera de mettre-à-jour tous les paquets installés. Ceci est fortement recommandé par rapport à la mise à jour de paquets individuels. Un miroir doit être proprement configuré pour réaliser ce travail.

Supprimer les packages installés

Pour supprimer un package, utiliser simplement pkg_delete(1) en ajoutant le nom du package.

# pkg_delete screen
screen-4.0.3p3: ok
Read shared items: ok
--- screen-4.0.3p3 -------------------
You should also remove /etc/screenrc (which was modified)

Là encore, les fichiers de configuration modifiés ne seront pas supprimés.

Dupliquer les paquets installés sur une autre machine

Installer un nouveau système OpenBSD avec le même ensemble de paquets qu'une machine plus ancienne est un cas d'utilisation assez courant. Les drapeaux -mz de pkg_info(1) produiront les résultats appropriés pour faciliter cette tâche.

  • Le drapeau -m sélectionne seulement les packages qui ont été installés manuellement. Les dépendances ne sont pas enregistrées, car elles sont automatiquement introduites.
  • Le drapeau -z exclu l'information de version. Seules la saveur et la branche sont affichées, permettant que les installations futures du package choisiront la version appropriée.

Par exemple :

  $ pkg_info -mz | tee list
  abcde--
  mpv--
  python--%3.6
  vim--no_x11

Copiez le fichier “list” sur l'autre machine et exécutez :

  # pkg_add -l list

Chaque spécification de paquet a une saveur (– étant la valeur par défaut) ajoutée à son nom, et les paquets qui coexistent dans plusieurs versions ont également des informations de branche. Dans ce cas, la commande pkg_add(1) suivante sélectionnera le paquet python courant de la branche 3.6.

Installation ou suppression incomplète d'un package

Dans certains cas étranges, vous pouvez constater qu'un package n'est pas ajouté ou supprimé complétement, du fait de conflits avec d'autres fichiers. Une installation incomplète est habituellement marquée par le mot “partial-” préfixant le nom du package. Cela peut, par exemple, arriver quand vous appuyez sur CTRL+C durant l'installation. C'est toujours une bonne idée de supprimer les packages partiellement installés de votre système, et de corriger les problèmes liés. L'utilitaire pkg_check(8) peut aider à nettoyer.


Cette page est la traduction officieuse de la page “Packages and Ports” de la FAQ officielle d'OpenBSD.
En cas de doute, merci de vous y référer !

Si vous voulez participer à l'effort de traduction, merci de lire ce topic.