De ce sunt atât de multe locuri pentru a pune un binar în Linux? Există cel puțin aceste cinci:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/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
Răspunde
-
/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. -
/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
. -
/usr/bin
este destinat programelor de utilizator normale gestionate de distribuție. -
Există un
/usr/sbin
cu aceeași relație cu/usr/bin
ca/sbin
trebuie să/bin
. -
/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. -
/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 variabilaPATH
a sistemului, iarecho $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ă!
/usr/sbin/
.~/bin/
pentru lucrurile personale./bin
a fost îmbinat cu/usr/bin
și/sbin
a fost îmbinat cu/usr/sbin
– vezi Cazul fuziunii / usr ./usr/local/bin
?