/ Etc ve / usr / local / etc arasındaki fark nedir


24

Çok sayıda uygulama verisinin depolanması gereken bir arka plan programı geliştiriyorum ve sistemimde (Fedora 15) bir /usr/local/etcdizin olduğunu fark ettim .

Arka planımı yüklemeye karar verdim /usr/local/binve config dosyalarım için bir yere ihtiyacım var.

Bunu Wikipedia'da görmedim . Bu standart değil mi, yoksa /usr/local/binyapılandırma dosyalarını depolamak için yüklenen programların standart yeri mi?

Sebebi, bunu sys-yöneticilerine pazarlamak ve bunun gibi bir şeyi yanlış yapmak harika bir satış noktası değil ...


2
Doğrudan altına sokmamak için herhangi bir sebep var /etc/myappmı? Bir konfigürasyonu değiştirmek isteseydim, ilk bakacağım yer orası olurdu.
new123456

@ new123456- Kişisel olarak config dosyalarını ikili dosyaya (örneğin /usr/local/bin-> /usr/local/etc) yakın tutma fikrini seviyorum , ancak bu durumda sözleşmeler kazanıyor.
Beatgammit

Yanıtlar:


24

/usr/localgenellikle kaynaktan yapılan uygulamalar içindir. yani, paketlerimin çoğunu bir şey kullanarak kurarım apt, ancak dağıtımımın bir parçası olmayan bir şeyin ya da bir yazılımın daha yeni bir sürümünü indirirsem, kaynaktan derler ve her şeyi `/ usr / local 'hiyerarşisine koyarım.

Bu, dağılımın geri kalanından ayrılma sağlar.

Eğer başkaları için yazılım parçası gelişmekte ediyorsanız, bu yüzden insanların istediği hiçbir yerinde monte edilebilmesi tasarlarsak gerekir, ancak normal varsayılan gerektiğini FHS onlar için öneği sistem dizinleri belirtilen /usr( /etc, /usr/binvs.)

yani /usr/local, kişisel kullanımınız içindir, yazılımınızı kurabileceğiniz tek yer orası olmamalıdır.

FHS'yi iyi bir şekilde okuyun ve kaynağınızın herhangi bir yere kurulmasına ve kurulmasına izin vermek için standart Linux araçlarını kullanın; böylece çeşitli dağıtımlar için paket oluşturucular, dağıtımları için bunları gerektiği gibi yapılandırabilir ve kullanıcılar /usr/local istedikleri zaman içine koyabilirler. veya eğer isterlerse düzenli sistem dizinleri.


Evet, özelleştirmeye izin vermenin iyi olduğunu düşünüyorum, ancak /usr/local/etcbu tür programlar için yapılandırma dosyaları için standart olup olmadığını merak ediyordum .
Beatgammit

/ usr / local / etc, arka planınızı kaynağından oluştursaydım seçebileceğim bir şeydir, ancak / etc, arka planınızı debian veya Ubuntu ile paketlemişse birinin seçeceği yerdir.
EightBitTony

4
Gerçekte GNU standartları, paketi yerel kaynaklara çevirir çünkü onu kaynaktan yapan insanlar genellikle nerede olduğunu belirtmezler. Dağıtımlar, paketlediğinde / oluştururken yerel olmayan yolla değiştirir.
psusi

@ psusi- İyi nokta, bunu varsayılan yapmak için emin olacağım. Belki de make install'ımın root veya normal kullanıcı olarak çalıştırıldığını algılayacağım. Kök ise, varsayılan olarak / usr / local, eğer kullanıcı ise kullanıcıların ana dizinine gideceğim. Ayrıca yapılandırma ayarları ekleyeceğim.
beatgammit

@ EightBitTony- Farklı kuralları olan başka platformlar var mı? Zaten farklı platformlar için farklı başlatma komut dosyaları hazırlıyorum (başlatma, sistemd, init).
beatgammit

7

Çok kısa bir cevap

/ etc, işletim sisteminiz tarafından yapılandırma dosyaları için kullanılır.

/ usr / local / etc, config dosyalarınız için ve ek olarak kurulu olan yazılımınız tarafından kullanılabilir.


4

/usr/local/etcLinux dünyasında nadiren kullanılır. Ama karar mağaza yapılandırma dosyalara olsun /etc, /usr/local/etcya da başka bir yerde, genellikle derleme zamanında yapılır (ve genellikle bir komut satırı seçeneği veya ortam değişkeni aracılığıyla geçersiz kılınan olabilir). Derleme sırasında varsayılanın ne olduğu hiç önemli değil, sadece ayarının kolay olduğundan emin olun (genellikle --sysconfdirautoconf'u izleyerek). Eğer arka planınız bir dağıtım için paketlenmişse, çalıştırılabilir /usr/sbin(kaynağından inşa ederken varsayılan /usr/local/sbin) ve altındaki konfigürasyona girilir /etc.

Bunun /etc“birçok uygulama verisi” için yer olmadığını unutmayın . Bu içine gider /var. Kaynağından bina olabilir varsayılan /var/local/mydaemonveya /var/lib/mydaemon; Yine kaynaktan bir bina oluştururken hiçbir şekilde temerrüt için güçlü bir sözleşme yoktur. Derleme zamanı varsayılanını (tipik olarak configure --localstatedir) ve çalışma zamanı varsayılanını (bir yapılandırma dosyasındaki bir ayar ile, muhtemelen bir komut satırı seçeneği veya ortam değişkeniyle) değiştirmenin bir yolu olmalıdır.


/usr/local/etcÇok sık kullanılmamasının bir nedeni var mı ? Config dosyalarını ikili sistemle aynı seviyede tutmak fikrini seviyorum.
Beatgammit

1
@tjameson Yaygın bir neden olup olmadığını bilmiyorum. BSD bu şekilde yapar. Bir yönetici olarak, tüm yapılandırma dosyaları (içinde malzeme aksine yedeklenmiş ve değişim-kontrol edilmelidir böyle binve libaynı yerde canlı ve böylece hangi yeniden yüklenebilir).
Gilles 'SO- kötülük yapmayı bırak'

1

Bir Arch kullanıcısı olarak, / usr / local komutunu tamamen kullanmazdım ve konfigürasyon için just / etc komutunu kullanırdım. Kaynağından yüklerken, ben varken küçük bir PKGBUILD dosyası yazmayı tercih ediyorum ve muhtemelen gelecekte diğerleri için ve kendim için başka bir bilgisayarda Arch User Repository'e (AUR) yükleyeceğim. AUR'daki paketlerin sayısına ve bunların yaratılma hızlarına bakılırsa, bu şekilde düşünerek yalnız değilim. Bu, herkes için bir paketin kaynaktan kurmak zorunda kalmayacağı ve / usr / local gibi eski konumlardan kaçınabilmesi yerine, bir paketin bulunma şansını arttırır.

Debian, / usr / local'a bir şey yüklemek yerine, kaynağın bir paketini oluşturma fikrini de beğeniyor , dolayısıyla checkinstall gibi programlar .

Kurmak istediğiniz kaynağın bir paketini oluşturmak, dosyaların nerede olduğunu takip etmenin ve bazılarının başka bir paket veya başka bir "make install" tarafından tutarsız bir şekilde üzerine yazılmadığından emin olmanın iyi bir yoludur. "Make uninstall" ile kaldırmak iyi bir çözüm değildir. Hangi sürümün kurulduğuna ilişkin bilgi, modern paket yöneticilerinin takip etmekte iyi oldukları bir başka şeydir.

Ben sadece / usr / local tamamen terk ederdim. Paket yüklemek için değil (sistem genelindeki dizinler daha uygundur) herhangi bir şey koymak için iyi bir yer değil kullanıcılar için değil.

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.