¿Puede el administrador inicial manejar enlaces simbólicos a archivos de configuración?

30

Tengo todos mis archivos de configuración de arranque bajo control de versiones. Mi forma ideal de usar el sistema de arranque es crear enlaces suaves desde mi repositorio de control de versiones (mercurial, no es que importe) en / etc / init pero el arranque no puede ver los trabajos. Todo está bien si copio los archivos del directorio del repositorio a / etc / init.

¿Alguien sabe por qué el advenedizo no puede manejar enlaces simbólicos o incluso duros?

Gracias

Chris

Chris McCauley
fuente
1
¿Quizás fue una decisión de diseño por parte de los desarrolladores de Upstart ignorar los enlaces blandos? De todos modos, si su repositorio está en la misma partición que /etc/init, intente usar enlaces duros.
Steven Monday
Intenté enlaces duros y eso tampoco funcionó :-(
Chris McCauley
Cojo. De hecho, los enlaces simbólicos se ignoran sin una llamada manual para recargar la configuración. Suspiro. Prefiero enlaces simbólicos. Más limpio en mi caso de uso. Oh bien. Copiaré los archivos, como imbécil.
James T Snell

Respuestas:

9

Upstart no admite enlaces simbólicos porque pueden apuntar a un archivo en una partición que no se carga en el momento del arranque .

He solucionado esto en mi propio proyecto al poner los archivos conf en / etc / init / myscripts y luego vincularlos a un directorio en mi repositorio. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Agregue esto a / etc / fstab y el enlace será persistente:

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

Esto efectivamente le proporciona directorios vinculados. Upstart tratará los archivos conf como cualquier otro, porque son locales para / etc / init. Su DVCS también los verá como archivos locales en el repositorio, por lo que también los tratará como a cualquier otro archivo almacenado allí. Lo mejor de ambos mundos.

Alexander Garden
fuente
49

Upstart observa sus directorios de configuración con inotify y vuelve a cargar la configuración cuando alguno de los archivos cambia o se agrega un nuevo archivo. Aparentemente esto no funciona para enlaces simbólicos.

Para actualizar manualmente la configuración, use

$ initctl reload-configuration
Fabian Jakobs
fuente
esto solía funcionar de manera confiable para mí. últimamente en el arranque 1.3 solo funciona en trabajos que están detenidos.
jcomeau_ictx
2
Para mí, los enlaces simbólicos en / etc / init / work, pero si cambio el archivo detrás del enlace simbólico, el archivo no se vuelve a leer con las herramientas de inicio. Me llevó horas descubrir que el enlace simbólico es la razón. Actúa como un caché que nadie quiere tener.
peschü
1

Como se mencionó antes:

initctl reload-configuration

Sin embargo, si obtiene un error como el siguiente:

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")

Debes invocar el sudo:

sudo initctl reload-configuration
Karl Morrison
fuente