Waarom zijn er zoveel plaatsen om een binair bestand in Linux te plaatsen? Er zijn tenminste deze vijf:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/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
Antwoord
-
/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. -
/sbin
, in tegenstelling tot/bin
, is voor systeembeheerprogrammas (normaal niet gebruikt door gewone gebruikers) die nodig zijn voordat/usr
is aangekoppeld. -
/usr/bin
is voor door distributie beheerde normale gebruikersprogrammas. -
Er is een
/usr/sbin
met dezelfde relatie tot/usr/bin
aangezien/sbin
moet/bin
. -
/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. -
/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
enecho $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!
/usr/sbin/
vergeten .~/bin/
voor persoonlijke zaken./bin
is samengevoegd met/usr/bin
en/sbin
is samengevoegd met/usr/sbin
– zie De argumenten voor de / usr-samenvoeging ./usr/local/bin
gebruikt?