5. /var Hiyerarşisi

5.1. Amaç

/var /var, değişken veri dosyalarını içerir. Bunlara kuyruk dizinleri ve dosyaları, yönetim ve günlükleme verileri ve gelip geçici dosyalar dahildir.

/var hiyerarşisinin bazı bölümleri farklı sistemler arasında paylaşılamaz. Örneğin, /var/log, /var/lock ve /var/run. Diğer bölümler paylaşılabilir, özellikle /var/mail, /var/cache/man, /var/cache/fonts ve /var/spool/news.

/var, /usr'yi salt okunur olarak bağlamayı mümkün kılmak için burada belirtilmiştir. Sistem çalışması sırasında (kurulum ve yazılım bakımının aksine) /usr'ye yazılan her şey /var içinde olmalıdır.

/var ayrı bir bölüm yapılamazsa, genellikle /var'ın kök bölümden çıkarılıp /usr altına taşınması tercih edilir. (Bu bazen kök bölümün boyutunu küçültmek için veya kök bölümde alan azaldığında yapılır.) Ancak, /usr ile /var arasında bağ kurulmamalıdır çünkü bu, /usr ve /var'ın ayrışmasını zorlaştırır ve isim çakışması olasılığı ortaya çıkar. Bunun yerine, /var/usr/var'a bağlamak gerekir.

Uygulamaların genelde /var'ın en üst düzeyine dizin eklememesi gerekir. Bu tür dizinler, yalnızca sistem çapında bir anlamı varsa ve FHS posta listesine danışılarak eklenmelidir.

5.2. Gereksinimler

Aşağıdaki dizinler veya bu dizinlere sembolik bağların /var içerisinde bulunması gereklidir:

Dizin Açıklama
cache Uygulamaların önbellek verileri
lib Değişken durum bilgileri
local /usr/local için değişken veri
lock Kilit dosyaları
log Günlük dosyaları ve dizinleri
opt /opt için değişken veri
run Çalışan süreçlerle ilgili veriler
spool Uygulamaların kuyruk verileri
tmp Sistem yeniden başlatmaları arasında korunan geçici dosyalar

Bazı dizinler, tarihsel ve/veya yerel uygulamalarla çelişeceklerinden, bazı yeni uygulamalar tarafından keyfi olarak kullanılmamaları gerektiği anlamında 'ayrılmıştır'. Bunlar:

/var/backups
/var/cron
/var/msgs
/var/preserve

5.3. Özel Seçenekler

İlgili alt sistem kurulu ise aşağıdaki dizinler veya bu dizinlere sembolik bağların /var içerisinde bulunması gerekir:

Dizin Açıklama
account Süreç hesaplarının günlükleri (seçimlik)
crash Sistem çökme dökümleri (seçimlik)
games Değişken oyun verisi (seçimlik)
mail Kullanıcı posta kutusu dosyaları (seçimlik)
yp Ağ Bilgi Hizmeti (NIS) veritabanı dosyaları (seçimlik)

5.4. /var/account

5.4.1. Amaç

Bu dizin, geçerli etkin süreç hesaplarının günlüklerini ve bileşik süreç kullanım verilerini (bazı UNIX benzeri sistemlerinde lastcomm ve sa tarafından kullanıldığı gibi) tutar.

5.5. /var/cache

5.5.1. Amaç

/var/cache, uygulamalardan önbelleğe alınan veriler için tasarlanmıştır. Bu tür veriler, yerel olarak zaman alıcı G/Ç veya hesaplamanın sonucunda oluşturulur. Uygulama, verileri yeniden oluşturabilmeli veya geri yükleyebilmelidir. /var/spool'dan farklı olarak, önbelleğe alınan dosyalar veri kaybı olmadan silinebilir. Veriler, uygulama çağrıları ve sistemin yeniden başlatılması arasında geçerli kalmalıdır.

/var/cache altında bulunan dosyaların süresi uygulamaya özel bir şekilde, sistem yöneticisi tarafından veya her ikisi tarafından da doldurulmuş olabilir. Uygulama, bu dosyaları (genellikle disk alanı yetersizliği nedeniyle) elle silinmesinden sonra her zaman kurtarabilmelidir. Önbellek dizinlerinin veri biçemi için başka herhangi bir gereklilik yoktur.

Gerekçe

Önbelleğe alınan veriler için ayrı bir dizinin varlığı, sistem yöneticilerinin /var içindeki diğer dizinlerden farklı disk ve yedekleme politikaları belirlemesine olanak tanır.

5.5.2. Özel Seçenekler

Dizin Açıklama
fonts Yerel olarak üretilmiş yazı tipleri (seçimlik)
man Yerel olarak biçemlenmiş kılavuz sayfaları (seçimlik)
www WWW vekil veya önbellek verileri (seçimlik)
<paket> Pakete özgü önbellek verileri (seçimlik)

5.5.3. /var/cache/fonts

5.5.3.1. Amaç

Dinamik olarak oluşturulmuş tüm yazı tiplerini depolamak için /var/cache/fonts dizini kullanılmalıdır. Özellikle, mktexpk tarafından otomatik olarak oluşturulan tüm yazı tiplerinin /var/cache/fonts dizininin uygun şekilde adlandırılmış alt dizinlerinde bulunması gerekir.[39]

5.5.3.2. Özel Seçenekler

Diğer dinamik olarak oluşturulmuş yazı tipleri de bu ağaca, /var/cache/fonts dizininin uygun şekilde adlandırılmış alt dizinlerine yerleştirilebilir.

5.5.4. /var/cache/man

5.5.4.1. Amaç

Bu dizin, /usr bölümünü salt okunur bağlayan, ancak yerel olarak biçimlendirilmiş kılavuz sayfalarının önbelleğe alınmasına da izin vermek isteyenler için standart bir konum sağlar. /usr bölümünü yazılabilir olarak bağlayanlar ise (örneğin, tek kullanıcılı kurulumlar) /var/cache/man ağacını kullanmamayı tercih edebilir ve biçimlendirilmiş man sayfalarını doğrudan /usr/share/man altındaki cat<bölüm> dizinlerine yazabilir. Çoğu kurulumun bunun yerine aşağıdaki seçeneklerden birini kullanması önerilir:

  • Biçimlendirilmemiş sürümlerle birlikte tüm kılavuz sayfaları önceden biçimlendirilebilir.

  • Biçimlendirilmiş kılavuz sayfalarının önbelleğe alınmasına izin vermeyip biçimlendirmenin her kılavuz sayfasını açılışında yapılması zorunlu kılınabilir.

  • Biçimlendirilmiş kılavuz sayfalarının /var/cache/man dizininde yerel olarak önbelleğe alınmasına izin verilebilir.

/var/cache/man yapısının çoklu kılavuz sayfası hiyerarşilerini fiilen çoklu dil desteği olasılığıyla yansıtması gerekir

Normalde <yol>/man/<yerel>/man<bölüm> dizininde görünen biçimlendirilmemiş kılavuz sayfalarından biri verildiğinde, biçimlendirilmiş kılavuz sayfalarının yerleştirileceği dizin /var/cache/man/<catyolu>/<yerel>/cat<bölüm> olur. Buradaki <catyolu>, baştaki usr ve/veya sondaki share yol bileşenleri kaldırarak <yol> bileşeninden türetilmiştir. (<yerel> bileşeninin eksik olabileceği unutulmamalıdır.)[40]

/var/cache/man altına yazılan kılavuz sayfaları, sonunda kaynak man hiyerarşisindeki önceden biçimlendirilmiş uygun dizinlere aktarılabilir veya süresi dolmuş olabilir. Kaynak man hiyerarşisindeki aynı şekilde biçimlendirilmiş man sayfalarına bir süre erişilmezse onların da süreleri dolmuş olabilir.

Önceden biçimlendirilmiş kılavuz sayfaları sistemle birlikte salt okunur ortamda (örneğin bir CD-ROM) geliyorsa, kaynak man hiyerarşisine kurulmaları gerekir (örn. /usr/share/man/cat<bölüm>). /var/cache/man biçimlendirilmiş kılavuz sayfaları için yazılabilir önbellek olarak ayrılmıştır.

Gerekçe

Bu standardın 1.2 sürümünde, bu hiyerarşi için /var/catman belirlenmişti. Yol, biçimlendirilmiş kılavuz sayfalarının dinamik doğasını daha iyi yansıtmak için /var/cache altına taşındı. PostScript, HTML veya DVI gibi "cat" dışındaki sonradan işlenmiş biçimleri içerecek şekilde hiyerarşinin geliştirilmesine izin vermek için dizin adı man olarak değiştirildi.

5.6. /var/crash

5.6.1. Amaç

Bu dizin, sistem kilitlenme dökümlerini tutar. Standardın yayın tarihi itibariyle, sistem çökme dökümleri Linux altında desteklenmiyordu, ancak FHS ile uyumlu olabilecek diğer sistemler tarafından desteklenebilir.

5.7. /var/games

5.7.1. Amaç

/usr içindeki oyunlarla ilgili tüm değişken veriler buraya yerleştirilmelidir. Daha önce /usr altında bulunan değişken veriler /var/games altında tutulmalı; yardım metni, seviye açıklamaları vb. duruk veriler, /usr/share/games gibi başka bir yerde kalmalıdır.

Gerekçe

Bu standardın 1.2 sürümündeki gibi /var/lib altında bırakmak yerine /var/games'e artık kendi hiyerarşisi verilmiştir. Bu kayırma, yedekleme stratejilerinin, izinlerin ve disk kullanımının yerel olarak denetlenmesine ve ayrıca konaklar arası paylaşıma izin verilmesine ve /var/lib'deki karmaşanın azaltılmasına olanak tanır. Ek olarak, /var/games, BSD tarafından geleneksel olarak kullanılan yoldur.

5.8. /var/lib

5.8.1. Amaç

Bu hiyerarşi, uygulamalar veya sistemle ilgili durum bilgilerini tutar. Durum bilgisi, uygulamaların çalışırken değiştirdiği ve belirli bir konağa ait olan verilerdir. Kullanıcıların, bir paketin çalışmasını yapılandırmak için /var/lib'deki dosyaları değiştirmesi hiçbir zaman gerekmemeli ve verileri depolamak için kullanılan özel dosya hiyerarşisi, normal kullanıcılardan korunmalıdır.[41]

Durum bilgisi genellikle bir uygulamanın (veya birbiriyle ilişkili bir grup uygulamanın) durumunu, çağrılar arasında ve aynı uygulamanın farklı örnekleri arasında korumak için kullanılır. Durum bilgileri genellikle yeniden başlatmanın ardından geçerli kalmalı, günlük çıktısı olmamalı ve veriler bekletilmemelidir.

Bir uygulama (veya birbiriyle ilişkili uygulamalar grubu), verileri için bir /var/lib altındaki bir dizini kullanmalıdır. Bir alt dizine ihtiyaç duymayan durum dosyalarının kullanımına ayrılmış /var/lib/misc adında bir alt dizin vardır; diğer alt dizinler, yalnızca söz konusu uygulama dağıtımda yer alıyorsa bulunmalıdır.[42]

/var/lib/<isim>, dağıtım paketleme desteğinin tamamı için kullanılması gereken konumdur. Farklı dağıtımlar elbette farklı isimler kullanabilir.

5.8.2. Gereksinimler

Aşağıdaki dizinler veya bu dizinlere sembolik bağların /var/lib içerisinde bulunması gereklidir:

Dizin Açıklama
misc Çeşitli durum verileri

5.8.3. Özel Seçenekler

İlgili alt sistem kurulu ise aşağıdaki dizinler veya bu dizinlere sembolik bağların /var/lib içerisinde bulunması gerekir:

Dizin Açıklama
<düzenleyici> Düzenleyici yedekleme ve durum dosyaları (seçimlik)
<pktaracı> Paketleme destek dosyaları (seçimlik)
<paket> Paketler ve alt sistemler için durum verileri (seçimlik)
color Renk yönetim bilgileri (seçimlik)
hwclock Donanım saati durum dizini (seçimlik)
xdm X ekran yöneticisi değişken verileri (seçimlik)

5.8.4. /var/lib/<düzenleyici>

5.8.4.1. Amaç

Bu dizinler, (elvis, jove, nvi gibi) bir düzenleyicinin beklenmedik bir şekilde sonlandırılmasıyla oluşturulan kaydedilmiş dosyaları içerir.

Diğer düzenleyiciler, çökme-kurtarma dosyaları için bir dizin gerektirmeyebilir, ancak düzenleyici çalışırken diğer bilgileri depolamak için iyi tanımlanmış bir yer gerekli olabilir. Bu bilgi /var/lib altındaki bir alt dizinde saklanmalıdır (örneğin, GNU Emacs kilit dosyalarını /var/lib/emacs/lock içine yerleştirir).

Gelecekteki editörler çökme-kurtarma dosyalarının ve kilit dosyalarının ötesinde ek durum bilgileri gerektirebilir — bu bilgiler ayrıca /var/lib/<düzenleyici> altına yerleştirilmelidir.

Gerekçe

Önceki Linux sürümleri ve tüm ticari satıcılar, vi ve benzerleri için /var/preserve dizinini kullanmaktadır. Ancak, her düzenleyici bu çökme-kurtarma dosyaları için kendi biçimini kullanır, dolayısıyla her düzenleyici için ayrı bir dizin gerekir.

Düzenleyiciye özgü kilit dosyaları, genellikle /var/lock'ta ve dolayısıyla /var/lib altında depolanan aygıt veya kaynak kilit dosyalarından oldukça farklıdır.

5.8.5. /var/lib/color

5.8.5.1. Amaç

Bu dizin, dinamik olarak yüklenen ICC renk yönetimi dosyalarının ana dizinidir. Bu dizine, /usr/share/color dizinine uygulanan kurallar uygulanır.

5.8.6. /var/lib/hwclock

5.8.6.1. Amaç

Bu dizin /var/lib/hwclock/adjtime dosyasını içerir.

Gerekçe

FHS 2.1'de, bu dosya /etc/adjtime idi, fakat hwclock tarafından güncellendiğinden dosyanın yeri açıkça yanlıştı.

5.8.7. /var/lib/misc

5.8.7.1. Amaç

Bu dizin, /var/lib içindeki bir alt dizine yerleştirilmemiş değişken verileri içerir. İsim alanı çakışmalarını önlemek için bu dizinde nispeten benzersiz adlar kullanılmaya çalışılmalıdır.[43]

5.9. /var/lock

5.9.1. Amaç

Kilit dosyaları /var/lock dizin yapısında saklanmalıdır.

Evvelce /usr/spool/locks veya /usr/spool/uucp'de bulunan seri port aygıt kilit dosyaları gibi birden fazla uygulama tarafından paylaşılan aygıtlar ve diğer kaynaklar için kilit dosyaları artık /var/lock altında saklanmalıdır. Kullanılması gereken adlandırma kuralı "LCK.." önekinin ardından aygıtın temel adının gelmesi biçemindedir. Örneğin, /dev/ttyS0'ı kilitlemek için "LCK..ttyS0" dosyası oluşturulur.[44]

Bu tür kilit dosyalarının içeriği için kullanılan biçim, HDB UUCP kilit dosyası biçimi olmalıdır. HDB biçemi, süreç kimliğini (PID), satır sonu karakteri ile sonlanan on baytlık ASCII ondalık sayı dizgesi olarak saklamaktır. Örneğin, 1230. süreç bir kilit dosyası tutuyorsa, bu dosya on bir karakter içerecektir: boşluk, boşluk, boşluk, boşluk, boşluk, boşluk, bir, iki, üç, sıfır ve satır sonu.

5.10. /var/log

5.10.1. Amaç

Bu dizin çeşitli günlük dosyaları içerir. Günlüklerin çoğunlukla bu dizine veya uygun bir alt dizine yazılmalıdır.

5.10.2. Özel Seçenekler

İlgili alt sistem kuruluysa, aşağıdaki dosyalar veya bu dosyalara sembolik bağların /var/log içerisinde bulunması gereklidir:

Dosya Açıklama
lastlog her kullanıcının son oturumunun kaydı
messages syslogd sistem iletileri
wtmp tüm oturum açma ve kapama kayıtları

5.11. /var/mail

5.11.1. Amaç

Posta kuyruğu /var/mail altında erişilebilir olmalı ve posta kuyruğu dosyaları <kullanıcı> biçeminde adlandırılmalıdır.[45]

Bu konumdaki kullanıcı posta kutusu dosyaları, standart UNIX posta kutusu biçeminde depolanmalıdır.

Gerekçe

FHS'yi hemen hemen her UNIX dağıtımıyla aynı hizaya getirmek için bu dizinin /var/spool/mail olan mantıksal konumu değiştirildi. Tek bir /var/mail genellikle birden çok konak ve birden çok UNIX dağıtımı arasında paylaşıldığından (NFS kilitleme sorunlarına rağmen) bu değişiklik birlikte çalışabilirlik için önemlidir.

Posta kuyruğunu fiziksel olarak bu konuma taşımaya gerek olmadığına dikkat etmek önemlidir. Ancak, /var/mail'i kullanmak için uygulamaların ve başlık dosyalarının değiştirilmesi gerekir.

5.12. /var/opt

5.12.1. Amaç

/opt içindeki paketlerin değişken verileri /var/opt/<altdizin>'e kurulmalıdır; burada <altdizin>, /etc içindeki başka bir dosyanın yerini aldığı durumlar dışında, bir eklenti yazılım paketinden gelen duruk verilerin depolandığı /opt içindeki alt ağacın adıdır. /var/opt/<altdizin> içeriğinin yapılandırılması ile ilgili herhangi bir düzenleme yoktur.

Gerekçe

/opt gerekçesine bakınız.

5.13. /var/run

5.13.1. Amaç

Bu dizin, bir zamanlar, önyükleme sonrası sistemi açıklayan sistem bilgisi verileri için tasarlanmıştı. Bu işlevler artık /run'a taşınmıştır; bu dizin, bu belirtimin daha eski bir sürümünü kullanan sistemler ve yazılımlarla uyumluluk için mevcuttur.

5.13.2. Gereksinimler

Genel olarak, /run gereksinimleri /var/run için de geçerli olacaktır. /var/run'u /run dizinine sembolik bağ yapmak geçerlidir.

Sistemi o anda kimlerin kullandığına dair bilgilerin saklandığı utmp dosyası bu dizinde yer alır.

Uygulamalar, /var/run/utmp dışında /var/run ve /run'a doğrudan erişmemelidir.[46]

5.14. /var/spool

5.14.1. Amaç

/var/spool, daha sonra işlenmek üzere bekleyen türden verileri içerir. /var/spool içindeki veriler gelecekte (bir uygulama, kullanıcı veya yönetici tarafından) yapılacak işleri temsil eder; genellikle veriler işlendikten sonra silinir.[47]

5.14.2. Özel Seçenekler

İlgili alt sistem kurulu ise aşağıdaki dizinler veya bu dizinlere sembolik bağların /var/spool içerisinde bulunması gerekir:

Dizin Açıklama
lpd Yazıcı kuyruğu dizini (seçimlik)
mqueue Giden posta kuyruğu (seçimlik)
news Haber kuyruğu dizini (seçimlik)
rwho Rwhod dosyaları (seçimlik)
uucp UUCP için kuyruk dizini (seçimlik)

5.14.3. /var/spool/lpd

5.14.3.1. Amaç

lpd için kilit dosyası lpd.lock, /var/spool/lpd içine yerleştirilmelidir. Her yazıcı için kilit dosyasının, söz konusu yazıcının kuyruk dizinine yerleştirilmesi ve lock olarak adlandırılması önerilir.

5.14.3.2. Özel Seçenekler

Dizin Açıklama
printer Belli bir yazıcı için kuyruk (seçimlik)

5.14.4. /var/spool/rwho

5.14.4.1. Amaç

Bu dizin, yerel ağdaki diğer sistemler için rwhod bilgilerini tutar.

Gerekçe

Bazı BSD sürümleri bu veriler için /var/rwho kullanır; diğer sistemlerdeki /var/spool içindeki tarihsel konum ve 'kuyruğa alınmış' veri tanımına yaklaşık olarak uygunluk göz önüne alındığında, bu konumun daha uygun olduğu görülmüştür.

5.15. /var/tmp

5.15.1. Amaç

/var/tmp dizini, sistem yeniden başlatmaları arasında korunan geçici dosyalar veya dizinler gerektiren uygulamalar için kullanılabilir hale getirilmiştir. Bu nedenle, /var/tmp'de saklanan veriler, /tmp'deki verilerden daha kalıcıdır.

/var/tmp dizininde bulunan dosya ve dizinler, sistem önyüklendiğinde silinmemelidir. /var/tmp'de saklanan veriler genel olarak kuruluma özgü bir şekilde silinse de, silme işlemlerinin /tmp'den daha seyrek aralıklarla yapılması önerilir.

5.16. /var/yp

5.16.1. Amaç

Eskiden Sun Yellow Pages (YP) -Sun sarı sayfaları- olarak bilinen Ağ Bilgi Servisi (NIS) için değişken veriler bu dizine yerleştirilmelidir.

Gerekçe

/var/yp, NIS (YP) verileri için standart dizindir ve neredeyse yalnızca NIS belgeleri ve sistemlerinde kullanılır.[48]



[39] Bu standart şu anda TeX Dizin Yapısını (TeX dosyalarının ve dizinlerinin düzenini açıklayan bir belge) içermemektedir, ancak okumak yararlı olabilir. https://git.texlive.info/CTAN/tree/README.structure adresinde bulunabilir.

[40] Örneğin, /usr/share/man/man1/ls.1 dosyası /var/cache/man/cat1/ls.1 olarak ve /usr/X11R6/man/<yerel>/man3/XtClass.3x ise /var/cache/man/X11R6/<yerel>/cat3/XtClass.3x olarak biçemlenmiş olabilir.

[41] Normal kullanıcılardan korunması gerekmeyen dosya sistemi yapısıyla ilgili veriler /srv altında saklanmalıdır.

[42] Bu standardın bu sürümü ile önceki sürümler arasındaki önemli bir fark, uygulamaların artık /var/lib altındaki bir dizini kullanmasının gerekli olmasıdır.

[43] Bu hiyerarşi, mevcut BSD sürümlerinde /var/db'de saklanan dosyaları içermelidir. Bunlar, locate.database ve mountdtab ile çekirdek simge veritabanlarını içerir.

[44] Ardından, /dev/ttyS0'ı kullanmak isteyen herkes kilit dosyasını okuyabilir ve buna göre hareket edebilir (/var/lock içindeki tüm kilitler herkes tarafından okunabilir olmalıdır).

[45] /var/mail'in başka bir dizine sembolik bir bağ olabileceği unutulmamalıdır.

[46] Bu, geçici dosyaların nerede bulunduğuyla ilgili karışıklığı önlemek içindir. Genel olarak, bir uygulama bu dosyalara erişmek için /var/run veya /run'u kullanmalıdır, ikisini birden değil.

[47] UUCP kilit dosyaları /var/lock dizinine yerleştirilmelidir. /var/lock ile ilgili bölüme bakınız.

[48] NIS, /var/nis diye farklı bir dizin kullanan Sun NIS+ ile karıştırılmamalıdır.