Linux / Commande apk : gérer les paquets et conserver les changements sur Alpine

apk, Alpine Package Keeper, est le gestionnaire de paquets d’Alpine Linux. add ajoute une demande de paquet au système, del la retire, update actualise les index et upgrade met à niveau les paquets. Les demandes explicites sont enregistrées dans /etc/apk/world ; leur conservation après redémarrage dépend aussi du mode d’installation d’Alpine.

Vérifier l’environnement, la version et les dépôts

cat /etc/os-release
apk --version
apk --help
cat /etc/apk/repositories

Ces exemples concernent Alpine, pas les fichiers APK d’applications Android. Alpine 3.23 a introduit apk-tools 3 ; les commandes courantes restent proches des versions précédentes mais certaines options et sorties diffèrent. Vérifiez l’aide du système plutôt que de supposer qu’un exemple pour une autre version s’applique exactement.

apk [OPTIONS_GLOBALES] COMMANDE [OPTIONS_DE_COMMANDE] [PAQUETS ...]

Les opérations qui modifient les paquets ci-dessous supposent une session root autorisée sur la machine. Si vous travaillez avec un compte ordinaire, utilisez le mécanisme de délégation déjà configuré, par exemple sudo ou doas. Une installation Alpine minimale ne fournit pas nécessairement sudo ; il ne faut pas supposer sa présence dans tous les conteneurs.

Le fichier repositories définit les sources. Gardez une branche et des dépôts cohérents avec votre système. Mélanger une version stable et edge/testing peut casser la résolution ou la compatibilité ; ajouter un dépôt n’est pas une correction automatique à un nom introuvable.

Chercher, lire et vérifier un paquet installé

Actualisez les index avec les privilèges appropriés, puis lisez le bilan avant de choisir un paquet :

apk update
apk search nginx
apk info nginx
apk policy nginx

update récupère les index des sources et ne met pas à niveau à lui seul les logiciels. search cherche des candidats ; info fournit les informations connues et policy aide à comparer les versions et leurs dépôts. Les informations sont plus limitées pour un paquet non installé, et les valeurs dépendent de la branche, de l’architecture et des index disponibles.

Pour contrôler l’état local d’un composant courant :

apk info -e busybox

Lorsque le paquet busybox est installé, cette commande affiche son nom et renvoie 0. L’option -e teste l’installation ; elle ne certifie ni le contenu actuel des fichiers ni le fonctionnement des commandes fournies. Avec plusieurs noms, le code de sortie représente le nombre de paquets demandés qui ne sont pas installés, selon le manuel actuel. Lisez également les diagnostics en cas d’échec de la commande.

Pour observer la liste des fichiers et les dépendances connues de busybox :

apk info -L busybox
apk info -R busybox

Les options ont leur sens propre dans apk : -R signifie ici dépendances et non suppression récursive comme dans un autre contexte. Ne transposez pas les lettres d’options entre gestionnaires de paquets.

Simuler puis ajouter le paquet souhaité

Si nginx est bien le serveur web voulu sur cette machine, examinez d’abord le plan après une actualisation correcte des index :

apk --simulate add nginx

La simulation affiche les opérations prévues sans appliquer les changements. Dans le manuel actuel, la base est ouverte en lecture seule et l’actualisation automatique des index est désactivée ; c’est pourquoi la fraîcheur des index doit être contrôlée avant la prévision. Elle ne garantit ni la disponibilité future des téléchargements ni le succès des scripts d’installation.

Si le plan convient, l’opération réelle est :

apk --interactive add nginx

--interactive demande explicitement une interaction pour la décision. Ne comptez pas sur la présence automatique d’une question dans tous les environnements : apk peut fonctionner sans interaction par défaut. Lisez les ajouts, mises à niveau et retraits avant de confirmer. Les dépendances et scripts font partie des changements, pas seulement le nom nginx.

Après réussite :

apk info -e nginx
apk info nginx
cat /etc/apk/world

world décrit l’état souhaité par des contraintes de paquets, pas l’inventaire complet de toutes les dépendances. add nginx y ajoute la demande explicite ; les dépendances nécessaires sont résolues autour de cet état. Évitez de retirer manuellement des entrées essentielles pour résoudre un conflit. Vérifiez ensuite le comportement du logiciel : un paquet enregistré ne prouve pas que son service est actif et correctement configuré.

Mettre à niveau et préparer un retrait

Pour mettre à niveau les paquets de la branche configurée, commencez par actualiser les index et examiner la prévision :

apk update && apk --simulate upgrade

Si l’actualisation échoue, la seconde commande ne s’exécute pas. Une fois les sources, le plan et les interruptions possibles évalués, l’application réelle peut être demandée séparément :

apk --interactive upgrade

Ce flux met à niveau les paquets selon les sources et contraintes présentes ; il ne définit pas une migration vers une autre branche d’Alpine. Une configuration modifiée peut donner lieu à un fichier .apk-new. Comparez-le à la configuration active pour intégrer les changements utiles au lieu de le remplacer aveuglément.

Pour prévoir le retrait du seul paquet d’exemple, utilisez :

apk --simulate del nginx

del retire la contrainte de world et résout l’état restant. Des dépendances devenues inutiles peuvent aussi être supprimées ; inversement, un paquet encore nécessaire ailleurs peut rester. Examinez les diagnostics et les noms du plan avant une suppression réelle. Un retrait ne restaure pas automatiquement toutes les données et configurations d’un état antérieur.

Comprendre --no-cache et conserver les changements

Contexte Ce qui doit être vérifié
Système installé sur disque Paquets enregistrés, données et configurations persistantes, résultat fonctionnel.
Mode diskless ou data en mémoire Sauvegarde de la configuration avec lbu et disponibilité des paquets au prochain démarrage.
Conteneur recréé depuis une image Déclaration du paquet dans la construction ou la gestion de l’image, pas seulement dans un conteneur en cours.

--no-cache empêche l’utilisation des chemins de cache locaux pour l’opération. Ce n’est ni un mode hors ligne ni une sauvegarde : les données nécessaires peuvent devoir être récupérées par réseau. Les détails des options de cache diffèrent entre apk-tools 2 et 3 ; vérifiez l’aide avant de reprendre une abréviation.

En mode diskless, une installation réussie en mémoire ne suffit pas pour le prochain démarrage. Le mécanisme de sauvegarde lbu et le cache local de paquets ont des rôles complémentaires. Suivez la procédure du support de démarrage choisi ; enregistrer world ne constitue pas une copie de tous les logiciels et de toutes les données utilisateur. Dans ces modes, le noyau et les micrologiciels peuvent aussi demander une procédure distincte.

Dans un conteneur, recréer une instance depuis l’ancienne image ne reproduit pas les changements faits seulement dans la précédente instance. Déclarez les paquets nécessaires dans la définition d’image adaptée à votre projet, puis reconstruisez et vérifiez cette image. Prévoyez séparément la persistance des données de l’application.

Le manuel utilisateur Alpine sur APK explique les commandes et world ; le guide APK du projet Alpine détaille les versions, le cache et le mode diskless. Le texte du manuel apk dans le dépôt officiel précise les options de simulation et d’interaction. Gardez les vérifications de signatures et ne forcez pas un état de dépendances incohérent pour contourner une erreur.