====== 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 [[BugGnomeCalculator|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. * accessible directement depuis les réseaux 147.173.*.* et avec authentification de l'extérieur : il peut y avoir des paquets non-rediffusables dans le dépôt interne. * Le paquet lpmmc-repository installe les paramètres nécessaires et peut se récupérer par wget/curl à http://lpmmc-debian/lpmmc/lpmmc-repository.deb * voir la [[structure-lpmmc-debian|la structure de l'espace de développement du dépôt lpmmc-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) * lpmmc-system-update est inclus dans le paquet ''lpmmc-sysupdate'' * lpmmc-system-update peut être récupéré directement par : wget http://lpmmc-debian/lpmmc-system-update et peut servir pour une installation «from scratch» à partir d'un CD «netinst» de Debian (voir l'[[perso:jddubois:debianlocal:vmtest|Installation d'une machine de gestion du depôt]]) * 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 : * https://www.debian.org/doc/manuals/debian-faq/pkg-basics.en.htm * https://www.debian.org/doc/manuals/debian-faq/pkgtools.en.html ==== 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 : /usr/local/ * mettre des liens symboliques dans /usr/local/bin * création du paquet avec dpkg-build-deb * Voir la page [[lpmmc-dpkg-tools|Manipulation des paquets Debian]] ==== Gestion du depôt ==== * [[vmtest|Installation d'une machine de gestion du depôt]] * [[perso:jddubois:debianlocal:debianpkgs|Debianpkgs, machine virtuelle en service (container proxmox)]] ==== Installation/upgrade des postes de travail ==== * Création du [[createmasterUSB|«master» d'installation]] sur disque externe USB * Installation de postes avec le [[lpmmc-installer|script de «clonage» ''lpmmc-installer'']]