Başlatma, yapılandırma dosyalarına sembolik bağları kaldırabilir mi?


30

Tüm starttart config dosyalarımın versiyon kontrolü altındayım. Başlatmayı kullanmanın ideal yolu sürüm kontrol havuzumdan (ticari - önemli değil) / etc / init içine yumuşak bağlantılar oluşturmak, ancak upstart işleri göremiyor. Dosyaları depo dizininden / etc / init dizinine kopyalarsam her şey yolundadır.

Neden starttart’ın sembolik ve hatta zor linkleri kaldıramadığını bilen var mı?

Teşekkürler

Chris


1
Belki de Upstart geliştiricilerinin yumuşak bağlantıları görmezden gelmesi konusundaki tasarım kararıydı? Her neyse, havuzunuz aynı bölümdeyse /etc/init, zor linkleri kullanmayı deneyin.
Steven Pazartesi

Sabit bağlantılar denedim ve bu da işe yaramadı :-(
Chris McCauley 20:10

Topal. Nitekim sembolik bağlantılar, config yeniden yüklemek için manuel bir çağrı olmadan yok sayılır. İç çekmek. İşaretleri tercih ederim. Kullanım çantamda daha temiz. Oh iyi. Sadece dosyaları kopyalayacağım, pislik gibi.
James T Snell

Yanıtlar:


9

Upstart, sembolik bağlantıları desteklemez, çünkü önyükleme sırasında yüklenmemiş bir bölümdeki bir dosyayı gösterebilirler .

Bu konuyu kendi projemde conf dosyalarını / etc / init / myscripts içerisine koyarak ve sonra onu depodaki bir dizine bağlayarak öğrendim. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Bunu / etc / fstab dosyasına ekleyin, bağlama kalıcı olacaktır:

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

Bu etkili bir şekilde size bağlanmış dizinler verir. Upstart, conf dosyalarını diğerleri gibi ele alacaktır, çünkü / etc / init konumunda yereldirler. DVCS'niz bunları ayrıca depoda yerel dosyalar olarak da görecek, bu nedenle de onları orada depolanan diğer dosyalarda olduğu gibi ele alacaktır. Her iki dünyanın en iyisi.


49

Upstart, herhangi bir dosya değiştiğinde veya yeni bir dosya eklendiğinde yapılandırma dizinlerini inotify ile izler ve yeniden yükler. Anlaşılan bu, sembolik bağlantılar için işe yaramıyor.

Yapılandırma kullanımını el ile güncellemek için

$ initctl reload-configuration

bu benim için güvenilir bir şekilde çalışıyordu. Son zamanlarda 1.3 açılışında sadece durdurulmuş işler üzerinde çalışıyor.
jcomeau_ictx

2
Benim için / etc / init / work içinde sembolik bağlantılar var ancak sembolik bağlantı arkasındaki dosyayı değiştirirsem, dosya başlangıç ​​araçları tarafından yeniden okunmaz. Sembolik bağlantının sebep olduğunu bulmam saatlerimi aldı. Kimsenin istemediği bir önbellek gibi davranır.
peschü

1

Önceden belirtildiği üzere:

initctl reload-configuration

Ancak aşağıdaki gibi bir hata alırsanız:

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'yu çağırmalısınız:

sudo initctl reload-configuration
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.