Parvenu à gérer les liens symboliques vers les fichiers de configuration?

30

J'ai tous mes fichiers de configuration parvenu sous contrôle de version. Ma façon idéale d'utiliser upstart est de créer des liens logiciels à partir de mon référentiel de contrôle de version (mercurial - ce n'est pas important) dans / etc / init mais upstart ne voit pas les travaux. Tout va bien si je copie les fichiers du répertoire du référentiel dans / etc / init.

Quelqu'un sait-il pourquoi un parvenu échoue à gérer les liens symboliques ou même durs?

Merci

Chris

Chris McCauley
la source
1
Peut-être était-ce une décision de conception de la part des développeurs Upstart d'ignorer les liens logiciels? Quoi qu'il en soit, si votre référentiel se trouve sur la même partition que /etc/init, essayez d'utiliser des liens matériels.
Steven lundi
Liens durs essayés et cela n'a pas fonctionné non plus :-(
Chris McCauley
Boiteux. En effet, les liens symboliques sont ignorés sans appel manuel pour recharger la configuration. Soupir. Je préfère les liens symboliques. Nettoyant dans mon cas d'utilisation. Tant pis. Je vais juste copier les fichiers, comme jerk.
James T Snell

Réponses:

9

Upstart ne prend pas en charge les liens symboliques car ils peuvent pointer vers un fichier sur une partition qui n'est pas chargée au démarrage .

J'ai contourné cela dans mon propre projet en plaçant les fichiers conf dans / etc / init / myscripts puis en les liant à un répertoire dans mon référentiel. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Ajoutez ceci à / etc / fstab et la liaison sera persistante:

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

Cela vous donne effectivement des répertoires liés en dur. Upstart traitera les fichiers conf comme n'importe quel autre, car ils sont locaux dans / etc / init. Votre DVCS les verra également comme des fichiers locaux dans le référentiel, il les traitera donc également comme tous les autres fichiers qui y sont stockés. Le meilleur des deux mondes.

Alexander Garden
la source
49

Upstart surveille ses répertoires de configuration avec inotify et recharge la configuration lorsque l'un des fichiers change ou qu'un nouveau fichier est ajouté. Apparemment, cela ne fonctionne pas pour les liens symboliques.

Pour mettre à jour manuellement la configuration, utilisez

$ initctl reload-configuration
Fabian Jakobs
la source
cela fonctionnait de manière fiable pour moi. récemment sur upstart 1.3, il ne fonctionne que sur les travaux qui sont arrêtés.
jcomeau_ictx
2
Pour moi, les liens symboliques dans / etc / init / work mais si je change le fichier derrière le lien symbolique, le fichier n'est pas relu par les outils parvenus. Il m'a fallu des heures pour découvrir que le lien symbolique en était la raison. Il agit comme un cache que personne ne veut avoir.
peschü
1

Comme mentionné précédemment:

initctl reload-configuration

Cependant, si vous obtenez une erreur comme celle-ci:

initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Vous devez invoquer le sudo:

sudo initctl reload-configuration
Karl Morrison
la source