Debian/GNU-Linux au LPMMC : dépôt local et gestion des postes

Tout est parti du besoin de gérer l’ensemble des postes du laboratoire sous Linux et de pouvoir proposer à tous une configuration offrant les outils utiles. Donc trouver une méthode d’installation efficace et des moyens de mise à jour et d’évolution des systèmes.

Tout est parti également de la constatation qu’on ne part jamais de rien en informatique. Même une installation «from scratch» demande déjà un ordinateur fonctionnel avec un embryon de système qu’on fait évoluer vers l’objectif espéré. Et comme ça ne sert à rien de refaire ce qui a déjà été fait, l’idée de l’installation par «clonage» permet de tester une configuration et de la déployer simplement.

L'objectif a donc été d'avoir un dépôt local contenant des paquets originaux (par exemple programme de calcul spécialisé compilé à partir des sources et non disponibles sur la distribution officielle) et des paquets définissant la configuration et le paramétrage standard des postes linux du LPMMC par leur dépendances. Ce qui permet de «pousser» sur les postes des modifications de configuration, de nouvelles applications utiles à tous, des paramétrages de sécurité ou des contournements de bugs sur des applications (par exemple bug de la calculatrice gnome).

Au niveau pratique, un script lpmmc-system-update permet de «remettre en ligne» et à jour même si de «fausses manips» des utilisateurs ont un peu «cassé» la configuration standard. De même un script lpmmc-installer permet de faire une installation par clonage, ce qui permet de générer un «master» sur disque externe usb permettant l'installation/réinstallation rapide des postes.

Cela a été mis en place alors que j'était seul intervenant à gérer ce dépôt. Une organisation différente serait peut-être à mettre en place si la gestion devenait collaborative et s'adresser à un parc plus important (depôt git, boot et installation réseau…)

Cet expérience est basée sur la distribution Debian et devrait être directement applicable pour toute distribution dérivée (Ubuntu…) et adaptable à d'autres.

Jean-Daniel DUBOIS 2025/05/05

Introduction

Le dépôt interne : serveur sur container virtuel lpmmc-debian

Ce dépôt interne n'est pas un miroir partiel de la distribution Debian (il l'a été antérieurement) et ne contient que des paquets utiles pour les postes Linux du LPMMC. Les paquets de base et les mises à jour de sécurité se font à partir des dépôts standards de Debian.

Gestion des postes de travail : la commande de base lpmmc-system-update

la commande lpmmc-system-update est utilisée en administration courante pour «remettre au clair» un système…

  • réinitialise la liste des dépôts de base (Debian/ftp.fr.debian.org et LPMMC/lpmmc-debian)
  • si nécessaire télécharge et installer le paquet lpmmc-repository (la définition du dépôt LPMMC)
  • lance les mises à jour système/sécurité
  • installe le paquet lpmmc-desktop-bookworm (sauf sur les machines de calcul hostname=meditationX)
  • vérifie la présence des comptes administrateur, adlpmmc et backuppc et les crée si nécessaire (avec root password pour adlpmmc et backuppc)
  • Dans le cas d'une mise à jour “de fond” il faut relancer le script jusqu'à ce qu'il n'y ait plus rien à faire car les actions d'installation/mises à jour ne sont pas immédiatement répercutées. Cas par exemple d'un paquet d'application qui installerait un nouveau dépôt, où d'un paquet qui modifierait les options de sélection des paquets de apt.
  • Faire attention à ignorer la suppression de paquets non référencés dans les premières exécutions du script principalement si le paquet lpmmc-deskop-xxxx s'est retrouvé désinstallé.
  • Le script contient des boucles sur apt install -f / dpkg –configure -a pour gérer la reprise d'erreurs sur les installations de paquets. Parfois c'est une boucle sans fin qu'il faut arrêter par Ctrl-C. Faire ensuite des dist-upgrade à la main pour résoudre les problèmes et reprendre le cycle…
  • une fois modifié en conséquence lpmmc-system-update est aussi utilisée pour un upgrade de version (ex: lpmmc-system-update bookworm)
  • Ça aide, mais ça ne passe pas automatiquement à tous les coups…

Outils de manipulation des paquets

Paquets de dépendances : commande equivs

Le paquet equivs (paquet standard Debian) fournit deux commandes :

  • equivs-control : qui crée un squelette de fichier de configuration vide : equivs-control xxxxx.equivs (qui écrase le fichier xxxx.equivs sans prévenir !)
  • equivs-build : qui génère un paquet deb à partir du fichier xxxx.equivs

Le squelette de base a la même structure que le fichier control des paquets Debian.

Sur les paquets Debian débuts de pistes documentaires :

Paquets «maison» scripts dpkg-build-deb, dpkg-extract-deb

Deux scripts écrits autour de la commande dpkg-deb (notamment gestion des sommes de contrôle md5, des fichiers de configuration)

  • dpkg-extract-deb : à partir d'un paquet deb existant extrait l'arborescence de construction du paquet dans un répertoire du même nom.
  • dpkg-build-deb : reconstruit le paquet.

dpkg-extract-deb initialement conçu pour “bricoler” un paquet externe (modif des configurations …) permet aussi facilement de faire un squelette de dossier de paquet :

  • création d'un paquet en version 0.01 avec equivs-control puis equivs-build
  • extraction avec dpkg-extract-deb
  • configuration et création des sous dossiers (penser à supprimer le fichier .equivs…)
    • par exemple une application distribuée en binaire dans un tar.gz :
      • extraire le tar dans un sous-dossier : <package>/usr/local/<appli>
      • mettre des liens symboliques dans <package>/usr/local/bin
  • création du paquet avec dpkg-build-deb

Gestion du depôt

Installation/upgrade des postes de travail


Outils pour utilisateurs