/ Usr / local / bin nedir?


85

Bugünden önce, terminali dizinlere girip çıkarken ve touchkomutları kullanarak dosyaların tarihlerini değiştirmede sınırlı miktarda kullandım . Mac'e eğlenceli bir komut dosyası yükledikten ve chmod 755daha sonra çalıştırılabilir hale getirmek için dosyaya ihtiyaç duyduktan sonra , terminalin tüm boyutunu fark ettim .

Ne olduğunu bilmek isterim /usr/local/bin. /usr/, Sanırım, bilgisayarın kullanıcısı. /local/Yine de neden orada olduğundan emin değilim . Belli ki yerel bilgisayarı temsil ediyor, ancak bilgisayardan (veya sunucudan) geçtiğinden, gerçekten gerekli olur mu? İyi olmaz mıydı /usr/bin?

Ve nedir /bin? Bu alan neden terminale komut dosyaları yüklemek için kullanılıyor?

Yanıtlar:


77

/usr/local/bin normal bir kullanıcının çalıştırabileceği programlar içindir.

  • /usr/localHiyerarşi yerel yazılım yüklemeden sistem yöneticisi tarafından kullanım içindir.
  • Sistem yazılımı güncellendiğinde, üzerine yazmaktan güvenli olması gerekir.
  • Bir grup ev sahibi arasında paylaşılabilen, ancak içinde bulunmayan programlar ve veriler için kullanılabilir /usr.
  • Yerel olarak kurulan yazılım, yazılımı /usr/localdeğiştirmek veya yükseltmek için kurulmadıkça, / usr yerine yerine yerleştirilmelidir /usr.

Bu kaynak, dosya sistemi hiyerarşisi standardını daha derin bir seviyede açıklamaya yardımcı olur .

Bu makaleyi/usr/local/bin ilginç ve kötüye kullanım konusunda da bulabilirsiniz .


"" ", / usr" "" içindeki yazılımı değiştirmek veya yükseltmek için kurulmadığı sürece?
Pacerier

63

/ usr /, sanırım bilgisayarın kullanıcısı.

Kapat.

Unix çok kullanıcılı bir işletim sistemi olarak başladı, bu yüzden "kullanıcı," o "var değil kullanıcılar ," çoğul.

AT & T Unix Önce Sistem V Yayın 4 (SVR4) kullanıcı giriş dizinleri oluşturma varsaymak kendi kullanıcı yönetim araçlarıyla 1988 yılında çıktı /home, geleneksel yeri oldu /usrKişisel .¹ $HOMEdizin olabilirdi /usr/jfwbir on Sistem III kutu.

/usrAyrıca, o zaman şimdi olduğu gibi, içerdiği /usr/bin, /usr/libvb Experience, ev dizinleri ayırmak iyi bir sistem yönetimi uygulaması olduğunu gösterdi öylesine /homeSVR4 politika değişikliği, biz şimdi ait olarak düşünmek herşeyi geride /usr.

/usrismin üzerinde durmak için hala iyi bir nedene sahipti: geride bırakılan şey, sistemin normal etkileşimli kullanımı desteklemek için yeterince önyükleninceye kadar hazır olması gerekmeyen dosyalardı. Diğer bir deyişle, geride kalanlar işletim sisteminin kullanıcı odaklı bölümleriydi. Bu, /usrfarklı bir fiziksel hacimde olabileceği anlamına geliyordu; bu, 92 MB'lık sabit disk günlerinde çamaşır makinelerinin boyutunun iyi olduğu bir şeydi .

Unix sistemleri, çekirdek işletim sistemi dosyalarını uzak tutmaya dikkat /usrediyordu ; bu nedenle, /usrbirim neden bir nedenle monte edilemese bile, tek kullanıcılı kip olarak yeniden başlatılabiliyordu . Kök birim, /usrbirimi tekrar çevrimiçi duruma getirmek için yeterli araç içeriyordu .

Hatta küçük gömülü sistemler geleneksel kök hacmi dosyalarının her ikisi için yeterli yer beri Çeşitli Unix birliği şimdi bu eski tasarım prensibi göz ardı ve tüm /usrtek volume.³ Red Hat Enterprise Linux, Solaris ve Cygwin sembolik link üzerinde /binetmek /usr/binve /libkarşı /usr/libhiçbir yoktur böylece Bu dizinler arasında herhangi bir fark daha uzun.

... / local / ... belli ki yerel bilgisayar için duruyor ...

Evet. Bu, altındaki dosyaların /usr/localbu tek sisteme özgü olması gerektiği anlamına gelir . Herhangi bir şekilde genel olan dosyalar başka bir yerde yaşamalıdır.

Bu aynı zamanda Unix sistemlerinin yaygın olarak on yıllar önce tüm bu standart hale getirildiği durumlarda kullanılma biçiminde köklere sahiptir. Yine, zamanın sabit diskleri hacimli, gerçekten pahalı ve bugünün standartlarına göre çok az şey depoladı. Disklerde paradan ve yerden tasarruf etmek için, Unix kutuları ile dolu bir bilgisayar laboratuarı çoğu zaman /usrNFS veya başka bir ağ dosyası paylaşım protokolünün çoğunu paylaşır; bu nedenle, her kutunun kendi yedek kopyasına sahip olması gerekmez. kutu, altına /usr/localayrı bir hacim olacaktı /usr.

Bu tarihi miras, /usr/localelle kurulduğunda çoğu üçüncü taraf Unix yazılımının yüklenmesinin varsayılan nedenidir . Bu tür yazılımların çoğu, paketi başka bir yere kurmanıza izin verir, ancak seçim yapmadan, diğer varsayılan yükleme konumlarına daha özel amaçlarla müdahale etmeyen güvenli varsayılanı elde edersiniz.

Bunun yerine yazılımı başka bir yere kurmak için iyi nedenler var. Onlar, diyelim ki, oluştururken Apple'ın MacOS ekibi bunu yapar bashden GNU Bash kaynak kodu . Bash'in sona ermesi /için /usr/localvarsayılanı geçersiz kılarak kurulum öneki olarak kullanılırlar /bin.

Diğer bir örnek, eski Linux sistemlerinin GUI yazılımlarını /usr/X11R6, geleneksel komut satırı ve cursestabanlı yazılımlardan ayrı tutmak için ayırma şeklidir . Bu varsayılan geçersiz kılarak sadece yapıldığını /usr/localile önek /usr/X11R6.⁵

Ve / bin nedir?

Bu bağlamda "düz metin olmayan bir dosya" anlamına gelen "ikili" kısaltmasıdır. Bu tür dosyaların çoğu Unix kutusunda çalıştırılabilir , bu nedenle bu iki terim bazı çevrelerde eşanlamlı hale geldi. ("Lütfen bana RHEL 7, Fred için bir ikili dosya oluşturun.")

Unix kutuyu Metin dosyaları başka yerde yaşamak: /etc, /usr/include, /usr/share, vb

Bir zamanlar, düz metin dosyaları olan kabuk komut dosyaları bile bindizinlerin dışında tutuldu , ancak bu satır da bulanıklaştı. Günümüzde, bindizinler genellikle "ikili" olsun veya olmasın, her türlü yürütülebilir dosyayı içerir.


Dipnotlar ve Dipnotlar :

  1. Kullanıcı yönetim araçlarının SVR4'ten önceki ilkel doğası, HOME=/usr/$NAMEplanın varsayılan olarak yazılım araçları tarafından uygulanmasından ziyade , planın yalnızca bir sözleşme olarak belgelenmesi anlamına geliyordu .

    Bunu, " AT&T Unix System V Sürüm 3.2 Sistem Yöneticisinin Kılavuzu : 4-8. Sayfalarda görebilirsiniz. Burada, eski bir /usr/$NAMEprogramın, SVR4 çıkmadan önce Unix'in son ana sürümünde önerildiği AT & T'yi görüyorsunuz.

    Eski Unix sistemlerinde, sistem yöneticilerinin kendileri için daha anlamlı olan farklı bir program seçmesi oldukça yaygındı. İnsanlar insanlardı, bu birçok farklı programın icat edildiği anlamına geliyordu.

    Daha önce karşılaştığım bir plan /home/$NAMEstandart oldu /u/$NAME.

    Ben kullanılan bir diğer sistem 1990'ların başında tek bir fiziksel hacmi üzerine tüm ev dizinleri sığmayan bu yüzden birçok kullanıcı vardı, bu nedenle böyle bir düzeni kullanılır /u1/$NAME, /u2/$NAMEhatırladığım kadarıyla, vb. Giriş dizininizin hangi diskte sona erdiği, hesabınızın oluşturulduğu sırada hangi diskte yer alacağıyla ilgili bir şeydi.

  2. Bir macOS kutusunu, önyükleme Cmd-Ssırasında basılı tutarak tek kullanıcı modunda önyükleyebilirsiniz . Ekran siyaha döndüğünde ve açık gri metnin göründüğünü gördüğünüzde bırakın. Terminal altında çalışan gibi, ancak GUI henüz başlamadı çünkü tüm ekranı devraldı.

    Dikkatli olun, siz koşuyoruz root.

    Tek kullanıcılı moddan çıkmak ve çok kullanıcılı GUI modunda önyüklemeye devam etmek için tek kullanıcılı kök isteminde "exit" yazın.

  3. Kritik, tek kullanıcılı kip dosyaları dışında tuttuğu görünen Unixy OS'ler /usraslında bugünlerde bunu yapamayabilir. Bir keresinde bir FreeBSD 9 kutusunu /usrbir ZFS hacmine taşıyarak önlenemez hale getirdim . ZFS-on-root özelliklerinin FreeBSD 10'a kadar çıkmadığını, bir Catch 22 yarattığını , işletim sisteminin /usrmontajı için gerekli dosyaları getirdiğini unuttum /usr!

    Bu yeterince kötüydü, ancak FreeBSD 9 tek kullanıcılı önyükleme öğelerini hala dışında tutuyorsa, /usryerinde düzeltebilirdim. Tek kullanıcı moduna bile /usrmonte edilemeyecek şekilde önyüklemediği için , geleneğin bir şekilde ihlal edildiği açıkça görülüyordu. Bu sistemi tekrar kurmak için kurtarma CD'sinden önyükleme yapmak zorunda kaldım.

  4. Burası aynı zamanda nerede olduğumuzu gösteriyor /usr/share: farklı işlemci türlerinde Unix kutuları arasında bile paylaşılabilecek dosyaları ayırıyor. Genellikle, metin dosyaları: man sayfaları, sözlük vb.

  5. "X11R6" , bu sözleşmenin geçerli olduğu sırada Linux GUI'lerini destekleyen X Pencere Sisteminin sürümüne atıfta bulundu . Linux sistemleri genellikle GUI yazılımının X11R6'nın X.Org ile değiştirildiği zamana göre ayrılmasını durdurdu .

  6. Orijinal Unix sistemleri /etc, içindeki gerçek ikili dosyalar ile birleşmelerini önlemek için çekirdek kabuk komut dosyalarını tuttu /bin.


3
Çamaşır makinesinin resmini sevdim!
17'de

@Warren, System III'ten önceki önemli işletim sistemleri nelerdir?
Pacerier

@Pacerier: UNIX Sürümleri 1 ila 7, UNIX / 32V, 1BSD ila 4BSD, 4BSD'nin nokta yayınlarını içermez (4.1BSD, AT&T Unix System III ile kabaca uyumluydu) ve PWB Unix. Kaynak . Neden soruyorsun ve bu soruyla ne ilgisi var?
Warren Young,

@Warren, Eh, bir şekilde "dizin adlandırma sistemi"
defacto'yu

@Pacerier: Benim iddiam yanında olacağım: Sistem V'den önce "standart" yoktu, sadece sözleşmeler ve yerel uygulamalar.
Warren Young,

9

Genel olarak yapı ile ilgili sorular için Wikipedia'ya atıfta bulunmanızı tavsiye ederim , bu temel bilgileri kapsayacaktır.

Ancak sorunuzu doğrudan cevaplamak için:

  • / usr, gevşek bir şekilde, kritik olmayan sistem kitaplıkları ve çalıştırılabilir dosyalardır.
  • / usr / local, yine sistematik olmayan kütüphaneler ve çalıştırılabilir dosyalar içindir

Bu yüzden ikisi arasında benzer bir yapı bulma eğilimindedir; / Usr / {, yerel /} {bin, Sbin, lib}. Kabukta yeni olmak, {} 'lerdeki o bit kabuk genişlemesidir. Yürütmeyi deneyin

ls -ld /usr/{,local/}{bin,sbin,lib}

Yerel kabuğunuzdan nasıl çalıştığını görmek için.


9

/usr/local/bin en yeni Mac OS'nin UNIX-esque köklerini gösterir (orada bulunan BSD).

  • "usr", UNIX Sistem Kaynakları anlamına gelir. Bu, sistem programlarının ve kitaplıkların depolandığı konumdur.
  • "yerel", standart dağıtımla birlikte gönderilmeyen ve genellikle site başına derlenen ve sürdürülen kaynakları temsil eder.
  • "bin", ikili derlenmiş çalıştırılabilir dosyaları temsil eder.

Bu, UNIX'in Linux ve BSD'ye ilk uygulanmalarından bu yana yürürlükte kaldı, ancak kongre kaldı. Şimdi, /usr/bin"ana" ya da /usr/local/bineklenti ve kritik olmayan programlar ve kütüphaneler için olan çekirdek programlar ve kütüphaneler için olacaktır.


12
Berlin Duvarı'nın yıkılmasından kısa bir süre sonra Unix kullanıyorum ve bugüne kadar "usr" için "Unix Sistem Kaynakları" genişlemesini hiç duymamıştım; bu bir backronym. "usr" adını aldı, çünkü kullanıcı giriş dizinlerinin başlangıçta bulunduğu yer. Diğer bir deyişle, eski bir System III kutusunda oturum açtıysanız, ilk çalışma dizininiz /usr/nzwulfinvarsayılan olarak olacaktır. Başka bir ortak şema. SVR4 /homeprogramı devralmadan önce oldu /u. Daha önce kullandığım bir sistemde o kadar çok kullanıcı vardı ki, dosya depolama için çok sayıda fiziksel diske ihtiyaç duyuyorlardı, bu yüzden bir şeyleri vardı /u/d5/tangent.
Warren Young

3
@Warren Ben de bir süredir bu sesi duymamıştım ve Google’ı dürttüm; epeyce backronyms var gibi geliyor
Michael Mrozek

4

/usr/local/bin çalıştırılabilir dosyalar için, özellikle açık kaynaklı olanlar için en popüler varsayılan konumdur.

Ancak bu, Unix sistemlerinde, /usrişletim sistemine ait bir dosya hiyerarşisini içerecek şekilde standartlaştırılmış ve bu yüzden bu işletim sistemini kullanan birden fazla sistem tarafından paylaşılabildiği için tartışmasız bir seçimdir .

Bu dosyalar statik olduğundan, /usrdosya sistemi salt okunur olarak bağlanabilir. /usr/localbu standardı yerel olarak tasarladığı ve dolayısıyla paylaşılmadığı için yenerek yerel derlemeye izin vermek için okuma-yazılması gerekir ve işletim sisteminin bir parçası değildir. /opt/localBunun yerine kötü bir şey seçilmedi ...


1

/usr/localMathematica gibi kurabileceğiniz ticari programlar için kullanmanızı tavsiye ederim . Ayarladığınızda kendi bölümlerine yerleştirin. İşletim sisteminizi yükselttiğinizde, bu bölüm rahatsız edilmeyecek ve içeriğini yeniden kurmanız gerekmeyecek. Bu yüzden işletim sistemi yükseltmeleri arasında tutmak istediğiniz şeyler için kullanın.

Ayrı olarak, /homebu nedenle de kendi bölümünü paylaştığınızdan emin olun .


0

Bu cevap da yardımcı olabilir.

/ Yerel / usr

Bunun arkasındaki asıl fikir /usr/local, her makinede ayrı bir ('yerel') '/ usr' dizinine sahip olmaktı /usr; bu, başka bir yerden salt okunur şekilde monte edilebiliyordu. Yapısını kopyalar /usr.

Bu günlerde, /usr/localkendi kendini derleyen ya da üçüncü taraf programlarını sürdürmek için iyi bir yer olarak kabul edilmektedir. /usr/localHiyerarşi yerel yazılım yüklemeden sistem yöneticisi tarafından kullanım içindir. Sistem yazılımı güncellendiğinde, üzerine yazmaktan güvenli olması gerekir.

Bir grup ana bilgisayar arasında paylaşılan, ancak içinde bulunmayan programlar ve veriler için kullanılabilir /usr. Yerel olarak kurulan yazılım, içinde bir yazılımı değiştirmek veya yükseltmek için kurulmadığı sürece, /usr/localyerine yerleştirilmelidir ./usr/usr

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.