/ usr / bin vs / usr / local / bin pe Linux

De ce sunt atât de multe locuri pentru a pune un binar în Linux? Există cel puțin aceste cinci:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

Și pe cutia mea de birou, nu am permisiuni de scriere pentru unele dintre acestea.

Ce tip de binar intră în care dintre acestea bin s?

Comentarii

  • Ați uitat /usr/sbin/ .
  • Și ~/bin/ pentru lucrurile personale.
  • Există mai puține locuri în zilele noastre, deoarece /bin a fost îmbinat cu /usr/bin și /sbin a fost îmbinat cu /usr/sbin – vezi Cazul fuziunii / usr .
  • @Calmarius, ce? ‘ nu ar trebui să utilizați /usr/local/bin?
  • @Pacerier ~ / bin este doar pentru utilizatorul curent. De exemplu, pe serverele Linux cu mai mulți utilizatori în care nu sunteți un administrator care ‘ este singurul mod de a ” instala ” lucruri pentru tine.

Răspunde

  1. /bin (și /sbin) au fost destinate programelor care trebuiau să fie pe o mică partiție / înainte de cea mai mare Au fost montate partiții /usr etc. În zilele noastre, servește în principal ca locație standard pentru programe cheie precum /bin/sh, deși intenția inițială poate fi încă relevantă de ex. instalări pe dispozitive încorporate mici.

  2. /sbin, diferit de /bin, este pentru programele de gestionare a sistemului (care nu sunt utilizate în mod normal de către utilizatorii obișnuiți) necesare înainte de montarea /usr.

  3. /usr/bin este destinat programelor de utilizator normale gestionate de distribuție.

  4. Există un /usr/sbin cu aceeași relație cu /usr/bin ca /sbin trebuie să /bin.

  5. /usr/local/bin este pentru programele de utilizator normale nu gestionate de managerul de pachete de distribuție, de ex. pachete compilate local. Nu trebuie să le instalați în /usr/bin, deoarece actualizările viitoare de distribuție le pot modifica sau șterge fără avertisment.

  6. /usr/local/sbin, după cum probabil puteți ghici în acest moment, este /usr/local/bin ca /usr/sbin la /usr/bin.

În plus, există și /opt care este pentru pachetele monolitice fără distribuție, deși înainte de a fi integrate corect, diferite distribuții au pus acolo Gnome și KDE. În general, ar trebui să-l rezervați pentru pachete terțe mari, cu comportament slab, cum ar fi Oracle.

Comentarii

  • Cred că acest răspuns face o treabă excelentă de clarificare un set obișnuit de convenții, dar această postare de la Rob Landley este o lectură foarte bună dacă doriți o perspectivă asupra prostiei … lists.busybox.net/pipermail/busybox/2010 -Decembrie / 074114.html
  • refspecs.linuxfoundation.org/fhs.shtml pentru referința curentă canonică. Link-ul de la @kojiro este depășit și nu are ‘ noua specificație.
  • Unde pun un coș pe care l-am descărcat de pe internet? Din descrierea dvs. se pare că ar trebui să meargă în / usr / local / bin sau / usr / bin. Este / usr / bin ceva ce nu ar trebui să ating niciodată manual și să las să se joace doar managerul de pachete?
  • @DidierA. puneți-l în ~/bin și adăugați acel director la PATH-ul dvs. ca utilizator … Vă mulțumim pentru notă, am șters comentariul meu învechit serios. răspundeți la prima parte a întrebării mele aici: superuser.com/a/238993/425838 . Precedența se bazează pe ordinea din variabila PATH a sistemului, iar echo $PATH pentru mine arată /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games , ceea ce înseamnă că executabilele din /usr/local/bin au prioritate față de cele din /usr/bin care au prioritate față de cele din /bin.

Răspuns

Vă recomandăm să aruncați o privire la pagina manuală a ierarhiei sistemului de fișiere:

man hier 

care este disponibil și online, de exemplu: http://linux.die.net/man/7/hier . Porțiunile relevante au fost copiate mai jos. În funcție de sistemul dvs., se poate spune ceva diferit.

Nume

    hier – descrierea ierarhiei sistemului de fișiere

Descriere

    Un sistem tipic Linux are, printre altele, următoarele directoare:

    /bin

      Acest director conține programe executabile care sunt necesare pentru un singur utilizator pentru a aduce sistemul în funcțiune sau pentru a-l repara.

    /sbin

      Ca /bin, acest director conține comenzile necesare pentru a porni sistemul, dar care de obicei nu sunt executate de utilizatori normali.

    /usr/bin

      Acesta este directorul principal pentru programele executabile. Majoritatea programelor executate de utilizatori normali care nu sunt necesare pentru pornire sau repararea sistemului și care nu sunt instalate local ar trebui plasate în acest director.

    /usr/local/bin

      Binare pentru programe locale pe site.

    /usr/local/sbin

      Programe instalate local pentru administrarea sistemului.

    /usr/sbin

      Acest director conține programe binare pentru administrarea sistemului care nu sunt esențiale pentru procesul de boot, pentru montarea /usr sau pentru repararea sistemului .

Comentarii

  • Aceasta nu ‘ nu răspunde la întrebarea utilizatorului ‘.
  • Pagina manuală conține o intrare pentru fiecare dintre directoarele bin, explicând ce intră în ele, care a fost una dintre întrebări.

Răspuns

Sistemul de fișiere Hierar intrarea chy Standard din Wikipedia m-a ajutat să răspund la aceeași întrebare când am avut-o, plus că are un tabel foarte explicativ.

Extras din pagina respectivă 1 :

/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route. 

1 Adus pe 19 iunie 2019; permalink .

Răspuns

sbin conține programe care sunt, în general, doar administrare a sistemului. Programele pentru utilizatorii obișnuiți nu ar trebui să intre în ele.

Câteva programe sunt necesare în timpul pornirii și ajung în /bin/ sau /sbin/. Acestea trebuie să fie disponibile înainte de montarea sistemelor de fișiere. Lucruri precum mount și fsck care sunt necesare pentru verificarea și montarea sistemelor de fișiere trebuie să fie acolo.

Cele mai ambalate programele ajung în /usr/bin/ și /usr/sbin/. Acestea pot fi pe un alt sistem de fișiere decât sistemul de fișiere rădăcină. În unele cazuri, acestea pot fi pe o unitate montată în rețea.

Programele și scripturile locale aparțin /usr/local/bin/ și /usr/local/sbin/ . Acest lucru îi identifică ca fiind în mod clar nestandard și, posibil, disponibil doar pe site.

Pentru explicații suplimentare, încercați să executați comanda man hier care ar trebui să furnizeze o descriere a ierarhiei recomandate a sistemului de fișiere pentru distribuția dvs. De asemenea, vă recomandăm să citiți despre Ierarhia sistemului de fișiere pe Wikipedia

Comentarii

  • +1 O explicație foarte concisă dacă top este puțin prea mult.
  • ” Programele și scripturile locale aparțin în / usr / local / bin / și / usr / local / sbin / ” – Vrei să spui programe locale ca în ” deloc parte a sistemului de operare, dar am decis să instalez le și doriți să le utilizați „?

Răspundeți

În anii 1970, UNIX avea toate executabilele oficiale în /bin și /usr/bin era o locație sub directoarele de acasă ale utilizatorilor (de ex. /usr/dmr) care era disponibil pentru orice utilizator pentru a stoca propriile binare care ar fi putut fi de interes și pentru ceilalți.

Rezultatul acestei deschideri /usr/bin a fost o curte nedorită de programe software nedocumentate și astfel Stephen Bourne a vrut a fost un script cron care a verificat noile binare în fiecare seară și a eliminat toate binarele care nu aveau o documentație sau care au fost actualizate fără a le actualiza și documentația.

La sfârșitul anilor 1970, /usr/bin a fost integrat în distribuția de bază a sistemului de operare și oamenii au început să folosească /usr/local/bin în scopul deschiderii anterioare /usr/bin .

După un timp, sysadmins a folosit /usr/local/bin pentru a stoca software non-local care a fost importat din rețea (de ex. USENET) și întrucât companiilor UNIX nu le-a plăcut să repete aceeași greșeală ca și cu /usr/bin din nou, a avut loc o conferință de ierarhizare a sistemului de fișiere în jurul anului 1987, unde toate companiile UNIX au fost de acord să renunțe la /usr/local/bin și pentru a utiliza /opt/<vendor>/bin în schimb.

Din păcate, distribuțiile Linux nu au urmat această decizie ….

Comentarii

  • Deși este foarte interesant, nimic din toate acestea chiar încearcă să răspundă la întrebarea pusă care nu era despre /opt și nu despre UNIX, ci despre Linux. Este ca și cum ați răspunde ” De ce au mașinile 4 roți? ” cu ” Bicicletele au 2! Din păcate, mașinile nu ‘ t. ” ceea ce nu ‘ nu ajută OP să înțeleagă de ce mașinile au 4.
  • Dacă nu puteți folosi explicația dată ca explicație pentru fundalul Linux și faptul că Linux îi place să imite UNIX, este posibil să vă lipsească fundalul necesar.
  • Interesant, dar ceva ce mă încurcă și care poate este, de asemenea, doar istoric. Astăzi, descărcarea unui coș de gunoi online și a coșului de companie nu este foarte diferită ‘. Dacă Joe Blow creează un program și îl descarc, de ce nu îl pun în / opt / JowBlow / bin în loc de / usr / local / bin. Este o chestiune de furnizor de încredere versus neîncredere? ‘ nu pare să aibă sens pentru mine.
  • Mi-aș dori să știu acest ‘ exact ‘ istorie cu câțiva ani în urmă. a) M-am întrebat de ce AIX a evitat / usr / local, utilizează / opt / IBM și / opt / ibm și utilizează bullfreeware / opt / freeware – și de ce TREBUIE să folosesc o cale diferită (nu doar / opt / * sbin). În ceea ce privește semi-relevanța cu Linux – instrumente GNU mai bune – implicit –prefix în instrumentele automate este / usr / local. Păcat că instrumentele automate (automake, autoconf, etc. nu urmează …. Dar toți supraviețuim și aflăm unde distrub. || furnizorii își pun programele.
  • Am putea avea încă una dintre aceste conferințe? De data aceasta, toți ascultă!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *