Linux uygulamalarını / var veya / opt içine kurmalı mıyım?


83

Java ve Tomcat gibi birçok açık kaynaklı uygulama kullanıyorum. Görünüşe göre çoğu talimat benim uygulamalarımı dizinden çalıştırıyor /var. Fakat arada bir, ayrıca /optdizini de görüyorum . Ben varken, ben de görüyorum /usr/local/ve hatta /etc.

Uygulamaları bir klasöre veya diğerine ne zaman kurmalıyım? Her birinin artıları ve eksileri var mı? Lezzetin tarihi ile ilgisi var mı (Solaris vs Linux veya Red Hat vs Ubuntu)?


8
/ etc uygulamalardan ayrılmak için garip ve uygunsuz bir yer ...
user5336

İnsanları Perl modülleri gibi / etc içine koyarken gördüm. Bu garip, ama ... olur
ℝaphink

6
Her saçmalık için, savunmak için bir şampiyon var.
womble

Yanıtlar:


133

Bu sorunların standardı Dosya Hiyerarşi Standardıdır . Bu oldukça büyük bir belge. Temel olarak (ve çok kabaca), Linux'taki standart yollar:

  • /bin- /sbinİşletim sistemi için hayati öneme sahip programlar içindir, sbin yalnızca yöneticiler içindir;
  • /usr/binve /usr/sbinhayati olmayan programlar için, sbin yalnızca yöneticiler için;
  • /varprogramlar için canlı veri içindir. Önbellek verileri, biriktirme verileri, geçici veriler (olmadığında /tmp, her yeniden başlatmada silinir), vb. Olabilir ;
  • /usr/localyerel olarak kurulmuş programlar içindir. Tipik olarak, standartları takip eden, ancak işletim sistemi için paketlenmemiş olan programları barındırır, daha ziyade yönetici (örneğin, kullanan ./configure && make && make install) ve yönetici komut dosyaları;
  • /optpaketlenmemiş ve standartlara uymayan programlar içindir. Bütün kütüphaneleri programla birlikte oraya koydun. Genellikle hızlı ve kirli bir çözümdür, ancak kendiniz tarafından oluşturulan ve belirli bir yol almak istediğiniz programlar için de kullanılabilir. Kendi yolunuzu (örneğin /opt/yourcompany) içinde yapabilirsiniz ve bu durumda standart yolların bir parçası olarak kaydetmeniz teşvik edilir;
  • /etc programlar içermemeli, aksine konfigürasyonlar yapılmalıdır.

Programlarınız servis tarafından sağlanan servislere özgü ise, /srvonlar için iyi bir yer olabilir. Örneğin , dizinin yalnızca kendime eklediğim verileri ve yazılım paketlerinden gelen hiçbir şeyi içermediğinden emin olmak /srv/wwwyerine web siteleri için kullanmayı tercih ederim /var/www.

Dağılımlar arasında bazı farklılıklar vardır. Örneğin, RedHat sistemleri libexecDebian / Ubuntu sistemleri kullanmadığında dizin kullanır.

FHS çoğunlukla Linux dağıtımları tarafından kullanılır (aslında ona uygun başka bir işletim sistemi bilmiyorum). Diğer Unix sistemleri bunu takip etmiyor. Örneğin, BSD sistemleri /usr/local, Linux için geçerli olmayan paket programlar için kullanım eğilimindedir . Solaris'in çok farklı standart yolları var.

Bununla ilgili daha fazla bilgi edinmek için yukarıda bağlantı kurduğum FHS belgesini okumanızı şiddetle tavsiye ediyorum.



6
İçin +1 /srv. Git depolarım için bir yer arıyordum ve Apache içeriğimin içinde bulunmasından hoşlanmadım /var/www. /srvmükemmel bir yer gibi görünüyor.
Bay Kirpi

@Afrika, Öyleyse neden varyerine denir data?
Pacerier

@ Mr.Hedgehog, "Hoşlanmadığın" ile ne demek istiyorsun? Açıklamak ister misin?
Pacerier

@Pacerier 90'lı yıllarda size /var"çeşitli veriler" nedeniyle olduğu söylenecek . İlk günlerde Unix tek bir sürücüde ağırlandı. Yeterli olmadıklarında yeni bir tane aldılar, olduğu gibi monte ettiler /usrve tüm kullanıcı verilerini oraya taşıdılar. Ancak yeterli değildi ve eski sürücü kısa süre sonra tekrar doluydu. Böylece sistemin önyüklemeden başlayabildiği tüm ikili dosyaları yer /bindeğiştirdiler /usr/bin. Onlar sadece alan tükendi. Daha sonra kullanıcılar arasında veri paylaşmaları gerekiyordu, bu yüzden /varbunu bırakma kutusu olarak kullandılar. FHS bunun gibi eski kararlarla doludur ve bir tutam tuzla alınmalıdır.
cprn

4

optisteğe bağlı yazılım anlamına gelir. vardeğişken sistem dosyaları anlamına gelir. Bu nedenle başvurularınıza gitmeli /opt.


8
/variçindir değişen , sistem dosyalarını "çeşitli" değil.
womble

4
/ var "değişken veri dosyaları" içindir. Bunun "çeşitli sistem dosyaları" için söylenmesi belirsiz ve potansiyel olarak yanıltıcıdır. o_O Yine de "tercih" konusunda haklısın.
phoenix8

@Eduard, Peki ya / opt / var o zaman? Ve </ usr / var>, </ usr / local / var> ...
Pacerier

@ womble Bu yanlış etimoloji. FHS öyle diyor ama doğru değil. 90'lı yılların başında /varbunun “çeşitli veriler” olduğu için size söylenecek . O zamanlar okuduğum bir internet öncesi kitaptan hala notlarım var.
cprn

2

Yerel standardın ne olduğuna bağlı.

Şahsen, iyi bir sebep olmadan / var içine hiçbir şey yüklemiyorum. / Usr / local aygıtım neredeyse her zaman bir nfs ağa bağlanır, bu nedenle paketlenmemiş herhangi bir şey / opt içine yüklenir.


1
Veriler dışında, zaten ne yazarsın?
ℝaphink

1
genellikle programlar kendi öğelerini / var içine yerleştirir. Çoğunlukla satıcı tarafından sağlananlar - günlükler, bazı kütüphaneler, kontrol dosyaları, .pid dosyaları, bu tür şeyler.
David Mackintosh

2
Tam olarak aynı fikirde değilim. Kütüphaneler, eğer statiksa, içeri girmelidir /usr. Dinamik olarak oluşturulan kütüphaneleri içinde sonunda olabilir /var/libbazen ama aslında ne görmüyorum yüklemek içinde /vargörüş bir yönetici açısından. Program kapsamlı bir şekilde kullanabilir, ancak programı başlatmadan önce boş olması gerekir.
ℝaphink

1
Şu anda kasıtlı olarak / var içine kurduğum tek şey nfsen / nfdump ve bunun nedeni uygulamanın kapladığı alanın biriktirdiği tüm nfdump dosyaları olmasıdır. (Ve bu bir şekilde onu bir şekilde üretime sokan bir test kurulumu olduğu için. Öyleyse - "olağandışı sebep yok"). Ama bu kadar. Tabii ki sabit diskimi bölmediğim için / var, / opt ve / usr zaten aynı dosya sisteminde.
David Mackintosh

1
Qmail / var içine yüklenir. Bu, aleyhindeki sayısız eleştiriden biri.
staticsan
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.