Bonjour Debian.
Je suis chargé d’adapter un script d’installation fonctionnant bien sous Debian Squeeze vers CentOS 7.
Le script est plutôt bien commenté, mais très long, donc pour l’instant je ne pige pas vraiment ce qu’il fait.
À quoi je dois faire attention pour ne pas me vautrer dans l’adaptation de ce script ?
Est-ce qu’il y a des trucs que je peux considérer comme étant identiques a priori et donc ne pas m’embêter avec pour gagner du temps ?
les gestionnaires de paquets ne sont pas les mêmes (apt,-get/aptitude ou dpkg pour Squeeze, dnf ou yum ou rpm pour CentOS)
les noms des paquets peuvent être différents, regarde sur https://pkgs.org/ pour vérifier les correspondances
les chemins d’installation des fichiers sont souvent différents
certains mécanismes d’installation / configuration des paquets sont spécifiques à Debian, comme debconf, dbconfig, les scripts pre/post rm et pre/post inst
sur Squeeze, l’init par défaut est sysV init, vérifie si c’est pareil sur CentOS 7 ou si c’était déjà systemd
Si le script n’est pas confidentiel et ne contient pas d’infos sensibles, à la limite poste le ici
PS: les miroirs des dépôts CentOS 7 sont encore actifs ?
Oui oui, c’est CentOS 6 et 8 qui sont obsolètes, CentOS 7 est la version en cours. EOL en 2024.
C’est un script public et libre, mais il est trop long (1800 lignes) pour être posté ici (surtout qu’il n’y a pas de balise de code - en tous cas de ce que j’ai testé - qui permette d’avoir un ascenseur interne au code de façon à ce qu’il ne prenne pas toute la place dans le message).
On peut le trouver là (mais sans coloration syntaxique).
Je sais bien que les gestionnaires de paquets sont différents, j’avoue que je n’avais pas pensé à aller voir sur pkgs.org pour la correspondance, merci.
Pour les chemins d’installation, il faut les vérifier un par un ?
En faisant un grep sur debconf, dbconfig, cela me permettra de voir tout ce qui peut poser problème ? Comment j’identifie les scripts pre/post rem et inst ?
J’avais pas pensé à l’init par défaut, qui est bien systemd sur CentOS 7, comment je repère ce qui peut poser problème ?
Surtout que je pige pas grand chose à systemd (à part taper systemctl start - ou enable - quand c’est nécessaire).
Ah oui, exact. Cela dit, 2024 ça arrive vite, ça vaut peut-être le coup de passer sur les « successeurs » de CentOS (j’ai pas trop regardé, mais je crois qu’il s’agit de Rocky Linux, notamment).
Normalement si tu mets 3 backquotes (AltGr+7) au-dessus et en dessous du code, ça devrait être bon, mais c’est vrai que même ainsi, 1800 lignes ça fera beaucoup trop.
Le script n’a pas l’air d’utiliser les gestionnaires de paquets pour installer les logiciels désirés, à la place il en récupère des archives sur le web, puis les extrait, etc. Donc ces éléments ne seront peut-être pas des problèmes.
C’est la section SysV-style INIT qui posera problème, si les fonctions définies dedans sont appelées.
S’il s’agit d’une VM ou d’un conteneur, tu peux toujours faire un instantané du système, tenter d’utiliser le script comme d’habitude, voir si ça convient, et si non, réinitialiser le système dans son état précédent.
Mais vu la complexité et l’ancienneté du script, est-ce que ça ne vaudrait pas le coup de s’en passer ? C’est pour installer quels logiciels ? Est-ce qu’il n’y a pas des méthodes plus à jour et adaptées à CentOS 7 ?
Ben d’après les auteurs non…
D’ailleurs je ne trouve pas marionnet dans les packets CentOS 7.
Ils m’ont demandé de leur envoyer mon script si j’arrive à l’adapter.
Comme dit dans le message précédent, d’après les auteurs, non.
Il y en aura une quand je l’aurais réalisée, en gros.
C’est la méthode officielle pour installer Marionnet, si on ne veut pas prendre leur image VirtualBox Debian Squeeze toute prête (et on m’a demandé de mettre Marionnet sur du CentOS 7 avec KDE).
Bon j’ai commencé par tester sur une Debian Buster puisqu’il y a encore un paquet Marionnet, histoire d’avoir un point de comparaison (je n’ai jamais utilisé ce logiciel).
Dans la configuration post-installation ils disent de rajouter des lignes dans /etc/rc.local qui n’existe pas dans Buster (si je comprends bien, rc.local est pour sysvinit et pas systemd).
Je suis en train de regarder la doc sur comment on gère rc.local sur les versions qui utilisent systemd (dans /etc/ j’ai bien rc0.d, rc1.d, …rc6.d, rcS.d, c’est rc.local qui n’existe pas), mais est-ce que c’est une bonne idée ou bien je devrais abandonner rc.local et tenter de trouver comment lancer le daemon marionnet depuis systemd ?
Les chiffres après rc correspondent aux modes, ou run levels du système, sous sysV. Par exemple, le run level 3 correspond au mode multi-utilisateur avec la couche réseau disponible, mais pas encore de serveur d’affichage, si tant est que le système en ait un.
Du coup tu peux mettre ton script dans le répertoire /etc/rc5.d/, ça devrait être bon.
Sous systemd c’est plutôt les targets, le mode multi-utilisateurs est multi-user.target. Voir ici pour plus d’explications et une table de correspondance entre les run levels sysV et les targets systemd.
Puisque CentOS 7 (comme Buster) utilise systemd, autant partir directement là-dessus, ce sera toujours ça de moins à faire. systemd est rétrocompatible avec les scripts de démarrage sysV, mais j’ignore pour combien de temps la rétro compatibilité sera assurée.
Tu peux commencer par faire la gestion du démon à la sauce sysV, tout en le gérant avec les commandes systemd que donne @Zargos , pour vérifier le bon fonctionnement. D’ailleurs systemd aura probablement créé un fichier « à la systemd » à partir du script rc, tu pourras le voir avec systemctl cat marionnet