Varför finns det så många platser att placera en binär i Linux? Det finns åtminstone dessa fem:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
Och på min kontorslåda har jag inte skrivrättigheter till några av dessa.
Vilken typ av binär som går in i vilken av dessa bin
s?
Kommentarer
Svar
-
/bin
(och/sbin
) var avsedda för program som behövde vara på en liten/
partition innan den större/usr
etc. partitioner monterades. Dessa dagar fungerar det oftast som en standardplats för viktiga program som/bin/sh
, även om den ursprungliga avsikten fortfarande kan vara relevant för t.ex. installationer på små inbäddade enheter. -
/sbin
, till skillnad från/bin
, är för systemhanteringsprogram (som normalt inte används av vanliga användare) som behövs innan/usr
är monterad. -
/usr/bin
är för distributionshanterade normala användarprogram. -
Det finns en
/usr/sbin
med samma relation till/usr/bin
som/sbin
måste/bin
. -
/usr/local/bin
är för normala användarprogram inte hanteras av distributionspakethanteraren, t.ex. lokalt sammanställda paket. Du bör inte installera dem i/usr/bin
eftersom framtida distributionsuppgraderingar kan ändra eller ta bort dem utan varning. -
/usr/local/sbin
, som du antagligen kan gissa vid den här tiden, är att/usr/local/bin
som/usr/sbin
till/usr/bin
.
Dessutom finns det /opt
som är för monolitiska icke-distributionspaket, även om innan de ordentligt integrerades placerade olika distributioner Gnome och KDE där. I allmänhet bör du reservera det för stora, dåligt uppförda tredjepartspaket som Oracle.
Kommentarer
- Jag tycker att det här svaret gör ett bra jobb med att klargöra en vanlig uppsättning konventioner, men det här inlägget från Rob Landley är en riktigt bra läsning om du vill ha insikt i nonsens … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml för den kanoniska aktuella referensen. Länken från @kojiro är föråldrad och har inte ’ den nya specifikationen.
- Var lägger jag till ett papperskorg som jag laddade ner från internet? Från din beskrivning låter det som om det ska gå i / usr / local / bin eller / usr / bin. Är / usr / bin något jag aldrig borde röra manuellt och bara låta pakethanteraren spela med?
- @DidierA. lägg det i
~/bin
och lägg till den katalogen i din PATH som användare … Tack för anteckningen, jag raderade min allvarligt föråldrade kommentar. - Jag hittade svar på den första delen av min fråga här: superuser.com/a/238993/425838 . Prioritet baseras på ordning i systemet
PATH
variabel, ochecho $PATH
för mig visar/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
vilket betyder att körbara filer i/usr/local/bin
har företräde framför de i/usr/bin
som har företräde framför de i/usr/bin
som har företräde framför de i/bin
.
Svar
Jag rekommenderar att du tittar på filsystemhierarkins mansida:
man hier
som också finns online, till exempel: http://linux.die.net/man/7/hier . Relevanta delar har kopierats nedan. Beroende på ditt system kan det säga något annat.
Namn
hier – beskrivning av filsystemshierarkin
Beskrivning
Ett typiskt Linux-system har bland annat följande kataloger:
/bin
Denna katalog innehåller körbara program som behövs för en användare läge och för att ta upp systemet eller reparera det.
/sbin
Som
/bin
, den här katalogen innehåller kommandon som behövs för att starta systemet men som vanligtvis inte körs av vanliga användare.
/usr/bin
Detta är den primära katalogen för körbara program. De flesta program som körs av vanliga användare som inte behövs för att starta eller reparera systemet och som inte installeras lokalt bör placeras i den här katalogen.
/usr/local/bin
Binärer för program som är lokala för webbplatsen.
/usr/local/sbin
Lokalt installerade program för systemadministration.
/usr/sbin
Den här katalogen innehåller programbinarier för systemadministration som inte är nödvändiga för startprocessen, för montering
/usr
eller för systemreparation .
Kommentarer
- Det här ’ t svara på användaren ’ s fråga.
- Man-sidan innehåller en post för var och en av fackkatalogerna och förklarar vad går in på dem, vilket var en av frågorna.
Svar
Filsystemshierar chy Standard -post i Wikipedia hjälpte mig att svara på samma fråga när jag hade den, plus att den har en mycket förklarande tabell.
Utdrag från sidan 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 Hämtad den 19 juni 2019; permalänk .
Svar
sbin
kataloger innehåller program som vanligtvis endast är systemadministration. Program för vanliga användare bör aldrig ingå i dem.
Några program behövs under start och hamnar i /bin/
eller /sbin/
. Dessa måste vara tillgängliga innan filsystem monteras. Saker som mount
och fsck
som krävs för att kontrollera och montera filsystem måste finnas där.
Mest packade program hamnar i /usr/bin/
och /usr/sbin/
. Dessa kan finnas på ett annat filsystem än rotfilsystemet. I vissa fall kan de finnas på en nätverksmonterad enhet.
Lokala program och skript hör till /usr/local/bin/
och /usr/local/sbin/
. Detta identifierar dem som klart icke-standardiserade och möjligen endast tillgängliga på plats.
För ytterligare förklaring, försök att köra kommandot man hier
som ska ge en beskrivning av den rekommenderade filsystemhierarkin för din distribution. Du kanske också vill läsa om Hierarkin för filsystem på Wikipedia
Kommentarer
- +1 En riktigt kortfattad förklaring om toppen är lite för mycket.
- ” Lokala program och skript hör till i / usr / local / bin / och / usr / local / sbin / ” – Du menar lokala program som i ” inte alls en del av operativsystemet, men jag bestämde mig för att installera dem och vill använda dem ”?
Svar
På 1970-talet hade UNIX alla officiella körbara filer i /bin
och /usr/bin
var en plats under användarnas hemkataloger (t.ex. /usr/dmr
) som var tillgänglig för alla användare att lagra egna binära filer som också kan ha varit intressanta för andra.
Resultatet av detta öppna /usr/bin
var en skräpgård med papperslös mjukvara och så Stephen Bourne wro te ett cron-skript som letade efter nya binära filer varje kväll och tog bort alla binära filer som inte hade någon dokumentation eller som har uppdaterats utan att uppdatera deras dokumentation också.
I slutet av 1970-talet, /usr/bin
integrerades i OS-basdistributionen och folk började använda /usr/local/bin
i syftet med föregående öppna /usr/bin
.
Efter ett tag använde sysadmins /usr/local/bin
för att lagra icke-lokal programvara som importerades från nätverket (t.ex. USENET) och eftersom UNIX-företag inte gillade att upprepa samma misstag som med /usr/bin
igen, fanns en filsystemhierarkikonferens runt 1987 där alla UNIX-företag gick med på att ge upp id = ”5dd614bde0”>
och istället använda/opt/<vendor>/bin
.
Linux-distros följde tyvärr inte detta beslut ….
Kommentarer
- Även om det var väldigt intressant, inget av detta försöker till och med svara på frågan som inte handlade om
/opt
och inte om UNIX utan om Linux. Det här är som att svara på ” Varför har bilar 4 hjul? ” med ” Cyklar har 2! Tyvärr, bilar don ’ t. ” vilket inte ’ t hjälper OP att förstå varför bilar har 4. - Om du inte kan använda den givna förklaringen som en förklaring till Linux-bakgrunden och det faktum att Linux gillar att efterlikna UNIX, kanske du saknar den nödvändiga bakgrunden.
- Intressant, men något jag blir förvirrad av och som kanske också bara är historiskt. Idag är nedladdning av en papperskorg online och en företagskorg ’ inte mycket annorlunda. Om Joe Blow skapar ett program och jag laddar ner det, varför inte lägga det i / opt / JowBlow / bin istället för / usr / local / bin. Är det en fråga om pålitlig leverantör kontra otillförlitlig? ’ verkar inte vara vettigt för mig.
- Jag önskar att jag hade känt detta ’ exakt ’ historia för några år tillbaka. a) Jag undrade varför AIX undvek / usr / local, använder / opt / IBM och / opt / ibm och bullfreeware använder / opt / freeware – och varför jag BOR ha använt en annan väg (inte bara / opt / * sbin). När det gäller halvrelevans med Linux – bättre GNU-verktyg – är standardprefixet i autoverktyg / usr / local. Synd autotools (automake, autoconf, etc. följer inte … Men vi överlever alla och lär oss var distrub. || leverantörer sätter sina program.
- Kan vi ha en annan av dessa konferenser? Just den här gången lyssnar ALLA!
/usr/sbin/
.~/bin/
för personliga saker./bin
slogs samman med/usr/bin
och/sbin
slogs samman med/usr/sbin
– se Fallet för / usr Merge ./usr/local/bin
?