/ usr / bin vs / usr / local / bin på Linux

Hvorfor er der så mange steder at placere en binær i Linux? Der er mindst disse fem:

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

  • Du har glemt /usr/sbin/ .
  • Og ~/bin/ til personlige ting.
  • Der er færre steder i dag, da /bin blev flettet med /usr/bin og /sbin blev flettet med /usr/sbin – se Sagen for / usr Merge .
  • @Calmarius, hvad? skal ‘ ikke bruges /usr/local/bin?
  • @Pacerier ~ / bin er kun til den aktuelle bruger. For eksempel i Linux-servere med flere brugere, hvor du ikke er administrator, der ‘ er den eneste måde at ” installere ” ting til dig selv.

Svar

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

  2. /sbin, adskilt fra /bin, er til systemadministrationsprogrammer (normalt ikke brugt af almindelige brugere) nødvendige før /usr er monteret.

  3. /usr/bin er til distributionsstyrede normale brugerprogrammer.

  4. Der er en /usr/sbin med samme forhold til /usr/bin som /sbin skal /bin.

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

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *