Yanıtlar:
"Unix tabanlı sistemler", tüm Unix tabanlı sistemlere uygulanacak her türlü genel olarak uygulanabilir belirleme yapmak için çok genel bir kategoridir . Sorun dosya sistemi yapısı (ve bir şeyler koymak için "uygun" / "geleneksel" yer) "Unix" farklı lezzetleri arasında o kadar çılgınca farklı (eğer bunu bile diyebilirseniz) onu işlemek zorunda duruma göre.
Birkaç örnek:
Yanıt, Linux, BSD, Solaris, HP-UX vb. Bir dağıtım olsun, herhangi bir işletim sisteminde herhangi bir şeyin nerede depolanacağı için kanonik, sosyal olarak kabul edilebilir, iyi entegre edilmiş sözleşmenin kesin koşullara bağlı olmasıdır . özellikle:
apt-get
veya yum
kurabilirler mi?Tüm faktörleri dikkate almadan bunun doğrudan bir cevabı yoktur. Ancak, Ubuntu 12.04 için özel olarak , paketinizi .deb
bir PPA'da dağıtılacak bir dosyaya kuruyorsanız veya Ubuntu'nun kendi paket depolarına ( main
veya universe
) göndermek için önbelleğin depolanmasını tavsiye ederim /var/cache
. Ancak bu sadece Ubuntu içindir ve her dağıtım veya Unix tabanlı işletim sisteminin bunu kabul edilebilir olarak kabul edeceği varsayımını kesinlikle uygulamamalısınız.
Ayrıca, önbellek verilerini sistemin önyüklemelerine kaydetmenin hiçbir avantajı yoksa, / tmp'ye ait olabileceğini düşünüyorum.
Programınızın kullandığı her dosya türü için bu yollama kuralı sorunlarıyla karşılaşacağınızı unutmayın: paylaşılan veriler, yürütülebilir dosyalar, kütüphaneler, yardım dosyaları, resimler, ses, web sayfaları ve açık. Önbellek dosyaları hakkında soruyorsanız, diğer dosya türlerini nasıl ele almayı planladığınızı merak etmeliyim. Sadece saf varsayımlar mı yapıyorsun ve kimsenin seninle aynı fikirde olmadığını umuyor musun? Nereye koyacağınızı öneren herhangi bir Ubuntu dokümanı veya standardı okumadıysanız, sadece bir şeyi varsaymak kötü bir fikirdir. Örneğin, kütüphaneleri her zaman / usr / lib içine yapıştırmak, başka bir yere ait olabilecek duruma bağlı olarak bir hata olabilir.
Ayrıca, bir yazılım geliştiricisi olarak, yapılacak en sorumlu şey, son kullanıcının dosyalarını nereye koyacağına karar vermesine izin vermek olduğunu düşünüyorum. Varsayılanları ayarlayabilirsiniz, ancak kullanıcılar (ve distribütörler) derlemeyi dağıtımlarına uyacak şekilde özelleştirebilir ve özelleştirecektir.
Bunu yapmanın en kolay yolu, programınızı GNU Autoconf kullanarak oluşturmaktır . Autoconf, kullanıcının çeşitli "dizin türlerinin" yollarını varsayılanlardan uzağa değiştirmek için komut satırı bağımsız değişkenlerini yapı komut dosyasına geçirebildiği bir yapı sistemidir. Hemen hemen her dağıtımda, her Autoconf paketi için, her tür için dağıtım için uygun geleneksel dizinleri ayarlayan bir oluşturma komut dosyası bulunur. Hatta özellikle önbellek için bir dizin türü var: sharedstatedir .
gem
araç tarafından yüklendiği çok özel bir dizine sahip olduğunu unutmayın . Ancak, uygulamanızın mücevher tarafından indirildiği aynı dizinde çalışma zamanında dosya oluşturmak muhtemelen uygun olmaz. Öte yandan, uygulamayı bir kullanıcı olarak çalıştırıyorsanız, kullanıcılar için okuma-yazma olan bir dizine ihtiyacınız vardır ve bu, izinleri değiştirmek anlamına gelir (yükleme zamanında bir grup oluşturmak gibi daha fazla sistem entegrasyonu çalışması gerektirir) vb.) veya genel bir okuma-yazma dizini kullanarak, örneğin / tmp.
/usr
, /lib
ya /bin
da uygulamadan.
/tmp
klasör olacaktır . Sorularınızın cevapları (indirme, hayır, hayır, hayır, hayır, hayır, hayır) olacaktır. Muhtemelen çoğu insanın karar vermesi normal görünüyor,/tmp
ancak unix sistemlerinde yeniyim ve ubuntu os tabanlı sözleşmeler bana tanıdık gelmiyor. Bu, taş için agnostik disk önbelleğe almayı (kullanıcı agnostik) izin vermek için ilginç bir fikir açar. Teşekkürler, benden +1.