/ usr / bin vs / usr / local / bin på Linux (Svenska)

Varför finns det så många platser att placera en binär i Linux? Det finns åtminstone dessa fem:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /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

  • Du har glömt /usr/sbin/ .
  • Och ~/bin/ för personliga saker.
  • Det finns färre platser idag, eftersom /bin slogs samman med /usr/bin och /sbin slogs samman med /usr/sbin – se Fallet för / usr Merge .
  • @Calmarius, vad? ska du inte ’ om du använder /usr/local/bin?
  • @Pacerier ~ / bin är endast för den aktuella användaren. Till exempel i fleranvändare av Linux-servrar där du inte är administratör som ’ är det enda sättet att ” installerar ” saker för dig själv.

Svar

  1. /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.

  2. /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.

  3. /usr/bin är för distributionshanterade normala användarprogram.

  4. Det finns en /usr/sbin med samma relation till /usr/bin som /sbin måste /bin.

  5. /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.

  6. /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, och echo $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!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *