Назад | Перейти на главную страницу

Может ли выскочка обрабатывать символические ссылки на файлы конфигурации?

У меня все файлы конфигурации выскочки находятся под контролем версий. Мой идеальный способ использовать выскочку - создать программные ссылки из моего репозитория контроля версий (меркуриального - не то чтобы это важно) в / etc / init, но выскочка не видит задания. Все нормально, если скопировать файлы из каталога репозитория в / etc / init.

Кто-нибудь знает, почему выскочка не может обрабатывать символические или даже жесткие ссылки?

Спасибо

Крис

Upstart следит за своими каталогами конфигурации с помощью inotify и перезагружает конфигурацию при изменении любого из файлов или добавлении нового файла. По-видимому, это не работает для символических ссылок.

Чтобы обновить конфигурацию вручную, используйте

$ initctl reload-configuration

Upstart не поддерживает символические ссылки, потому что они может указывать на файл в разделе, который не загружается во время загрузки.

Я обошел это в моем собственном проекте, поместив файлы conf в / etc / init / myscripts и затем привязав их к каталогу в моем репозитории. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Добавьте это в / etc / fstab, и привязка будет постоянной:

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

Это фактически дает вам жестко связанные каталоги. Upstart будет обрабатывать файлы conf как любые другие, поскольку они являются локальными для / etc / init. Ваш DVCS также будет видеть их как локальные файлы в репо, поэтому он также будет обрабатывать их, как и любые другие файлы, хранящиеся там. Лучшее из обоих миров.

Как упоминалось ранее:

initctl reload-configuration

Однако если вы получите следующую ошибку:

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

Вы должны вызвать sudo:

sudo initctl reload-configuration