Hvorfor er der så mange steder at placere en binær i Linux? Der er mindst disse fem:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
Og på min kontorboks har jeg ikke skrivetilladelser til nogle af disse.
Hvilken type binær er der i hvilken af disse bin
s?
Kommentarer
Svar
-
/bin
(og/sbin
) var beregnet til programmer, der skulle være på en lille/
-partition før den større/usr
osv. skillevægge blev monteret. I disse dage fungerer det mest som en standardplacering for nøgleprogrammer som/bin/sh
, selvom den oprindelige hensigt stadig kan være relevant for f.eks. installationer på små indlejrede enheder. -
/sbin
, adskilt fra/bin
, er til systemadministrationsprogrammer (normalt ikke brugt af almindelige brugere) nødvendige før/usr
er monteret. -
/usr/bin
er til distributionsstyrede normale brugerprogrammer. -
Der er en
/usr/sbin
med samme forhold til/usr/bin
som/sbin
skal/bin
. -
/usr/local/bin
er til normale brugerprogrammer ikke administreret af distributionspakkehåndteringen, f.eks. lokalt kompilerede pakker. Du bør ikke installere dem i/usr/bin
, fordi fremtidige distributionsopgraderinger muligvis kan ændre eller slette dem uden advarsel. -
/usr/local/sbin
, som du sandsynligvis kan gætte på dette tidspunkt, er at/usr/local/bin
som/usr/sbin
til/usr/bin
.
Derudover er der også /opt
, som er til monolitiske ikke-distributionspakker, skønt inden de blev ordentligt integreret placerede forskellige distributioner Gnome og KDE der. Generelt skal du reservere det til store, dårligt opførte tredjepartspakker som Oracle.
Kommentarer
- Jeg synes, dette svar gør et godt stykke arbejde med at afklare et fælles sæt konventioner, men dette indlæg fra Rob Landley er en rigtig god læsning, hvis du vil have indsigt i vrøvl … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml til den kanoniske aktuelle reference. Linket fra @kojiro er forældet og har ikke ‘ den nye spec.
- Hvor lægger jeg en skraldespand, jeg har downloadet fra internettet? Fra din beskrivelse lyder det som om det skal gå i / usr / local / bin eller / usr / bin. Er / usr / bin noget, jeg aldrig skal røre manuelt og kun lade pakkehåndteringen lege med?
- @DidierA. læg den i
~/bin
og tilføj den mappe til din PATH som bruger … Tak for noten, jeg slettede min alvorligt forældede kommentar. - Jeg fandt svar på den første del af mit spørgsmål her: superuser.com/a/238993/425838 . Forrang er baseret på rækkefølge i systemet
PATH
variabel, ogecho $PATH
for mig viser/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, hvilket betyder, at eksekverbare filer i/usr/local/bin
har forrang over dem i/usr/bin
, som har forrang for dem i/usr/bin
, som har forrang for dem i/bin
.
Svar
Jeg anbefaler at se på mandesiden til filsystemhierarkiet:
man hier
som også er tilgængelig online, for eksempel: http://linux.die.net/man/7/hier . Relevante dele er kopieret nedenfor. Afhængigt af dit system kan det sige noget andet.
Navn
hier – beskrivelse af filsystemhierarkiet
Beskrivelse
Et typisk Linux-system har blandt andet følgende kataloger:
/bin
Denne mappe indeholder eksekverbare programmer, der er nødvendige for en enkelt bruger tilstand og for at bringe systemet op eller reparere det.
/sbin
Ligesom
/bin
, denne mappe indeholder kommandoer, der er nødvendige for at starte systemet, men som normalt ikke udføres af normale brugere.
/usr/bin
Dette er den primære mappe til eksekverbare programmer. De fleste programmer, der udføres af normale brugere, som ikke er nødvendige for at starte eller reparere systemet, og som ikke er installeret lokalt, skal placeres i denne mappe.
/usr/local/bin
Binærfiler til programmer, der er lokale for webstedet.
/usr/local/sbin
Lokalt installerede programmer til systemadministration.
/usr/sbin
Denne mappe indeholder programbinarier til systemadministration, som ikke er vigtige for opstartsprocessen, til montering
/usr
eller til systemreparation .
Kommentarer
- Dette er ikke ‘ t besvar brugerens ‘ s spørgsmål.
- Man-siden indeholder en post for hver af papirkurven og forklarer, hvad går ind i dem, hvilket var et af spørgsmålene.
Svar
Filsystemshierar chy Standard -post på Wikipedia hjalp mig med at besvare det samme spørgsmål, da jeg havde det, plus det har en meget forklarende tabel.
Uddrag fra den side 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 Hentet den 19. juni 2019; permalink .
Svar
sbin
-mapper indeholder programmer, der generelt kun er systemadministration. Programmer til almindelige brugere bør aldrig gå i dem.
Et par programmer er nødvendige under opstart og ender i /bin/
eller /sbin/
. Disse skal være tilgængelige, før filsystemer monteres. Ting som mount
og fsck
, der kræves for at kontrollere og montere filsystemer, skal være der.
Mest pakket programmer ender i /usr/bin/
og /usr/sbin/
. Disse kan være på et andet filsystem end rodfilsystemet. I nogle tilfælde kan de være på et netværksmonteret drev.
Lokale programmer og scripts hører til i /usr/local/bin/
og /usr/local/sbin/
. Dette identificerer dem som klart ikke-standardiserede og muligvis kun tilgængelige på stedet.
For yderligere forklaring, prøv at køre kommandoen man hier
, som skal give en beskrivelse af det anbefalede filsystemhierarki til din distribution. Det kan også være en god idé at læse om Filsystemhierarki på Wikipedia
Kommentarer
- +1 En virkelig kortfattet forklaring, hvis toppen er lidt for meget.
- ” Lokale programmer og scripts hører til i / usr / local / bin / og / usr / local / sbin / ” – Du mener lokale programmer som i ” slet ikke en del af operativsystemet, men jeg besluttede at installere dem og vil bruge dem “?
Svar
I 1970erne havde UNIX alle officielle eksekverbare filer i /bin
og /usr/bin
var en placering under brugernes hjemmekataloger (f.eks. /usr/dmr
), der var tilgængelig for enhver bruger til at gemme egne binære filer, der muligvis også havde været af interesse for andre.
Resultatet af denne åbne /usr/bin
var en junk yard af papirløs software og så Stephen Bourne wro te et cron-script, der tjekkede for nye binære filer hver aften og fjernede alle binære filer, der ikke havde en dokumentation, eller som er blevet opdateret uden også at opdatere deres dokumentation.
I slutningen af 1970erne, /usr/bin
blev integreret i OS-basedistributionen, og folk begyndte at bruge /usr/local/bin
med henblik på den tidligere åbne /usr/bin
.
Efter et stykke tid brugte sysadmins /usr/local/bin
til at gemme ikke-lokal software, der blev importeret fra netværket (f.eks. USENET) og da UNIX-virksomheder ikke kunne lide at gentage den samme fejl som med /usr/bin
igen, var der en filsystemhierarkikonference omkring 1987, hvor alle UNIX-virksomheder blev enige om at opgive /usr/local/bin
og bruge /opt/<vendor>/bin
i stedet.
Desværre fulgte Linux-distroer ikke denne beslutning …
Kommentarer
- Selvom det var meget interessant, intet af dette forsøger endda at besvare det stillede spørgsmål, som ikke handlede om
/opt
og ikke om UNIX, men om Linux. Dette er som at svare på ” Hvorfor har biler 4 hjul? ” med ” Cykler har 2! Desværre hjælper biler ‘ t. ” hvilket ikke ‘ t hjælper OPet med at forstå hvorfor biler har 4. - Hvis du ikke kan bruge den givne forklaring som en forklaring på baggrunden for Linux og det faktum, at Linux kan lide at efterligne UNIX, mangler du muligvis den nødvendige baggrund.
- Interessant, men noget jeg bliver forvirret af, og som måske også kun er historisk. I dag downloader en papirkurv online og en firmakurv ikke ‘ t meget anderledes. Hvis Joe Blow laver et program, og jeg downloader det, hvorfor ikke lægge det i / opt / JowBlow / bin i stedet for / usr / local / bin. Er det et spørgsmål om pålidelig udbyder versus utro? ‘ ser ikke ud til at give mening for mig.
- Jeg ville ønske jeg havde kendt dette ‘ nøjagtig ‘ historie for et par år tilbage. a) Jeg spekulerede på, hvorfor AIX undgik / usr / local, bruger / opt / IBM og / opt / ibm og bullfreeware anvendelser / opt / freeware – og hvorfor jeg BØR have brugt en anden sti (ikke bare / opt / * sbin). Hvad angår semi-relevans med Linux – bedre GNU-værktøjer – er standard -prefixet i auto-værktøjer / usr / local. Alt for dårlige autotools (automake, autoconf osv. Følger ikke … Men vi overlever alle og lærer, hvor distrub. || leverandører lægger deres programmer.
- Kunne vi have en anden af disse konferencer? Bare denne gang lytter ALLE!
/usr/sbin/
.~/bin/
til personlige ting./bin
blev flettet med/usr/bin
og/sbin
blev flettet med/usr/sbin
– se Sagen for / usr Merge ./usr/local/bin
?