OpenBSD FAQ: Package Management : (v1.184 ; 14/08/2019)
— [ FAQ Index ] ~ Traduction française de la FAQ OpenBSD : Gestion des paquets —
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 faciles, ils ont été portés sur OpenBSD et empaquetés. Le but de ce système de paquets (paquet) 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 paquets 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 paquets, 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 paquets est l'objectif de leur travail de portage, et non pas les ports eux-mêmes.
Les paquets sont facilement gérables grâce à l'aide de nombreux outils :
Afin de fonctionner proprement, une application X peut requérir que d'autres applications Y et Z soient installées. 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 paquets 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 :
/var/db/pkg/
. Ceci préviendra, entres autres, que les dépendances d'un paquet soient supprimées avant que le paquet lui-même ne le soit. Cela aide à s'assurer qu'une application ne peut être accidentellement cassée par un utilisateur insouciant.
Il y a deux endroits où pkg_add(1) ira regarder pour gérer les paquets : le fichier installurl(5) ou la variable d'environnement PKG_PATH
. Le premier est la méthode préférée et est configurée par défaut sur les nouvelles installations.
S'il est nécessaire d'utiliser de multiples miroirs, PKG_PATH
permet de le faire via une liste séparée par le symbole :
:
export PKG_PATH=scp://user@company-build-server/usr/ports/paquets/%a/all:https://trusted-public-server/%m:installpath
Bien que le miroir par défaut devrait fonctionner pour la plupart des gens, une liste d'endroits alternatifs peut être trouvée sur la page mirroirs.
Une large collection de paquets pré-compilés est disponible pour la plupart des architectures communes.
Pour rechercher le nom d'un paquet, 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 paquet 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
Si vous recherchez un nom de fichier spécifique, elle peut être utilisée pour trouver quel(s) paquet(s) contient le fichier.
Vous noterez que certains paquets 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 paquet peut avoir le support optionnel d'une base de données, le support pour des systèmes sans X, etc… Certains paquets sont aussi divisés en sous-paquets qui peuvent être installés séparément.
Tous les paquets 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.
L'utilitaire pkg_add(1) est utilisé pour installer les paquets. Si de multiples saveurs d'un paquet existent, il vous sera demandé de choisir lequel vous voulez installer.
# pkg_add rsync Ambiguous: choose paquet 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 paquet 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 paquets 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 paquet, qu'il soit en local, ou à distance. Les préfixes URL supportés sont http, https, ftp, et scp.
Pour quelques paquets, 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 paquets 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 paquet récemment puis supprimé, les fichiers de configuration qui ont été modifiés ne seront pas ré-écrits. Idem quand vous mettez à jour un paquet.
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 paquet comprennent des informations sur les bibliothèques (“libraries”) partagées nécessaires à ce que le paquet soit installé. Si une des bibliothèques requises ne peut être trouvée, le paquet n'est pas installé parce qu'il n'aurait pas fonctionné de toute manière.
Il y a plusieurs choses à vérifier :
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 paquet :
# pkg_add -u unzip unzip-5.52->unzip-5.52p0: ok Read shared items: ok
Quand un paquet 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.
Pour supprimer un paquet, utilisez simplement pkg_delete(1) en ajoutant le nom du paquet.
# 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. Les dépendances non nécessaires peuvent être supprimées en exécutant pkg_delete -a
n'importe quand.
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.
-m
sélectionne seulement les paquets qui ont été installés manuellement. Les dépendances ne sont pas enregistrées, car elles sont automatiquement introduites. -z
exclu l'information de version. Seules la saveur et la branche sont affichées, permettant que les installations futures du paquet 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
.
Dans certains cas étranges, vous pouvez constater qu'un paquet n'est pas ajouté 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 paquet. Cela peut, par exemple, arriver quand vous appuyez sur CTRL+C durant l'installation. L'installation peut être complétée plus tard, le paquet partial-*
disparaîtra, ou il peut être supprimé avec pkg_delete(8).
Des pannes systèmes très graves, telles que des problèmes dans le système de fichiers, peuvent entraîner la corruption ou l'incohérence de /var/db/pkg
.
L'utilitaire pkg_check(8) peut aider à nettoyer.
Cette page est la traduction officieuse de la page “Paquets 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.
Contribut(rice|eur)s :