2.2 Gestion des paquets

☕ À la machine à café de CorpTech

« D’après le prestataire, tous les logiciels étaient installés. Quand on lui a demandé les numéros de version, il a répondu “les dernières ..." 🧐

Pré-requis

Votre VM doit impérativement accéder à internet pour ce chapitre. Si c'est pas le cas réglez ce problème avant d'aller plus loin.

Politique Alpine : une seule version par paquet

Alpine applique un modèle minimaliste :

  • seul le dernier build d’un paquet est conservé (rolling repository)
  • les anciennes versions disparaissent
  • l'objectif est de simplifier, sécurité, stockage minimal

Conséquence : Impossible de reconstruire à l’identique une VM plusieurs mois après si le paquet a été remplacé.

Cohérence technique d’une release

Tous les paquets d’une release sont compilés avec : - la même version de musl (librairie C) - les mêmes bibliothèques de base - les mêmes options de compilation - la même ABI (Application Binary Interface)

ABI

L’ABI définit le protocole binaire entre un programme compilé et les bibliothèques (registres, pile, symboles…). Si l’ABI change, un programme compilé pour l’ancienne ne fonctionne plus correctement : il ne parle plus le même protocole binaire.

2.2.1 Introduction (Alpine Package Keeper )

Alpine Linux utilise apk (Alpine Package Keeper) pour installer, mettre à jour et supprimer des logiciels.
Pour fonctionner correctement, apk repose sur trois notions complémentaires :

Concepts essentiels

Mirror : le serveur où sont stockés les paquets. Repository : la catégorie de paquets (main, community, testing). Release : une version stable d’Alpine rassemblant des repositories cohérents.

2.2.2 Mirror: où sont les paquets ?

Un mirror (mirr) est un serveur contenant les paquets et leurs index.
apk télécharge tout depuis cette adresse.

Exemples :

https://dl-cdn.alpinelinux.org/
https://mirror.example.org/alpine/

2.2.3 Repository — comment sont organisés les paquets ?

Un repository est une catégorie de paquets classée par niveau de stabilité: - main → paquets officiels, testés, stables - community → paquets fiables issus de la communauté - testing → paquets expérimentaux (uniquement sur edge

Note

testing = instable. Pas destiné à la production.

2.2.4 Release — quelle version d’Alpine ?

Une release est un ensemble cohérent de packages : noyau, outils système et bibliothèques tous compilés ensemble.

Deux familles de releases : - stable : v3.18, v3.19, v3.20
→ versions figées, mises à jour tous les 6 mois - edge : rolling release
→ mise à jour continue, réservée au développement

Warning

Les repositories d’une release ne sont pas compatibles avec ceux d’une autre. Ne jamais mélanger : v3.20/main + edge/main

Source Alpine : “Do not enable Main/Community from stable and edge at the same time. Mixing can break your system.”

2.2.5 Exercices à rendre

Question 1

Que se passe-t-il si apk installe un paquet compilé pour une autre release que celle de votre système ?

Question 2

Que se passe-t-il si vous activez un repository d’une autre release ?

Consigne

Votre réponse doit obligatoirement comporter : - URL (documentation Alpine) - extrait cité - votre explication

Sources officielles : 1. Repositories — https://wiki.alpinelinux.org/wiki/Repositories 2. apk — https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html 3. apk-tools — https://gitlab.alpinelinux.org/alpine/apk-tools

Commandes essentielles

apk fournit un ensemble de commandes simples pour gérer les paquets.
Voici les opérations indispensables à maîtriser.

Mise à jour de la liste des paquets

Met à jour l’index des paquets présents dans les repositories que vous avez configuré.

apk update

Note

À exécuter avant toute installation, surtout après modification de /etc/apk/repositories.

Installer un paquet

apk add nginx
apk add nano openssh-server

Télécharge et installe : - le paquet - ses dépendances - les fichiers de configuration par défaut

Warning

apk n’installe que ce qui existe dans les repositories de votre release. Si le paquet n’existe plus → erreur (politique Alpine).

Supprimer un paquet

apk del nano

Note

Contrairement aux distribution "Debian like" il n’existe pas d’équivalent à apt purge avec Alpine Linux. Alpine considère que seul un administrateur peut déterminer si un fichier de configuration doit être conservé ou non.

Handbook Alpine Linux

Dans le Handbook (section Working with apk → Removing packages) :

Source https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html

"Désinstalle le paquet sans toucher aux fichiers modifiés dans /etc."

Rechercher un paquet dans les dépôts

apk search nginx
apk search openssh

Note

Recherche uniquement dans les repositories configurés localement.

Afficher les informations sur un paquet

apk info nginx

Retourne : - version - description - dépendances - fichiers installés - licence

Pour voir les fichiers installés :

apk info -L openssh-server

Lister les paquets installés

apk info

Liste tous les paquets installés.

Mettre à jour les paquets installés

apk upgrade

Met à jour tous les paquets installés vers les versions disponibles sur les repositories configurés.

Danger

Sur Alpine stable, un apk upgrade peut :

  • casser la compatibilité d’une VM construite plusieurs mois plus tôt

  • rendre impossible la réinstallation d’un ancien paquet

À n’utiliser que si vous maîtrisez les impacts de changement de version pour vos applications.

Vérifier l’intégrité des paquets installés

apk audit

Détecte les inconsistances : - fichiers modifiés - fichiers orphelins - dépendances manquantes

Nettoyer l’espace disque

apk cache clean

Supprime les fichiers téléchargés du cache local.

Exemple complet

Installer Nginx, vérifier, lister, puis désinstaller

apk update
apk add nginx
apk info nginx
apk info -L nginx
apk del nginx

A rendre

Exercice 1

Exercice 1

Cherchez quel paquet installe la commande ssh-keygen. Donnez : - la commande utilisée - le paquet trouvé - sa version - extrait de apk info

Exercice 2

Exercice 2

Installez nginx, listez ses fichiers, puis supprimez-le proprement.

Exercice 3

Exercice 3

Expliquez, documentation à l’appui, ce que fait apk upgrade. Source obligatoire : https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html