Comment gérer les paquets avec le gestionnaire de paquets binaires pkg sur FreeBSD 12

FreeBSD est un système d’exploitation open-source de type Unix utilisé pour alimenter les serveurs, les ordinateurs de bureau et les plateformes embarquées modernes.Une grande communauté le développe continuellement depuis plus de trente ans. Ses fonctions avancées de mise en réseau, de sécurité et de stockage ont fait de FreeBSD la plateforme de choix pour de nombreux sites Web parmi les plus fréquentés et les dispositifs de mise en réseau et de stockage embarqués les plus répandus.Des géants comme Netflix, Yahoo !, WhatsApp, BBC et Sony utilisent FreeBSD sous une forme ou une autre. Le système FreeBSD n’est pas aussi connu que Linux, principalement parce que Linux s’est concentré pendant de nombreuses années sur le bureau et que le projet FreeBSD a eu tendance à être plus axé sur les serveurs.

Dans ce tutoriel, tu apprendras à gérer les paquets binaires via pkg sur le système d’exploitation FreeBSD 12, qui est la version la plus récente au moment où cet article est écrit. La plupart des éléments s’appliquent également à la version antérieure FreeBSD 11.

Conditions préalables

  • Système d’exploitation FreeBSD 12
  • Accès au compte root ou sudo

Ports et paquets

Sur le système FreeBSD, nous avons deux méthodes différentes pour installer des logiciels complémentaires : viaports et via pré-configuré paquets que la plupart des utilisateurs choisiront pour installer et gérer les logiciels.

Ports est un système permettant de construire des logiciels supplémentaires sur FreeBSD. Avec Ports, tu commences avec le code source brut fourni par le vendeur du logiciel et tu construis le logiciel exactement comme tu en as besoin, en activant et désactivant les fonctionnalités comme tu le souhaites.

Les paquets sont des logiciels précompilés, et ils sont le résultat de la construction des ports, en utilisant les options que le responsable du portage pense être les plus utiles au plus grand nombre de personnes, et en les regroupant dans un paquet pour les rendre facilement installables. Les paquets te permettent d’installer, de désinstaller et de mettre à jour rapidement les logiciels complémentaires. Ils sont ce que la plupart des utilisateurs utiliseront. Le système d’emballage de FreeBSD s’appelle package, ou simplement pkg. Les informations sur les paquets sont stockées dans une base de données SQLite que tu peux interroger sur les données des paquets.

Une autre information importante sur la gestion des paquets FreeBSD est l’emplacement des binaires des paquets. Les paquets installent les binaires sur /usr/local, et la plupart des fichiers de configuration se retrouvent sur /usr/local/etc plutôt que sur /etc. Si tu viens du monde Linux, tu peux trouver cela très inhabituel.

Le gestionnaire de paquets FreeBSD – pkg

pkg est le remplacement de nouvelle génération des outils traditionnels de gestion de paquets de FreeBSD, offrant de nombreuses fonctionnalités qui rendent la gestion des paquets binaires plus rapide et plus facile. pkg est le moyen le plus simple d’installer un logiciel qui n’est pas déjà inclus dans le système de base de FreeBSD. pkg est un programme unique avec beaucoup de sous-commandes. Tu utiliseras pkg pour pratiquement toutes les opérations sur les paquets, comme l’installation, la suppression et l’investigation des paquets. Toutes les opérations et modifications de paquets doivent être exécutées sous root ou via sudo.

Voici comment tu installerais le paquet acme.sh sur FreeBSD :

pkg install acme.sh

Tu peux alimenter la commande avec -y pour éviter la question Proceed with this action? [y/N]: lors de l’installation du logiciel ou tu peux configurer pkg pour qu’il assume toujours -y dans un fichier de configuration.

Pour supprimer le paquet, tu utiliserais :

pkg delete acme.sh

Utilise pkg help pour une référence rapide sur les sous-commandes disponibles, ou la commande pkg help pour afficher la page de manuel d’une sous-commande particulière.

pkg help pkg 
help install
pkg help delete

Installation de pkg

La version de base de FreeBSD n’est pas livrée avec le gestionnaire de paquets pkg installé. Tu dois l’installer. La première fois que tu essaies d’installer un paquetage, pkg te demande d’installer l’outil de gestion des paquets. Par exemple, disons que le premier paquetage que tu veux installer sur ton nouveau FreeBSD est wget, et tu verras l’invite suivante dans ton terminal :

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y

Tu appuieras sur Y et ENTER sur ton clavier et l'installation de l'outil de gestion des paquets commencera. Une fois le système d'empaquetage en place, le paquetage logiciel initial que tu voulais installer (wget) sera installé.

Tu peux aussi installer le système d'emballage tout seul, sans ajouter d'autres paquets, en exécutant pkg bootstrap, mais c'est rarement utilisé, peut-être seulement dans les scripts de configuration du système. pkg sait comment s'installer et mettre à jour lui-même et les autres paquets.

Comment rechercher des paquets

Maintenant que tu as installé un gestionnaire de paquets, tu peux installer des paquets. Si tu es administrateur système, tu sais que les différents systèmes d'exploitation attribuent des noms différents aux versions packagées d'un même logiciel. Un paquet pour le serveur web Apache sur FreeBSD, par exemple, aura un nom complètement différent de celui d'Apache empaqueté sur différentes distributions Linux. Donc, avant de pouvoir installer quoi que ce soit, tu devras trouver le nom du paquetage que tu veux installer.

La liste des applications disponibles de FreeBSD ne cesse de s'allonger.Le projet FreeBSD propose plusieurs ensembles de paquets dans un dépôt public, et ils sont mis à jour tous les quelques jours. Il y a actuellement plus de 25 000 paquets.

Par exemple, essayons de rechercher le serveur web Apache.

pkg search apache 
# apache24-2.4.38 Version 2.4.x of Apache web server

Il trouvera tous les paquets ayant apache dans leur nom. Cela renverra une longue liste, mais ce que tu cherches, c'est le paquet apache24. Il y a une courte description de chaque paquet. Cela devrait t'aider à décider quel paquet installer. Mais ce n'est pas toujours simple.

Certaines recherches peuvent générer des centaines de résultats. Tu devras utiliser différentes options de la ligne de commande pour couper ou ajuster les résultats de la recherche. Consulte la page de manuel pkg-search ou la page d'aide pkg help search pour en savoir plus sur les options de recherche courantes.

Si tu n'es pas sûr qu'un paquet soit ce que tu veux, tu peux utiliser la commande suivante pour rechercher des détails sur le paquet :

pkg search -R apache24

# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: "[email protected]"
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .

Cette commande te donnera beaucoup d'informations utiles sur le paquet.

Comment installer de nouveaux paquets avec pkg

Pour installer un logiciel, utilise la sous-commande install de pkg et le nom d'un paquet à installer.

pkg install apache24

Lorsque tu installes des paquets avec pkg install, pkg consulte le catalogue de paquets local, puis télécharge le paquet demandé depuis le référentiel à pkg.FreeBSD.org. Une fois que le paquet est installé, il est enregistré dans une base de données SQLite conservée dans /var/db/pkg/local.sqlite. Fais attention à ne pas supprimer ce fichier, sinon ton système perdra la trace des paquets qui ont été installés. Si le logiciel a des dépendances, pkg les découvrira et les installera en même temps que le paquet de base. Les paquets installés en tant que dépendances sont appelés paquets automatiques.

pkg a la possibilité de simplement télécharger des paquets sur Internet, de les enregistrer à un endroit du disque et de les installer à un autre moment. Tu peux utiliser la commande pkg fetch pour télécharger le paquet sans l'installer.

pkg fetch nginx 

Cette commande récupérera juste le paquet Nginx sans ses dépendances. Tu peux utiliser le drapeau -d pour récupérer toutes les dépendances ainsi que le paquet nommé.

pkg fetch -d nginx 

Les paquets sont téléchargés dans le répertoire de cache des paquets /var/cache/pkg. Après avoir récupéré les paquets, pkg les collera dans ce répertoire. Tu peux lister les fichiers pour voir ce qu'il contient.

ls /var/cache/pkg 

Maintenant, pour installer un paquet téléchargé après une récupération, exécute pkg install normalement. Le processus d'installation utilise les fichiers mis en cache plutôt que les fichiers téléchargés.

Avec le temps, le répertoire de cache des paquets peut devenir gros. La commande pkg clean supprime tous les paquets mis en cache qui ont été remplacés par des versions plus récentes, ainsi que tous les fichiers de paquets qui ne sont plus dans le référentiel.

pkg clean 

Si tu veux supprimer tous les paquets mis en cache, utilise le drapeau -a.

pkg clean -a 

Si tu veux nettoyer le cache des paquets automatiquement après chaque installation ou mise à niveau de paquets, définis l'option pkg.conf AUTOCLEAN ou true.

Comment configurer pkg

Le programme pkg est conçu pour être très flexible. Chaque sous-commande dispose d'un grand nombre d'options. Tu peux établir un comportement personnalisé mais cohérent pour la plupart des programmes à l'aide du fichier de configuration du système pour pkg, situé dans /usr/local/etc/pkg.conf.

Le fichierpkg.conf contient des valeurs par défaut commentées pour pkg. Rien qu'en lisant ce fichier, tu peux en apprendre beaucoup sur le comportement de pkg. La configuration est écrite en langage de configuration universel (UCL) et il y a beaucoup d'options de configuration commentées et pas mal d'alias. Les variables peuvent être définies sur un nombre entier, une chaîne de caractères ou une valeur booléenne.

#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10";        # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .

Tu peux définir des alias pour les sous-commandes de pkg dans pkg.conf. Au bas de pkg.conf, tu trouveras une section intitulée ALIAS. Lorsque tu te retrouves à exécuter plusieurs fois des commandes complexes, tu devrais ajouter des alias.

Pour plus d'informations sur le format du fichier et les options, tu peux te référer à la page de manuel pkg.conf(5).

man pkg.conf

Comment afficher les informations sur les paquets installés

Si tu oublies quels paquets tu as installés sur un système, tu peux utiliser la commande pkg info pour obtenir une liste complète des logiciels installés.

pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .

Si tu veux plus d'informations sur un paquet installé, utilise pkg info et le nom du paquet. Cela affiche les détails de l'installation du paquet dans un rapport convivial.

pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .

Tu peux voir de nombreuses informations utiles comme la version du logiciel, l'heure d'installation du logiciel, la licence du logiciel, les drapeaux de compilation, etc. Pour plus de détails, consulte la page de manuel pkg-info.

Comment supprimer des paquets

Pour supprimer ou désinstaller des paquets binaires, utilise la sous-commande pkg delete. Elle est également disponible sous la forme pkg remove.

pkg delete nginx
# or
pkg remove nginx

Tu obtiendras une liste des paquets à supprimer et l'espace qu'ils libéreront.

Si tu supprimes un paquet dont d'autres paquets dépendent, pkg supprime également les paquets qui en dépendent.

Comment verrouiller des paquets

Il peut arriver que tu veuilles qu'un paquet sur ton serveur ne soit jamais mis à jour. Lorsque tu verrouilles un paquet, pkg ne le mettra pas à niveau, ne le rétrogradera pas, ne le désinstallera pas et ne le réinstallera pas. Il applique les mêmes règles aux dépendances du paquet et aux programmes dont il dépend.

Utilise pkg lock pour verrouiller un paquet.

pkg lock openssl 

Ce paquet openssl est maintenant verrouillé.

Pour répertorier tous les paquets actuellement verrouillés sur le système, utilise le drapeau -l.

pkg lock -l 

Pour supprimer le verrouillage, utilise la commande pkg unlock.

pkg unlock openssl 

Pour verrouiller ou déverrouiller tous les paquets du système en une seule fois, utilise le drapeau -a.

pkg lock -a
pkg unlock -a

Dépôts de paquets

pkg prend en charge les dépôts de paquets, qui sont des collections de paquets nommés. Tu peux ajouter, supprimer, activer et désactiver des dépôts. Tu dois configurer chaque dépôt dans son propre fichier au format UCL. Les dépôts officiels de FreeBSD se trouvent dans le répertoire /etc/pkg. FreeBSD est livré avec le dépôt "FreeBSD" activé. Tu trouveras son fichier de configuration dans le répertoire /etc/pkg/FreeBSD.conf.

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Tu peux ajouter et supprimer des dépôts selon tes besoins. Comme /etc/pkg est réservé aux dépôts officiels de FreeBSD, tu auras besoin d'un autre répertoire. L'emplacement traditionnel est /usr/local/etc/pkg/repos. Si tu veux utiliser un autre répertoire, tu devras définir un emplacement dans pkg.conf avec l'option REPO_DIRS. Le répertoire de référentiel local n'existe pas par défaut, tu devras donc le créer avec mkdir -p /usr/local/etc/pkg/repos. Place tes propres configurations de référentiel dans ce répertoire.

Exemples de commandes pkg

Dans cette section, je vais énumérer certaines des sous-commandes les plus couramment utilisées que tu utiliseras très probablement lorsque tu administreras le serveur FreeBSD.

# Installs a package without asking any questions
pkg install -y package

# Makes a backup of the local package database
pkg backup

# Lists all installed packages
pkg info

# Shows extended information for a package
pkg info package

# Searches package repository
pkg search -i package

# Shows packages with known security vulnerabilities
pkg audit -F

# Shows which package owns the named file
pkg which file

# Removes unused packages
pkg autoremove

# Uninstalls a package
pkg delete package

# Removes cached packages from /var/cache/pkg
pkg clean -ay

# Updates local copy of the package catalog
pkg update

# Upgrades installed packages to their latest version
pkg upgrade

# Checks the integrity of all your packages
pkg check -saq

# Verifies that a package's files are unaltered
pkg check -s nginx

# Shows what files came with the package
pkg info -l nginx

# Lists non-automatic packages
pkg prime-list

Conclusion

FreeBSD met en œuvre deux technologies complémentaires pour installer des logiciels tiers : le catalogue des logiciels portés FreeBSD, pour l'installation à partir des sources, et les paquetages, pour l'installation à partir de binaires préconstruits. Mais comme FreeBSD fait évoluer le système de manière plus décisive vers une gestion universelle des paquets, tu devrais essayer de gérer les logiciels tiers avec pkg autantque possible. Évite d'utiliser les ports sauf si le logiciel que tu veux n'a pas de version empaquetée ou si tu as besoin de personnaliser les options de compilation.

Liens

Vous aimerez aussi...