Templates

Updated 25 Janvier 2021

Introduction

Les templates sont vraiment des outils fantastiques pour la customisation système.
Il n'y a pas de Calculate Linux sans ce système de templates. En développant les modèles, nous nous sommes appuyés sur nos années d'expérience dans l'administration des systèmes Linux/Unix, et le fait que nous n'ayons pas apporté de modifications significatives à la syntaxe en 10 ans prouve que nous avions fait de bons choix dès le départ.

Quels sont les modèles?

  • Pour les utilisateurs
    Calculate Linux est une distribution rolling-release.

Cela signifie qu'une fois le système installé, vous pourrez le mettre à jour en permanence tout au long de sa vie. Entre-temps, les packages peuvent changer de version, de nom et de format de fichier de configuration.
Les modèles utilisés par les utilitaires de Calculate aident à maintenir les paramètres système à jour à chaque mise à jour des packages.

  • Pour les Administrateurs
    La mise à jour des fichiers de configuration implique souvent la modification de quelques lignes seulement. Identifier les changements qui sont apportés et comprendre pourquoi ils sont faits devient difficile avec le temps. En outre, l'installation d'une nouvelle version d'un package peut écraser vos modifications précédentes. En conséquence, le seul moyen de garder votre système opérationnel est de supprimer les mises à jour ou de geler complètement vos paramètres.

Heureusement, nous avons des modèles. Ils sont intégrés au gestionnaire de paquets, impliqués dans le processus de mise à jour du fichier de configuration. Toutes les modifications apportées au système sont facilement lisibles dans les modèles, car ces derniers ne contiennent que les différences par rapport aux paramètres initiaux. Les utilitaires de Calculate fusionnent vos paramètres avec les paramètres initiaux, permettant ainsi le format des fichiers de configuration.

Fonctionnalité

  • Intégré aux principaux événements et actions du système d'exploitation effectués par les utilitaires Calculate.
  • Intégré au gestionnaire de paquets.
  • Prise en charge de la configuration pour les fichiers système et les données utilisateur.
  • Prise en charge de la syntaxe pour les formats de fichiers de configuration les plus courants.
  • Prise en charge des variables, des fonctions et des conditions.
  • Plusieurs façons d'écrire dans des fichiers, y compris l'édition sélective de fichiers de configuration.
  • Plusieurs chemins de stockage vers les modèles: dans les overlays actifs, dans les répertoires que vous spécifiez et dans /etc.

Les modèles sont des fichiers de configuration à syntaxe étoffée, qui inclut des variables, des fonctions, des expressions conditionnelles et des paramètres intégrés. Les modèles, prenant en charge tous les formats de base de la syntaxe des fichiers de configuration, peuvent modifier les paramètres donnés sans écraser le fichier. Les modèles sont utilisés partout : ils interviennent dans la configuration du système au moment de la création et tout au long des processus d'installation, de premier démarrage, de mise à jour et de configuration de la séance utilisateur. Ils participent même à la création d'une base de données LDAP.

Les modèles sont fortement intégrés au système. Les deux modifient les fichiers de configuration, les associant aux paquets concernés. Lors de la configuration d'une session utilisateur, les modèles prennent en compte les paquets installés sur le système et ne configurent que ceux-ci. Lorsque de nouveaux logiciels sont installés, ils sont également configurés au niveau utilisateur. La configuration de profils d'utilisateurs est souple est se fait en fonction de la version de Calculate Linux utilisée. Les fonctionnalités sont décrites dans les modèles mêmes.

Impossible de nier ce qu'apportent les modèles. Ainsi, l'une des principales différences entre Calculate Linux et Gentoo, la procédure de [correction et migration] (calculate_vs_gentoo), est effectivement mise en œuvre à l'aide de modèles. Au moment de la mise à jour du système, les modèles de migration sont exécutés immédiatement après la synchronisation de l'overlay avec Portage. Cela permet de s'assurer que le système recevra tous les correctifs nécessaires avant d'installer les paquets. Ainsi, le système est toujours opérationnel et les transitions entre les versions sont effectuées lorsque cela est nécessaire.

Les modèles sont gérés par l'Utilitaire Calculate. Les modèles utilisent des variables pour définir des événements d'appel et récupérer des valeurs. L'utilisation de paramètres et d'expressions conditionnelles permet d'éviter les chemins fixes dans les noms et les chemins des modèles, ce qui rend la structure de la base de données souple et adaptable. Cela implique que vous pouvez utiliser plusieurs chemins pour trier les modèles par type, ou un seul chemin où toutes les conditions sont énumérées dans l'en-tête du modèle.

Formats

La première ligne d'un modèle peut contenir l'en-tête # Calculate:

# Calculate

Elle peut être suivie de paramètres simples, de paramètres avec des valeurs et d'expressions conditionnelles, combinés en un ou plusieurs blocs conditionnels "et" (&&) ou "ou" (||).

Un modèle ne peut contenir qu'un en-tête:

# Calculate path=/usr/share/pixmaps name=faces link=/usr/share/pixmaps/calculate/breeze symbolic pkg(kde-plasma/breeze)!=&&mergepkg(x11-themes/calculate-icon-theme)>=15-r2

L'application de ce modèle créera un lien symbolique dans ~/usr/share/pixmaps/calculate/breeze, pointant vers le répertoire /usr/share/pixmaps/faces si kde-plasma/breeze et x11-themes/calculate-icon-theme version 15-r2~~ ou supérieure existent, et associera ce lien au paquet x11-themes/calculate-icon-theme.

Exemple 1: Juste un modèle

Créez un modèle de configuration pour sys-libs/ncurses. Premièrement crée et remplir le fichier du modèle, ncurses.sh:

/var/calculate/templates/ncurses.sh

# Calculate env=install ac_install_merge==on&&mergepkg(sys-libs/ncurses)!= path=/etc/profile.d comment=#
export LDFLAGS="${LDFLAGS} -ltinfo"

Réinstallez maintenant sys-libs/ncurses en exécutant :

emerge -a1 ncurses

Vérifiez que le répertoire ~/etc/profile.d~ contient bien le fichier ncurses.sh, rempli avec ce qui suit :

/etc/profile.d/ncurses.sh

#------------------------------------------------------------------------------
# Modified Calculate Utilities 3.6.4.2
# Processed template files:
# /var/calculate/templates/ncurses.sh
# For modify this file, create /etc/profile.d/ncurses.sh.clt template.
#------------------------------------------------------------------------------
export LDFLAGS="${LDFLAGS} -ltinfo"

Regardons de plus près ce format :

  • env=install Le paramètre env définit la portée des noms des variables et des fonctions. Par défaut, les variables et fonctions de base du module principal de la bibliothèque des Utilitaires Calculate sont utilisées. Vous pouvez également autoriser le module d'installation à utiliser les variables de configuration système. Pour afficher la liste des variables, exécutez @cl-core-variables-show --filter install.@ (à noter le point à la fin). Si un module est absent du système, le modèle correspondant sera ignoré.
  • ac_install_merge==on&mergepkg(sys-libs/ncurses)!= Deux expressions conditionnelles écrites sans espace et requises pour que le modèle puisse être exécuté :
  • ac_install_merge==on Vérifier la présence d'une action de configuration du paquet, nécessaire à l'exécution du modèle.
  • mergepkg(sys-libs/ncurses)!= Vérifie si le paquetage sys-libs/ncurses est installé. Renvoie également un résultat positif si @cl-setup-system@ a été exécuté.
  • chemin=/etc/profile.d Chemin d'accès au répertoire où le fichier de configuration sera conservé.
  • comment=# Puisque le format du fichier de configuration n'a pas été spécifié, il est logique d'ajouter le symbole séparateur de commentaire, afin que Calculate Utilities puisse y mettre des informations de service, y compris le chemin vers le modèle avec lequel le fichier a été configuré, et afin que, plus tard, cl-backup puisse retrouver le fichier que vous aurez modifié avec cet en-tête.

Découvrez l'intégration des modèles avec le gestionnaire de paquets, l'une de leurs principales caractéristiques. Pour ce faire, affichez et filtrez la liste des fichiers de paquets installés :

equery f sys-libs/ncurses | grep ncurses.sh

/etc/profile.d/ncurses.sh

Vous pouvez constater que le fichier créé par le modèle appartient au paquet sys-libs/ncurses.

Vérifier les fichiers de checksum:

qcheck sys-libs/ncurses

Checking sys-libs/ncurses-6.1-r2 ...
  * 4038 out of 4038 files are good

Comme vous pouvez le constater, la somme de contrôle correspond aux données du gestionnaire de paquets.

Exemple 2: Groupement de modèles

Maintenant allons un peu plus loin. Modifiez /etc/sysctl.conf pour transférer des paquets d'un réseau à l'autre. Puisque vous disposez déjà d'un modèle, regroupez les modèles pour simplifier la syntaxe. Pour ce faire, créez un répertoire avec un nom arbitraire - par exemple, ~merge - dans /var/calculate/templates :

mkdir -p /var/calculate/templates/merge

Dans ce cas, le répertoire est également un modèle. Il a ses propriétés. Pour les décrire, créez un fichier à l'intérieur, nommé .calculate_directory, et remplissez-le avec ce qui suit :

/var/calculate/templates/merge/.calculate_directory

# Calculate append=skip env=install ac_install_merge==on

Comme vous pouvez le constater, on définit la portée des variables env=install et ont vérifie que la valeur de la variable ac_install_merge==on a été copiée depuis le premier exemple. Cela signifie qu'il n'est pas nécessaire de faire cette vérification pour les modèles enregistrés dans ce répertoire. Un nouveau paramètre, append=skip, a également été ajouté. Définir ce paramètre, c'est dire au système de ne pas créer le répertoire.

Déplacez le modèle du premier exemple dans le répertoire commun :

mv /var/calculate/templates/ncurses.sh /var/calculate/templates/merge/

Pour simplifier la syntaxe :

/var/calculate/templates/merge/ncurses.sh

# Calculate mergepkg(sys-libs/ncurses)!= path=/etc/profile.d comment=#
export LDFLAGS="${LDFLAGS} -ltinfo"

Créez un nouveau modèle, sysctl.conf, avec le contenu suivant :

/var/calculate/templates/merge/sysctl.conf

# Calculate format=procmail mergepkg(sys-apps/baselayout)!= path=/etc
net.ipv4.ip_forward = 1

A noter que ce paquet fait référence à sys-apps/baselayout. Pour savoir à quel paquet appartient le fichier, exécutez :

equery b /etc/sysctl.conf

 * Searching for /etc/sysctl.conf ... 
sys-apps/baselayout-2.6-r1 (/etc/sysctl.conf)

Vous pouvez soit réinstaller sys-apps/baselayout, soit exécuter la commande suivante pour vérifier que le modèle est bien opérationnel :

cl-core-setup --pkg-name=baselayout -v -T local

* Les Utilitaires Calculate sont en train de configurer les paramètres du système baselayout ...
* Les Utilitaires Calculate ont modifié les fichiers suivants :  
 * /etc/sysctl.conf

À noter qu'un seul paramètre a été modifié dans /etc/sysctl.conf :

/etc/sysctl.conf

...
net.ipv4.ip_forward = 1
...

Faites de même pour ncurses.sh :

cl-core-setup --pkg-name=ncurses -v -T local

* Les Utilitaires Calculate configurent les paramètres système de ncurses...
* Les Utilitaires Calculate ont modifié les fichiers suivants : 
 * /etc/profile.d/ncurses.sh

Exemple 3: Les modèles clt

Pour que l'utilisation des modèles soit encore plus facile, nous avons introduit un nouveau type de modèle, le modèle clt. Ces modèles ne se trouvent pas dans un répertoire dédié, mais dans /etc+, et ont une extension .clt. Ces modèles sont faciles à utiliser car ils utilisent des valeurs de chemin et des conditions d'utilisation prédéfinies. En même temps, les modèles clt ont toutes les fonctionnalités des modèles classiques.

Par exemple, essayez de modifier la taille de la police du terminal en modifiant le modèle correspondant. Pour ce faire, copiez le fichier :

cp /etc/conf.d/consolefont /etc/conf.d/consolefont.clt

Modifiez la taille de la police :

/etc/conf.d/consolefont.clt

...
consolefont="ter-v12n"
...

Pour voir le résultat, réinstallez sys-apps/openrc, qui inclut le fichier de configuration :

emerge -a1 openrc

grep ^consolefont /etc/conf.d/consolefont

consolefont="ter-v12n"

Ce modèle réécrira complètement le fichier de configuration, sans jamais signaler qu'une nouvelle version a été créée. C'est pourquoi nous recommandons d'utiliser les modèles clt, même si vous n'en maîtrisez que certaines fonctionnalités. Plutôt que de copier l'intégralité du fichier, créez un modèle ne contenant que ces lignes-ci :

/etc/conf.d/consolefont.clt

# Calculate format=openrc
consolefont="ter-v12n"

Ce modèle fera la même chose, mais d'une manière plus simple et plus efficace. Actualisez pour voir le résultat :

emerge -a1 openrc

grep ^consolefont /etc/conf.d/consolefont

consolefont="ter-v12n"

En conséquence, une seule ligne reste inchangée, et le chemin d'accès à votre modèle aura été ajouté à l'en-tête du fichier. Bien sûr, c'est pratique, car le modèle ne répertorie que les paramètres à modifier.

Comme vous pouvez le constater, la syntaxe d'un modèle clt est assez simple.

Cela a été possible parce que les paramètres suivants étaient définis par défaut : env=install, ac_install_merge=on, path=/etc/conf.d et name=consolefont.

Conclusion

Sachez que ceci n'est qu'une brève description de ce que sont les modèles Calculate !