5 votes

Emplacement pour placer le fichier EnvironmentFile du service systemd lors de la création du paquet Debian

Je suis actuellement en train de réécrire les tâches upstart pour utiliser systemd et je voulais savoir :

quel est l'endroit "par défaut" pour un EnvironmentFile ?

Il pourrait éventuellement aller dans /etc/environment

Il pourrait être avec tous les autres fichiers de service dans /etc/systemd/service, /run/systemd/system ou /lib/systemd/system mais je ne vois aucun autre EnvironmentFile à ces endroits pour aucun autre Service.

J'ai également envisagé /etc/default/ ou /etc/

Il n'y a pas d'endroit "conventionnel" documenté pour le mettre. Beaucoup des exemples que j'ai vus semblent utiliser /tmp/ ce qui n'a pas de sens car /tmp est effacé au redémarrage, et ces fichiers doivent persister pour pouvoir être référencés chaque fois que le Service est démarré ou redémarré.


Contexte : Je génère le EnvironmentFile au moment de la préinstallation (avec des scripts de maintenance) avant que le paquet Debian ne soit installé, et je sais que le fichier doit être disponible chaque fois que le service est démarré/redémarré.

5voto

Wimateeka Points 255

Quelqu'un d'autre a répondu à cette question ici sur le site Unix & Linux Stack Exchange.

(Extrait ci-dessous)


Les gens de systemd n'aiment pas les fichiers d'environnement.

Donc il n'y en a pas.

Plusieurs personnes de systemd ont déclaré, au fil des ans, que les fichiers d'environnement sont un mécanisme qu'ils ne devraient jamais avoir donné à systemd en premier lieu.

Le mécanisme natif de systemd est, après tout, le fichier d'unité de service lui-même, dans lequel les variables d'environnement sont définies avec les clés Environment=. Personnaliser l'environnement d'un service avec des variables définies par l'administrateur ou spécifiques à la machine est, à leur avis, une question d'ajout de fichiers .conf pour les unités, qui définissent d'autres variables d'environnement avec d'autres clés Environment=.

(Mais honnêtement, il n'y a vraiment aucun intérêt à essayer de convertir dynamiquement des choses en un fichier qui convient à EnvironmentFile=. […] En outre, /etc/sysconfig est une spécificité de Redhat qui devrait vraiment disparaître, tout le concept est erroné. Ajouter un nouveau /run/sysconfig/ ne ferait qu'aggraver les choses.)

Je n'aurais probablement jamais dû ajouter EnvironmentFile= en premier lieu. Les empaqueteurs ne comprennent pas que les fichiers d'unité sont sujets à une configuration d'administration et devraient être traités comme tels, et découper la configuration des fichiers d'unité en fichiers séparés EnvironmentFiles= est vraiment un jeu d'indirection non-sensique inutile.

— Lennart Poettering (2015-12-09). Interrogation concernant "EnvironmentFile". systemd-devel.

L'utilisation de EnvironmentFile= est presque toujours une mauvaise idée, et nous n'aurions probablement jamais dû ajouter cela, car cela incite les empaqueteurs à réintroduire la folie de /etc/default/ et /etc/sysconfig/ que nous essayons de supprimer.

— Lennart Poettering (2015-07-22). veuillez envisager d'avoir des variables pour un fichier d'unité entier. bug système #618. GitHub.

Contenu bonus

Dans le monde de daemontools, nous avons bien sûr des répertoires d'environnement, lus avec la commande envdir/s6-envdir. Bien que ce ne soit pas une norme ni une exigence de daemontools, une convention qu'on peut utiliser, qui est alignée avec certains outils, est que le répertoire d'environnement est nommé env et se trouve dans le répertoire du service aux côtés du programme run et d'autres éléments.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X