it-swarm-eu.dev

Co je / usr / local / bin?

Před dneškem jsem terminál používal v omezeném rozsahu, kdy jsem se pohyboval v adresářích a mimo ně a měnil jsem data souborů pomocí příkazu touch. Po instalaci zábavného skriptu na Mac jsem si uvědomil celý rozsah terminálu a musel jsem soubor chmod 755, Aby se později spustil.

Rád bych ale věděl, co je /usr/local/bin. Předpokládám, že /usr/ Je uživatel počítače. Nejsem si jistý, proč je tam /local/. Zjevně to znamená místní počítač, ale protože je to na počítači (nebo na serveru), bylo by to opravdu nutné? Nebylo by /usr/bin V pořádku?

A co je /bin? Proč se tato oblast obvykle používá k instalaci skriptů na terminál?

93
JFW

/usr/local/bin je pro programy, které může běžný uživatel spustit.

  • The /usr/local Hierarchie je používána správcem systému při lokální instalaci softwaru.
  • Při aktualizaci systémového softwaru musí být zajištěno, že nebude přepsáno.
  • Může být použit pro programy a data, která jsou sdílená mezi skupinou hostitelů, ale nenalezena v /usr.
  • Lokálně nainstalovaný software musí být umístěn do /usr/local spíše než/usr, pokud není nainstalován, aby nahradil nebo upgradoval software v /usr.

Tento zdroj pomáhá vysvětlit standard hierarchie souborového systém na hlubší úrovni.

Možná najdete tento článek o použití a zneužití /usr/local/bin také zajímavé.

82
iamsid

/ usr /, předpokládám, že je uživatel počítače.

Zavřít.

Unix začal jako operační systém pro více uživatelů, takže to není „uživatel“, ale „ uživatelé ,“ množné číslo.

Předtím, než v roce 1988 vyšel AT&T Unix System V Release 4 (SVR4) s nástroji pro správu uživatelů, ve výchozím nastavení vytváření adresářů uživatelů v /home, obvyklé umístění bylo /usr. ¹ Vaše $HOME mohl být adresář /usr/jfw v poli System III .

/usr také obsahovalo, pak jako nyní, /usr/bin, /usr/lib, atd. Zkušenost ukázala, že oddělení domácích adresářů bylo dobrou praxí při správě systému, takže s /home Změna politiky v SVR4, zůstala po všem, o čem si nyní myslíme, že patří do /usr.

/usr stále měl dobrý důvod držet se jména: co zůstalo pozadu, byly soubory, které nemusely být k dispozici, dokud nebyl systém spuštěn dostatečně daleko, aby podporoval normální interaktivní použití. To znamená, že to, co zbylo, byly uživatelské - zaměřené části operačního systému. To znamenalo, že /usr mohl být na jiném fyzickém svazku, což bylo dobré v době 92 MB pevných disků má velikost praček .

Brzy unixové systémy byly opatrné, aby nedocházelo k tomu, aby se základní soubory operačního systému dostaly z /usr, abyste mohli stále zavádět režim pro jednoho uživatele², i když /usr svazek byl z nějakého důvodu nespojitelný. Kořenový svazek obsahoval dostatek nástrojů k získání /usr svazek zpět online.

Několik příchutí unixů nyní tento starý princip designu ignoruje, protože i malé vestavěné systémy mají dostatek prostoru pro tradiční soubory kořenového svazku a všechny /usr na jeden svazek.³ Red Hat Enterprise Linux, Solaris a Cygwin symlink /bin to /usr/bin a /lib to /usr/lib, aby mezi těmito adresáři již nebyl žádný rozdíl.

.../local/... samozřejmě znamená místní počítač ...

Ano. Poukazuje na skutečnost, že soubory pod /usr/local by se měly vztahovat k tomuto jedinému systému. Soubory, které jsou jakýmkoli způsobem obecné, by měly žít jinde.

To má také kořeny ve způsobu, jakým byly systémy Unix běžně používány před desítkami let, když bylo vše standardizováno. Opět byly pevné disky času objemné, opravdu drahé a podle dnešních standardů byly málo skladovány. Abychom ušetřili peníze a prostor na discích, počítačová laboratoř plná krabic Unix by často sdílela většinu /usr přes NFS nebo nějaký jiný protokol pro sdílení souborů v síti, takže každé pole nemusí mít svou vlastní redundantní kopii.⁴ Soubory specifické pro jedno pole by spadaly pod /usr/local, což by byl samostatný svazek od /usr.

Toto historické dědictví je důvodem, proč je stále ve většině Unixových softwarů třetích stran nainstalován do /usr/local při ruční instalaci. Většina takového softwaru vám umožní nainstalovat balíček někde jinde, ale volbou nezískáte bezpečnou výchozí hodnotu, která nebude bránit jiným běžným instalačním umístěním s konkrétnějšími účely.

Existují dobré důvody k tomu, aby se software nainstaloval někde jinde. Tým Apple pro MacOS to dělá, když staví, řekněme, bash z zdrojový kód GNU Bash . Oni používají / jako předpona instalace, přepsání /usr/local default, takže Bash skončí v /bin.

Dalším příkladem je způsob, jakým starší systémy Linux oddělovaly svůj software GUI do /usr/X11R6, aby byl oddělený od tradičního příkazového řádku a softwaru curses . To bylo provedeno jednoduše přepsáním výchozí /usr/local předpona s /usr/X11R6. ⁵

A co je/bin?

Je to zkratka pro „binární“, což v této souvislosti znamená „soubor, který není prostým textem“. Většina takových souborů je spustitelné soubory v Unixovém boxu, takže tyto dva termíny se v některých kruzích staly synonymem. ("Prosím, postavte mi binární pro RHEL 7, Frede.")

Textové soubory v Unixovém boxu žijí jinde: /etc, /usr/include, /usr/share, atd.

Kdysi byly i Shell skripty - což jsou prosté textové soubory - uchovávány mimo bin adresářů, ale i tento řádek se rozmazal. Dnes adresáře bin obvykle obsahují jakýkoli druh spustitelného souboru, ať už je to striktně „binární“ nebo ne.


Poznámky pod čarou a klesání :

  1. Primitivní povaha nástrojů pro správu uživatelů před SVR4 znamenala, že HOME=/usr/$NAME schéma bylo pouze dokumentováno jako konvence, spíše než vynuceno softwarovými nástroji jako výchozí.

    Můžete to vidět na straně 4-8 „ Příručka správce systému AT&T Unix System V Release 3.2 : zde vidíte AT&T doporučující staré /usr/$NAME schéma v poslední hlavní verzi Unixu předtím, než vyšel SVR4.

    U starších unixových systémů bylo docela běžné, že si správci systémů vybrali jiné schéma, které jim dávalo větší smysl. Lidé, kteří jsou lidmi, to znamenalo, že bylo vynalezeno mnoho různých schémat.

    Jedno schéma, na které jsem narazil před /home/$NAME se stal standard byl /u/$NAME.

    Jiný systém, který jsem použil na začátku 90. let mělo tolik uživatelů, že nemohli umístit všechny domácí adresáře na jediný fyzický svazek, takže použili schéma jako /u1/$NAME, /u2/$NAME a tak dále, jak si vzpomínám. Na kterém disku váš domovský adresář skončil, to byla prostě záležitost, na které byla v okamžiku vytvoření vašeho účtu místo.

  2. Makro můžete zavést do režimu pro jednoho uživatele přidržením Cmd-S zatímco to boty. Pusťte, jakmile obrazovka zčerná a uvidíte světle šedý text. Je to jako běžet pod Terminálem, ale přebírá celou obrazovku, protože GUI ještě nezačalo.

    Buďte opatrní, běžíte jako root.

    Zadejte příkaz „exit“ v kořenovém adresáři pro jednoho uživatele. Chcete-li opustit režim pro jednoho uživatele a pokračovat v zavádění do režimu GUI pro více uživatelů.

  3. Unixy OS, které se stále objevují , zabraňují kritickým souborům v režimu jednoho uživatele mimo /usr to v dnešní době nemusí. Jednou jsem způsobil, že se FreeBSD 9 box nemohl zavést přesunutím /usr na svazek ZFS. Zapomněl jsem, že funkce ZFS-on-root se neobjevily, dokud FreeBSD 10 nevytvořil Catch 22 : OS potřeboval soubory v /usr za účelem připojení /usr!

    To bylo dost špatné, ale pokud FreeBSD 9 stále udržoval své bootovací soubory pro jednoho uživatele z /usr, Mohl jsem to opravit. Protože by se nespustilo ani do režimu pro jednoho uživatele s /usr je nespojitelný, jasně, že tradice byla nějakým způsobem porušena. Musel jsem nabootovat ze záchranného CD, abych ten systém znovu zálohoval.

  4. Tady také dostaneme /usr/share: odděluje soubory, které by mohly být sdíleny dokonce mezi Unix boxy s různými typy procesorů. Obvykle textové soubory: manuálové stránky, slovník atd.

  5. „X11R6“ odkazoval na verzi X Window System , která podporuje Linux GUI v době, kdy tato úmluva převládala. Linuxové systémy obecně přestaly segregovat software GUI o čase, kdy byl X11R6 nahrazen X.Org .

  6. Původní unixové systémy udržovaly své základní skripty Shell v /etc, aby nedošlo k jejich smíchání se skutečnými binárními soubory v /bin.

66
Warren Young

/usr/local/bin ukazuje kořeny nejnovějšího operačního systému Mac OS, které jsou součástí systému UNIX (jeho základna BSD tam dole).

  • "usr" znamená systémové prostředky UNIX. Toto je místo, kde jsou uloženy systémové programy a knihovny.
  • „místní“ představuje zdroje, které nebyly dodány se standardní distribucí a obvykle byly kompilovány a udržovány na základě jednotlivých stránek.
  • "bin" představuje binární kompilované spustitelné soubory.

To se změnilo od prvních implementací UNIXu do Linuxu a BSD, ale konvence zůstala. Nyní, /usr/bin by bylo pro „hlavní“ nebo základní programy a knihovny, kde /usr/local/bin by bylo pro doplňkové a nekritické programy a knihovny.

10
nzwulfin

Doporučuji odkazovat se na Wikipedia pro otázky související se strukturou obecně, bude pokrývat základy.

Pro přímou odpověď na vaši otázku však:

  • / usr je volně nekritické systémové knihovny a spustitelné soubory
  • / usr/local je opět volně pro nesystémové knihovny a spustitelné soubory

Proto máte sklon najít podobnou strukturu mezi nimi;/usr/{, local /} {bin, sbin, lib}. Být novým v Shell, ten kousek s {} 's je expanze Shell. Zkuste provést

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

od místního Shell, abyste viděli, jak to funguje.

9
Tok

/usr/local/bin je nejoblíbenější výchozí umístění spustitelných souborů, zejména těch s otevřeným zdrojovým kódem.

Toto je však pravděpodobně špatná volba, protože na unixových systémech /usr byl na počátku devadesátých let standardizován tak, aby obsahoval hierarchii souborů, které patří k operačnímu systému, a lze je tedy sdílet pomocí více systémů pomocí tohoto OS.

Protože jsou tyto soubory statické, /usr Systém souborů lze připojit pouze pro čtení. /usr/local překonává tento standard, protože je záměrně lokální, tedy nesdílený, takže je třeba číst a zapisovat, aby bylo možné lokální kompilace a není součástí operačního systému. Škoda něco jako /opt/local nebyl vybrán místo toho ...

4
jlliagre

Doporučuji použít /usr/local pro komerční programy, které můžete nainstalovat, například Mathematica. Při nastavení jej umístěte do vlastního oddílu. Při upgradu operačního systému nebude tento oddíl narušen a nebudete muset znovu instalovat jeho obsah. Použijte jej tedy pro věci, které chcete zachovat mezi aktualizacemi operačního systému.

Nezapomeňte dát /home také z tohoto důvodu vlastní oddíl.

1
ncmathsadist

Tato odpověď může být také užitečná.

/ usr/local

Původní nápad za /usr/local mělo mít samostatný ('místní') '/ usr' adresář na každém počítači kromě /usr, které by mohlo být připojeno jen pro čtení odkudkoli. Zkopíruje strukturu /usr.

Tyto dny, /usr/local je všeobecně považováno za dobré místo, kde lze udržovat programy sestavené sami nebo programy třetích stran. The /usr/local Hierarchie je používána správcem systému při lokální instalaci softwaru. Při aktualizaci systémového softwaru musí být zajištěno, že nebude přepsáno.

Může být použit pro programy a data, která jsou sdílena mezi skupinou hostitelů, ale nenalezena v /usr. Lokálně nainstalovaný software musí být umístěn do /usr/local spíše než /usr pokud není nainstalována pro nahrazení nebo upgrade softwaru v /usr.

1
Vishwanath gowda k