/ Usr / local veya / usr / local / share içine başvuru yapmalı mıyım?


21

"Standartlar" nedir - / usr / local veya / usr / local / share dizinine uygulama yapmalı mıyım (sadece ikili değil tüm dağıtımı).

Örneğin, scala veya weka - örnekler, ikili dosyalar, kütüphaneler vb. İçerir. Bu yüzden olurdu

/usr/local/scala-2.9.1 

veya

/usr/local/share/scala-2.9.1

Tek yönetici olduğum için bu benim için önemli değil, ancak kendi geleneklerime göre değil, yaygın olarak kullanılan bir şeyi kullanmayı tercih ediyorum.

Önemli: Uygulamayı / usr / local / bin, / usr / local / lib ve benzeri öğelere ayırmanız gereken durumlar hakkında soru sormuyorum. Aksine, tüm uygulama için bir ana dizini ne zaman tutmanız gerektiğine dair bir vaka soruyorum.


6
Bence / opt bu bağlamda daha geleneksel.
Faheem Mitha 13:11

@ Faaem Mitha, çok iyi bir nokta. Sizin sayenizde , linuxtopia.org/ adresinden Windows'un kendi yazılım C: \ Windows \ Progam Files \ "Program Adı" na yeni bir yazılım yükleyişine benzeyen "/ opt / 'sağlayıcı' dizin ağacını açıkladım. online_books / linux_beginner_books / ... Acaba lütfen ? Ben cevap olarak işaretlemek diye, cevap olarak Yorum yazmak teşekkür ederiz.
greenoldman

@greenoldman: ayrıca memnun Tek dir tüm dosyaları tutmak olduğunu fark değil Unix uygulamaları yüklemek için "standart" bir yol. /optGerçekten de doğru cevabı, ancak edilir değil geleneksel Unix / Linux yazılımı tarafından "yaygın olarak kullanılan". Orada birden dirs dosyalarınızı bölmek iyi neden vardır ve ayrıca differenciate için /usrgelen/usr/local
MestreLion

Örneğin, bir tek içindeki tüm uygulamaların tüm yürütülebilir tutmak /usr/bin(veya /usr/local/bin) senin $ PATH, her yazılım için düzenlemek için gerek kalmadan Windows bulunmayan bir konsept tüm yazılımları ulaşmasını sağlar
MestreLion

Yanıtlar:


19

Bu bağlamda daha fazla standart olduğunu düşünüyorum. Dosya Sistemi Hiyerarşisi Standardındaki ilgili bölüm aşağıda verilmiştir.

Dağıtımlar, yazılımı kurabilir / seçebilir, ancak yerel sistem yöneticisinin izni olmadan yerel sistem yöneticisi tarafından yüklenen yazılımı değiştirmemeli veya silmemelidir.

Ation Gerekçe Eklenti yazılım için / opt kullanımı, UNIX topluluğunda yerleşik bir uygulamadır. System V Arabirim Tanımına (Üçüncü Baskı) dayanan System V Uygulama İkili Arabirimi [AT&T 1990], burada tanımlanan yapıya çok benzeyen bir / opt yapısı sağlar.

Intel İkili Uyumluluk Standardı v. 2 (iBCS2) de / opt için benzer bir yapı sağlar.

Genel olarak, bir sistemde bir paketi desteklemek için gereken tüm veriler / opt / içinde / etc / opt / ve / var / opt / içine kopyalanacak dosyalar ve / opt içindeki ayrılmış dizinler de dahil olmalıdır.

/ Opt kullanan dağıtımlara ilişkin küçük kısıtlamalar gereklidir, çünkü dağıtım yüklü ve yerel olarak yüklü yazılımlar arasında, özellikle de bazı ikili yazılımlarda bulunan sabit yol adları söz konusu olduğunda çakışma olabilir.

Aşağıdaki / opt / altındaki dizinlerin yapısı, yazılımın paketleyicisine bırakılmıştır, ancak paketlerin / opt // içine kurulması ve / opt / paket yönergelerine benzer bir yapı izlemesi önerilir. Bu yapıdan ayrılmanın geçerli bir nedeni, / opt // lib veya / opt // bin içine yüklenmiş dosyaları olan destek paketleri içindir.


5

Yalnızca /usr/local/sharebelirli bir mimari / işletim sistemi sürümüne özgü olmayan dosyalar için kullanmalısınız .

Sonra mevcut subdirs arasında dosya dağıtmak ister o size kalmış olduğunu /usr/localya da yeni bir adanmış bir dizin oluşturursanız /usr/local(ama ikinci irade değil zaten yürütülebilir mevcut PATH, LD_LIBRARY_PATHne de MANPATH).

Göz at FHS


Teşekkür ederim. Öyleyse, eğer Windows'tan bir benzetme ise, / usr / local / SPECIAL_APP olmalı ve içinde alt dizinleri olmalı, değil mi?
greenoldman 13:11

@greenoldman: hayır. Pencerelerinde, genellikle Linux genellikle üzerinde onları bölmek tek dir, tüm dosyaları tutmak: Windows ve Linux farklı modelleri kullandıkları için hiçbir benzetme uyacak bin, share, libvb
MestreLion

3

/optYaygın hale gelinceye kadar normal yerdi /usr/local/lib/<package>.


1
Okuduklarımdan, / opt oldukça yaygın, sadece yaygın olarak kullanılmıyor, ancak depolarda mevcut olan paketlerin miktarını düşünüyorsanız, bu bir sürpriz değildir.
greenoldman,

0

Yerel uygulamaları kurarken, nasıl erişmek ve güncellemek istediğinize bağlı olarak birden fazla seçenek vardır. Ayrıca, bazı yöntemlerin daha önce sahip olduğunuz sisteme daha çok benzeydiğini ve bazılarının daha geçici olduğunu da belirtmelisiniz. "En iyi" çözümlerin işleri yönetmeyi kolaylaştıran çözüm olduğunu düşünüyorum.

Bu cevabı, özel kurulum yapacak paket sayısına göre ayırdım. Bölünme kendi deneyimlerime dayanıyor. Bu deneyimler, paketleri yönetmek için harcadığınız zamanı ve bir şeyi batırmanın risklerini azaltır. Ortak standartlar bilgisine sahip olduğumu kastetmiyorum ama kararı verirken bakmak için referans noktası olarak kast ediyorum.

Yalnızca birkaç paket için , /optbaşka şeylerin dışında kaldıkları ve böylece hiçbir şeyin onları karıştıramayacağı ve başka bir şeyi karıştırabilecekleri ek paketler koymak isterdim . NAS'ımda kullandığım yöntem bu. Ancak bu yöntem, ikili dosyaları PATH'inizden uzak tutar, bu nedenle bunları manuel olarak eklemeniz gerekir. Yüklemek için yalnızca birkaç paket varsa bu işe yarar, ancak çok sayıda varsa karışıklık olur.

Burada güncelleme yapmak, dizinin üzerine yazdığınız için oldukça kolaydır.

Artıları:

  • basit
  • hızlı kurulum
  • sistemin diğer kısımlarını etkileme şansı yok
  • Kaldırma kurmak kadar kolaydır

Eksileri:

  • Yüklenecek paket sayısı büyükse, oldukça sıkıcı olur
  • Yapar PATHbakmak pis bir

Birkaç paketten fazlası için , kök ayrıcalıklarına ihtiyacınız olup olmadığına bağlı olarak veya /usr/local/<your package>çalıştırılabilir dosyayı sym-link kullanarak kullanmanızı öneririm . Bu, her yeni bir şey eklendiğinde PATH'inizi değiştirmekten kurtarır, böylece PATH temiz kalır. Tüm pacman olmayan paketler ve AUR paketleri için Arch dizüstü bilgisayarımda kullandığım yöntem budur./usr/local/bin/usr/local/sbin

Güncelleme, paket dizininin üzerine yazılarak ve sembolik bağlantının hala geçerli olup olmadığını kontrol ederek yapılıyorsa düzelterek yapılır.

Artıları

  • PATHDağınık yapmaz
  • Baz sistemi etkilemez
  • Tüm eklentileri kaldırmak ve temiz bir temel sisteme dönmek hala çok basit

Eksileri:

  • Kurulum için daha fazla iş
  • Sadece bir paketin çıkarılması gereken bazı aramalar var

Birçok paket için . İstediğiniz durum bu olmadığı için kısa tutacağım. Ben bölmeyi paketini öneriyoruz bin, lib, sharevb ve bunları yüklemeden /usr/local. Bu yapıyı temiz tutmaktır. Kimin nereye yazabileceğini de belirleyebilirsiniz. Örneğin, çalıştırılabilir dosyayı değiştirmek yerine kök dışındaki insanları istemiyorsunuz.

Burada güncelleme, tek bir dizine daha fazla yazmanız gerektiğinden biraz zorlaşıyor. Her şeyi paketlemenizi ve paket yöneticisinin geri kalanı halletmesini tavsiye ederim.

Paylaşım

shareFaheem en belirtildiği gibi dizin kendisi mimari bağımsız dosyaları için olan linke gitmeli ve mimarlık bağımlı dosyalar lib, lib32, lib64vb


Paket sayısına göre tavsiye vermek işe yaramaz; Paketimin hangi gruba ait olduğunu nasıl bilebilirim?
Alois Mahdal

Ayrıca, "tavsiye edilir" derken, referans kaynağı ya da açıkça sizin tavsiyeniz olduğunu belirtin (ikincisini tahmin ediyorum ...?)
Alois Mahdal

Bu arada, uygulamanın / usr'a yayılmasından ziyade işlerin yolunda gitme ihtimalinin ne kadar az / orantılı olacağını göremiyorum. Başka uygulamaları karıştırmak, işleri doğru bir şekilde adlandırmak ve içinde hata olmaması gibi bir şey. komut dosyalarını yükleyin.
Alois Mahdal

Bu kesinlikle işleri mahveten adlandırma ile ilgili. Geçmişte yaşadığım ve bu yüzden “ekstra” paketlerimi her şeyden uzak tutmayı seviyorum. Hala işlerin çirkin görünmesini istemiyorum.
Lauri Tšili 26:15

Ve evet, cevabımdan da anlaşılacağı gibi "tavsiye edilir" konusunda haklısın, ben başka yerlerde her yerde "Tavsiye ederim" kullandım. Şimdi yazımımı düzelttim ve neden bir şey önereceğimi açıkladım. Yine bu sadece benim bakış açım ve kesin bir cevap olarak değil.
Lauri Tšili
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.