/ usr / bin vs / usr / local / bin onder Linux

Waarom zijn er zoveel plaatsen om een binair bestand in Linux te plaatsen? Er zijn tenminste deze vijf:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

En op mijn kantoorbox heb ik geen schrijfrechten voor sommige hiervan.

Welk type binair bestand gaat in welke van deze bin s?

Reacties

  • Je bent /usr/sbin/ vergeten .
  • En ~/bin/ voor persoonlijke zaken.
  • Er zijn tegenwoordig minder plaatsen sinds /bin is samengevoegd met /usr/bin en /sbin is samengevoegd met /usr/sbin – zie De argumenten voor de / usr-samenvoeging .
  • @Calmarius, wat? shouldn ‘ t u /usr/local/bin gebruikt?
  • @Pacerier ~ / bin is alleen voor de huidige gebruiker. Bijvoorbeeld in Linux-servers met meerdere gebruikers waar u geen beheerder bent die ‘ de enige manier is om ” dingen voor jezelf.

Antwoord

  1. /bin (en /sbin) waren bedoeld voor programmas die op een kleine / partitie moesten staan voordat de grotere /usr, etc. partities zijn aangekoppeld. Tegenwoordig dient het meestal als een standaardlocatie voor sleutelprogrammas zoals /bin/sh, hoewel de oorspronkelijke bedoeling nog steeds relevant kan zijn voor bijv. installaties op kleine embedded apparaten.

  2. /sbin, in tegenstelling tot /bin, is voor systeembeheerprogrammas (normaal niet gebruikt door gewone gebruikers) die nodig zijn voordat /usr is aangekoppeld.

  3. /usr/bin is voor door distributie beheerde normale gebruikersprogrammas.

  4. Er is een /usr/sbin met dezelfde relatie tot /usr/bin aangezien /sbin moet /bin.

  5. /usr/local/bin is voor normale gebruikersprogrammas niet beheerd door de distributiepakketbeheerder, bijv. lokaal gecompileerde pakketten. U moet ze niet installeren in /usr/bin omdat toekomstige distributie-upgrades ze zonder waarschuwing kunnen wijzigen of verwijderen.

  6. /usr/local/sbin, zoals je waarschijnlijk op dit punt kunt raden, is /usr/local/bin als /usr/sbin naar /usr/bin.

Daarnaast is er ook /opt die voor monolithische niet-distributiepakketten is, hoewel voordat ze correct werden geïntegreerd, plaatsten verschillende distributies Gnome en KDE daar. Over het algemeen zou u het moeten reserveren voor grote, slecht gedragende pakketten van derden, zoals Oracle.

Opmerkingen

  • Ik denk dat dit antwoord uitstekend verhelderend werkt een veel voorkomende reeks conventies, maar dit bericht van Rob Landley is echt geweldig om te lezen als je inzicht wilt hebben in de onzin … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
  • refspecs.linuxfoundation.org/fhs.shtml voor de canonieke huidige referentie. De link van @kojiro is verouderd en heeft ‘ niet de nieuwe specificatie.
  • Waar kan ik een prullenbak plaatsen die ik van internet heb gedownload? Uit je beschrijving klinkt het alsof het in / usr / local / bin of / usr / bin moet gaan. Is / usr / bin iets dat ik nooit handmatig zou moeten aanraken en alleen de pakketbeheerder ermee zou laten spelen?
  • @DidierA. plaats het in ~/bin en voeg die map toe aan je PATH als gebruiker … Bedankt voor de opmerking, ik heb mijn ernstig verouderde opmerking verwijderd.
  • Ik vond de antwoord op het eerste deel van mijn vraag hier: superuser.com/a/238993/425838 . De prioriteit is gebaseerd op de volgorde in de systeemvariabele PATH en echo $PATH toont voor mij /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games , wat betekent dat uitvoerbare bestanden in /usr/local/bin voorrang hebben op die in /usr/bin die voorrang hebben op die in /bin.

Answer

Ik raad aan om de man-pagina van de bestandssysteemhiërarchie te bekijken:

man hier 

die ook online beschikbaar is, bijvoorbeeld: http://linux.die.net/man/7/hier . Relevante delen zijn hieronder gekopieerd. Afhankelijk van uw systeem kan het iets anders zeggen.

Naam

    hier – beschrijving van de bestandssysteemhiërarchie

Beschrijving

    Een typisch Linux-systeem heeft onder andere de volgende mappen:

    /bin

      Deze map bevat uitvoerbare programmas die nodig zijn voor één gebruiker modus en om het systeem te openen of te repareren.

    /sbin

      Net als /bin bevat commandos die nodig zijn om het systeem op te starten, maar die gewoonlijk niet worden uitgevoerd door normale gebruikers.

    /usr/bin

      Dit is de primaire directory voor uitvoerbare programmas. De meeste programmas die door normale gebruikers worden uitgevoerd en die niet nodig zijn voor het opstarten of voor het repareren van het systeem en die niet lokaal zijn geïnstalleerd, moeten in deze map worden geplaatst.

    /usr/local/bin

      Binaire bestanden voor programmas die lokaal op de site voorkomen.

    /usr/local/sbin

      Lokaal geïnstalleerde programmas voor systeembeheer.

    /usr/sbin

      Deze map bevat programmabinaries voor systeembeheer die niet essentieel zijn voor het opstartproces, voor het aankoppelen van /usr of voor systeemherstel .

Reacties

  • Dit niet ‘ t beantwoord de vraag van de gebruiker ‘.
  • De man-pagina bevat wel een vermelding voor elk van de bin-directorys, waarin wordt uitgelegd wat ingaat, wat een van de vragen was.

Antwoord

De Bestandssysteem hierar chy Standard -vermelding in Wikipedia hielp me dezelfde vraag te beantwoorden toen ik hem had, plus het heeft een zeer verklarende tabel.

Fragment van die pagina 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 Opgehaald op 19 juni 2019; permalink .

Antwoord

De sbin -mappen bevatten programmas die over het algemeen alleen voor systeembeheer zijn. Programmas voor gewone gebruikers zouden er nooit in moeten zitten.

Een paar programmas zijn nodig tijdens het opstarten, en eindigen in /bin/ of /sbin/. Deze moeten beschikbaar zijn voordat bestandssystemen worden aangekoppeld. Dingen zoals mount en fsck die nodig zijn om bestandssystemen te controleren en te mounten, moeten aanwezig zijn.

De meeste zijn verpakt programmas eindigen in /usr/bin/ en /usr/sbin/. Deze kunnen op een ander bestandssysteem staan dan het rootbestandssysteem. In sommige gevallen kunnen ze op een netwerkstation staan.

Lokale programmas en scripts horen thuis in /usr/local/bin/ en /usr/local/sbin/ . Dit identificeert ze als duidelijk niet-standaard en mogelijk alleen ter plaatse beschikbaar.

Probeer voor verdere uitleg het commando man hier uit te voeren, wat een beschrijving zou moeten geven van de aanbevolen bestandssysteemhiërarchie voor uw distributie. Misschien wil je ook lezen over de Bestandssysteemhiërarchie op Wikipedia

Opmerkingen

  • +1 Een heel beknopte uitleg als top een beetje te veel is.
  • ” Lokale programmas en scripts horen thuis in / usr / local / bin / en / usr / local / sbin / ” – Je bedoelt lokale programmas zoals in ” helemaal niet onderdeel van het besturingssysteem, maar ik besloot te installeren ze en wil je ze gebruiken “?

Antwoord

In de jaren 70 had UNIX alle officiële uitvoerbare bestanden in /bin en /usr/bin was een locatie onder de homedirectorys van de gebruikers (bijv. /usr/dmr) die beschikbaar was voor elke gebruiker om eigen binaire bestanden op te slaan die ook voor anderen interessant zouden kunnen zijn geweest.

Het resultaat van deze open /usr/bin was een vuilnisbelt van ongedocumenteerde software en dus wro te een cron-script dat elke nacht op nieuwe binaire bestanden controleerde en alle binaire bestanden verwijderde die geen documentatie hadden of die zijn bijgewerkt zonder ook hun documentatie bij te werken.

Eind jaren zeventig, /usr/bin werd geïntegreerd in de OS-basisdistributie en mensen begonnen /usr/local/bin te gebruiken voor de vorige open /usr/bin .

Na een tijdje gebruikten sysadmins /usr/local/bin om niet-lokale software op te slaan die uit het netwerk was geïmporteerd (bijv. de USENET) en aangezien UNIX-bedrijven niet graag dezelfde fout herhaalden als met /usr/bin, was er rond 1987 een hiërarchieconferentie over bestandssystemen waar alle UNIX-bedrijven ermee instemden /usr/local/bin en om in plaats daarvan /opt/<vendor>/bin te gebruiken.

Helaas hebben Linux-distributies deze beslissing niet gevolgd …

Reacties

  • Hoewel het erg interessant is, heeft dit niets van probeert zelfs de gestelde vraag te beantwoorden die niet over /opt ging en niet over UNIX maar over Linux. Dit is hetzelfde als het beantwoorden van ” Waarom hebben autos 4 wielen? ” met ” Fietsen hebben 2! Helaas, autos ‘ t. ” wat ‘ niet helpt om te begrijpen waarom cars hebben er 4.
  • Als je de gegeven uitleg niet kunt gebruiken als uitleg voor de achtergrond van Linux en het feit dat Linux graag UNIX nabootst, kan het zijn dat je de benodigde achtergrond mist.
  • Interessant, maar iets waarover ik in de war raak en dat misschien ook alleen historisch is. Tegenwoordig is het downloaden van een prullenbak online en een prullenbak van het bedrijf niet ‘ heel anders. Als Joe Blow een programma maakt en ik download het, waarom zet je het dan niet in / opt / JowBlow / bin in plaats van / usr / local / bin. Is het een kwestie van vertrouwde provider versus niet-vertrouwde? Het lijkt me niet ‘ niet logisch te zijn.
  • Ik wou dat ik dit ‘ exacte ‘ geschiedenis een paar jaar geleden. a) Ik vroeg me af waarom AIX / usr / local, / opt / IBM en / opt / ibm en bullfreeware-toepassingen / opt / freeware vermeed – en waarom ik een ander pad MOET hebben gebruikt (niet alleen / opt / * sbin). Wat betreft semi-relevantie met Linux – betere GNU-tools – is de standaard – prefix in auto-tools / usr / local. Jammer dat autotools (automake, autoconf, etc. niet volgen …. Maar we overleven allemaal en leren waar de distrub. || leveranciers hun programmas plaatsen.
  • Kunnen we nog een van deze conferenties houden? Alleen deze keer, IEDEREEN LUISTER!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *