it-swarm-tr.com

/ Usr / local / bin nedir?

Bugünden önce, terminali dizinlere girip çıkarken ve touch komutunu kullanarak dosyaların tarihlerini değiştirerek sınırlı ölçüde kullandım. Mac'e eğlenceli bir komut dosyası yükledikten ve chmod 755 dosya daha sonra yürütülebilir yapmak için.

Ne olduğunu bilmek istiyorum /usr/local/bin olsa. /usr/, Sanırım, bilgisayarın kullanıcısı. Neden olduğundan emin değilim /local/ orada olsa. Açıkçası yerel bilgisayar anlamına geliyor, ancak bilgisayarda (veya sunucuda) olduğu için gerçekten gerekli mi? Olmaz /usr/bin iyi olacak mı?

Ve /bin? Bu alan neden genellikle terminale komut dosyası yüklemek için kullanılır?

93
JFW

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

  • /usr/local Hiyerarşisi, yazılımı yerel olarak yüklerken sistem yöneticisi tarafından kullanılmak içindir.
  • Sistem yazılımı güncellendiğinde üzerine yazılmaması güvenli olmalıdır.
  • Bir grup ana bilgisayar arasında paylaşılabilen ancak /usr İçinde bulunmayan programlar ve veriler için kullanılabilir.
  • Yerel olarak yüklenen yazılım, /usr/local İçindeki yazılımı değiştirmek veya yükseltmek için yüklenmedikçe/usr yerine /usr İçine yerleştirilmelidir.

Bu kaynak dosya sistemi hiyerarşi standardı öğesini daha derin bir düzeyde açıklamaya yardımcı olur.

/usr/local/bin Kullanımı ve kötüye kullanımı hakkındaki bu makaleyi da ilginç bulabilirsiniz.

82
iamsid

/ 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ı" değil, users, "çoğul.

AT&T Unix'ten önce System V Sürümü 4 (SVR4) 1988 yılında kullanıcı yönetim araçlarıyla varsayılan olarak /home, Geleneksel konum /usr İdi. ¹ $HOME Dizininiz bir Sistem III kutusunda /usr/jfw Olabilir .

/usr De şimdi olduğu gibi /usr/bin, /usr/lib, Vb. Deneyimler sayesinde, ev dizinlerini ayırmanın iyi bir sistem yönetimi uygulaması olduğunu gösterdi, bu yüzden /home SVR4 politika değişikliği, şimdi /usr ait olduğunu düşündüğümüz her şeyi geride bıraktı.

/usr Adlı kullanıcının adını tutmak için hala iyi bir nedeni vardı: geride kalan, sistem normal etkileşimli kullanımı destekleyecek kadar önyükleninceye kadar kullanılabilir olması gerekmeyen dosyalardı. Yani, geride bırakılan şey işletim sisteminin kullanıcı - odaklanmış kısımlarıydı. Bu, /usr Öğesinin farklı bir fiziksel birimde olabileceği anlamına geliyordu, bu da 92 MB sabit diskin çamaşır makinelerinin büyüklüğünde olduğu günlerde iyi bir şeydi.

İlk Unix sistemleri, çekirdek işletim sistemi dosyalarını /usr Dışında tutmaya dikkat etti, böylece /usr Biriminin herhangi bir nedenden dolayı sökülemese bile tek kullanıcı kipinde² önyükleme yapabileceksiniz. Kök birimi, /usr Birimini yeniden çevrimiçi duruma getirmek için yeterli araç içeriyordu.

Birçok Unix aroması artık bu eski tasarım prensibini göz ardı ediyor çünkü küçük gömülü sistemler bile hem geleneksel kök birim dosyaları için yeterli alana sahipler ve tüm /usr Tek bir birimde. ³ Red Hat Enterprise Linux, Solaris ve Cygwin /bin İle /usr/bin Ve /lib İle /usr/lib Arasında bağlantı kuruyor, böylece bu dizinler arasında artık bir fark kalmıyor.

.../local/... belli ki yerel bilgisayarı temsil ediyor ...

Evet. /usr/local Altındaki dosyaların o tek sisteme özel olması gerektiği anlamına gelir. Herhangi bir şekilde genel olan dosyalar başka bir yerde yaşamalıdır.

Bunun, Unix sistemlerinin yıllar önce yaygın olarak kullanılma biçiminin kökleri de var. Yine, zamanın sabit diskleri hantal, gerçekten pahalıydı ve günümüz standartlarına göre çok az depolanmıştı. Disklerde para ve yerden tasarruf etmek için, Unix kutularıyla dolu bir bilgisayar laboratuvarı çoğu zaman /usr Öğesinin çoğunu NFS veya başka bir ağ dosya paylaşım protokolü üzerinden paylaşır, bu nedenle her kutunun kendi yedek kopyası olması gerekmez. Box Tek bir kutuya özgü dosyalar, /usr/local 'Dan ayrı bir birim olan /usr Altına girer.

Bu tarihsel miras, üçüncü taraf Unix yazılımlarının çoğunun elle yüklendiğinde /usr/local İçine yüklenmesinin neden hala varsayılan olmasıdır. Bu tür yazılımların çoğu, paketi başka bir yere kurmanıza izin verecektir, ancak seçim yapmadan, diğer varsayılan yükleme konumlarını daha spesifik amaçlarla engellemeyen güvenli varsayılanı alırsınız.

Yazılımın başka bir yere kurulmasını sağlamak için iyi nedenler vardır. Apple'ın macOS ekibi bunu GNU Bash kaynak kodundanbash oluşturduklarında yapar. Kurulum öneki olarak / Kullanırlar, /usr/local Varsayılanını geçersiz kılarlar, böylece Bash /bin İle biter.

Başka bir örnek, eski Linux sistemlerinin GUI yazılımlarını /usr/X11R6 Olarak ayırma biçimidir ve geleneksel komut satırından ayrı tutmak ve curses - tabanlı yazılım. Bu, basitçe varsayılan /usr/local Önekini /usr/X11R6 İle geçersiz kılarak yapıldı. ⁵

Ve/bin nedir?

"İkili" için kısadır, bu bağlamda "düz metin olmayan bir dosya" anlamına gelir. Bu tür dosyaların çoğu bir Unix kutusunda yürütülebilir şeklindedir, bu nedenle bu iki terim bazı çevrelerde eş anlamlı hale gelmiştir. ("Lütfen bana RHEL 7 için bir ikili oluşturun, Fred.")

Unix kutusundaki metin dosyaları başka bir yerde yaşıyor: /etc, /usr/include, /usr/share Vb.

Bir zamanlar, düz metin dosyaları olan Shell komut dosyaları bile bin dizinlerinin dışında tutuldu, ancak bu satır da bulanıklaştı. Bugün, bin dizinleri genellikle "ikili" olsun ya da olmasın her türlü yürütülebilir dosyayı içerir.


Dipnotlar ve Bölümler :

  1. SVR4'ten önceki kullanıcı yönetimi araçlarının ilkel niteliği, HOME=/usr/$NAME Şemasının varsayılan olarak yazılım araçları tarafından uygulanmasından ziyade yalnızca bir kural olarak belgelendiği anlamına geliyordu.

    Bunu, " AT&T Unix System V Sürüm 3.2 Sistem Yöneticisi Kılavuzu'nun 4-8. Sayfasında görebilirsiniz: burada AT&T'nin eski /usr/$NAME Şemasını önerdiğini görüyorsunuz. Unix'in SVR4 çıkmadan önceki son ana sürümü.

    Eski Unix sistemlerinde sistem yöneticilerinin kendileri için daha anlamlı bir şema seçmesi oldukça yaygındı. İnsanlar insan, yani birçok farklı plan icat edildi.

    /home/$NAME Haline gelmeden önce karşılaştığım bir şema /u/$NAME İdi.

    1990'ların başında kullandığım başka bir sistem o kadar çok kullanıcıya sahipti ki, tüm ev dizinlerini tek bir fiziksel hacme sığdıramadılar, bu yüzden /u1/$NAME, /u2/$NAME Vb. Hatırlıyorum. Ana dizininizin hangi diskte bittiği, hesabınızın oluşturulduğu sırada üzerinde yer olan bir diskti.

  2. Tuşunu basılı tutarak bir macOS kutusunu tek kullanıcı moduna getirebilirsiniz Cmd-S çizerken. Ekran kararınca ve açık gri metin göründüğünde bırakın. Bu, Terminal'in altında koşmak gibidir, ancak GUI henüz başlamadığı için tüm ekranı kaplar.

    Dikkatli olun, root olarak yayınlıyorsunuz.

    Tek kullanıcılı moddan çıkmak ve çok kullanıcılı GUI moduna geçmeye devam etmek için tek kullanıcılı kök İstemine "exit" yazın.

  3. Kritik tek kullanıcı modu dosyalarını /usr Dışında tutmak için hala görünür Unixy işletim sistemleri aslında bu gün bunu yapmayabilir. Bir keresinde bir FreeBSD 9 kutusunu /usr Bir ZFS birimine taşıyarak önyüklenemez hale getirdim. ZFS-on-root özelliklerinin FreeBSD 10'a kadar inmediğini ve bir Catch 22 oluşturduğunu unuttum: İşletim sistemi, /usr/usr!

    Bu yeterince kötüydü, ancak FreeBSD 9 hala tek kullanıcılı önyükleme malzemelerini /usr Dışında tutuyor olsaydı, bunu yerinde çözebilirdim. /usr Demonte edilemeyen tek kullanıcılı modda bile önyükleme yapmayacağından, bu gelenek bir şekilde ihlal edildi. Bu sistemi tekrar geri almak için bir kurtarma CD'sinden önyükleme yapmak zorunda kaldım.

  4. Burası aynı zamanda /usr/share Elde ettiğimiz yerdir: farklı işlemci türlerine sahip Unix kutuları arasında bile paylaşılabilecek dosyaları ayırır. Tipik olarak metin dosyaları: man sayfaları, sözlük vb.

  5. "X11R6", bu sözleşmenin yaygın olduğu sırada Linux GUI'lerinin temelini oluşturan X Pencere Sistemi sürümünü ifade eder. Linux sistemleri genellikle X11R6'nın X.Org ile değiştirildiği zaman GUI yazılımını ayırmayı durdurdu.

  6. Orijinal Unix sistemleri /etc İçindeki gerçek ikili dosyalar ile karıştırılmamak için temel Shell betiklerini /bin 'Da tuttu.

66
Warren Young

/usr/local/bin, en son Mac OS'nin UNIX-esque köklerini gösterir (BSD altında bulunur).

  • "usr" UNIX Sistem Kaynakları anlamına gelir. Bu, sistem programlarının ve kitaplıklarını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", derlenmiş ikili çalıştırılabilir dosyaları temsil eder.

UNIX'in Linux ve BSD'nin ilk uygulamalarından bu yana bu değişti, ancak sözleşme devam etti. Şimdi, /usr/bin, "ana" veya çekirdek programlar ve kütüphaneler için olacaktır, burada /usr/local/bin eklenti ve kritik olmayan programlar ve kütüphaneler için olurdu.

10
nzwulfin

Genel olarak yapıyla ilgili sorular için Wikipedia 'a başvurmanızı öneririm, bu temel bilgileri kapsayacaktır.

Ancak, sorunuzu doğrudan yanıtlamak için:

  • / usr, gevşek bir şekilde kritik olmayan sistem kitaplıkları ve yürütülebilir dosyalarıdır
  • / usr/local yine gevşek bir şekilde sistem dışı kütüphaneler ve yürütülebilir dosyalar içindir

Bu yüzden ikisi arasında benzer bir yapı bulma eğilimindesiniz;/Usr/{, yerel /} {bin, Sbin, lib}. Shell'de yeni olan, {} 'lerle biten bir Shell genişletmesidir. Yürütmeyi deneyin

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

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

9
Tok

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

Bununla birlikte, Unix sistemlerde, /usr, İşletim sistemine ait bir dosya hiyerarşisini içerecek şekilde doksanların başlarında standartlaştırıldığı ve dolayısıyla bu işletim sistemini kullanan birden fazla sistem tarafından paylaşılabileceği için tartışmasız kötü bir seçimdir.

Bu dosyalar statik olduğundan, /usr Dosya sistemi salt okunur olarak bağlanabilir. /usr/local Bu standardı paylaştığı için yerel olduğu için bu standardı yeniyor, bu nedenle yerel derlemeye izin vermek için okuma-yazma gerekiyor ve işletim sisteminin bir parçası değil. Bunun yerine /opt/local Gibi kötü bir şey seçilmedi ...

4
jlliagre

/usr/local Mathematica gibi yükleyebileceğiniz ticari programlar için. Kurulum sırasında kendi bölümüne yerleştirin. İşletim sisteminizi yükselttiğinizde, bu bölüm rahatsız edilmez ve içeriğini yeniden yüklemeniz gerekmez. Bu yüzden işletim sistemi yükseltmeleri arasında tutmak istediğiniz şeyler için kullanın.

Ayrı olarak, /home bu nedenle kendi bölümü.

1
ncmathsadist

Bu cevap da yardımcı olabilir.

/ Usr/local

/usr/local 'Nun arkasındaki orijinal fikir, /usr Dışında her makinede ayrı bir (' local ')'/usr 'dizinine sahip olmaktı. /usr Yapısını kopyalar.

Bu günlerde, /usr/local, Kendi kendine derlenmiş veya üçüncü taraf programları tutmak için iyi bir yer olarak kabul edilmektedir. /usr/local Hiyerarşisi, yazılımı yerel olarak yüklerken sistem yöneticisi tarafından kullanılmak içindir. Sistem yazılımı güncellendiğinde üzerine yazılmaması güvenli olmalıdır.

Bir grup ana bilgisayar arasında paylaşılan ancak /usr İçinde bulunmayan programlar ve veriler için kullanılabilir. Yerel olarak yüklenen yazılım, /usr/local İçindeki yazılımın değiştirilmesi veya yükseltilmesi için yüklenmedikçe, /usr Yerine /usr İçine yerleştirilmelidir.

1