Perché ci sono così tanti posti dove mettere un binario in Linux? Ce ne sono almeno cinque:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
E sulla mia casella di ufficio, non ho i permessi di scrittura per alcuni di questi.
Che tipo di binario va in quale di questi bin
s?
Commenti
Rispondi
-
/bin
(e/sbin
) erano destinati a programmi che dovevano trovarsi su una piccola partizione/
prima della più grande/usr
e così via sono state montate partizioni. Al giorno doggi, serve principalmente come posizione standard per programmi chiave come/bin/sh
, sebbene lintento originale possa essere ancora rilevante ad es. installazioni su piccoli dispositivi incorporati. -
/sbin
, a differenza di/bin
, è per i programmi di gestione del sistema (normalmente non utilizzati dagli utenti ordinari) necessari prima del montaggio di/usr
. -
/usr/bin
è per i normali programmi utente gestiti dalla distribuzione. -
Esiste un
/usr/sbin
con la stessa relazione con/usr/bin
come/sbin
deve/bin
. -
/usr/local/bin
è per normali programmi utente non gestiti dal gestore dei pacchetti di distribuzione, ad es. pacchetti compilati localmente. Non installarli in/usr/bin
perché i futuri aggiornamenti della distribuzione potrebbero modificarli o eliminarli senza preavviso. -
/usr/local/sbin
, come probabilmente puoi intuire a questo punto, deve/usr/local/bin
come/usr/sbin
con/usr/bin
.
Inoltre, cè anche /opt
che è per pacchetti monolitici non di distribuzione, sebbene prima che fossero integrate correttamente, varie distribuzioni mettevano Gnome e KDE lì. In genere dovresti riservarlo a pacchetti di terze parti grandi e mal funzionanti come Oracle.
Commenti
- Penso che questa risposta faccia un ottimo lavoro di chiarimento un insieme comune di convenzioni, ma questo post di Rob Landley è davvero unottima lettura se vuoi approfondire le sciocchezze … lists.busybox.net/pipermail/busybox/2010 -December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml per il riferimento canonico corrente. Il link di @kojiro è obsoleto e ‘ non ha la nuova specifica.
- Dove metto un cestino che ho scaricato da Internet? Dalla tua descrizione sembra che dovrebbe andare in / usr / local / bin o / usr / bin. / Usr / bin è qualcosa che non dovrei mai toccare manualmente e lasciare che giochi solo con il gestore dei pacchetti?
- @DidierA. mettilo in
~/bin
e aggiungi quella directory al tuo PERCORSO come utente … Grazie per la nota, ho cancellato il mio commento seriamente obsoleto. - Ho trovato il rispondi alla prima parte della mia domanda qui: superuser.com/a/238993/425838 . La precedenza si basa sullordine nella variabile
PATH
di sistema eecho $PATH
per me mostra/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, il che significa che gli eseguibili in/usr/local/bin
hanno la precedenza su quelli in/usr/bin
che hanno la precedenza su quelli in/bin
.
Risposta
Consiglio di dare unocchiata alla pagina man della gerarchia del file system:
man hier
disponibile anche online, ad esempio: http://linux.die.net/man/7/hier . Le parti pertinenti sono state copiate di seguito. A seconda del sistema, potrebbe dire qualcosa di diverso.
Nome
hier: descrizione della gerarchia del file system
Descrizione
Un tipico sistema Linux ha, tra gli altri, le seguenti directory:
/bin
Questa directory contiene programmi eseguibili necessari in un singolo utente modalità e per avviare o riparare il sistema.
/sbin
Come
/bin
, questa directory contiene i comandi necessari per avviare il sistema, ma che di solito non vengono eseguiti da utenti normali.
/usr/bin
Questa è la directory principale per i programmi eseguibili. La maggior parte dei programmi eseguiti da utenti normali che non sono necessari per lavvio o per la riparazione del sistema e che non sono installati localmente dovrebbero essere posizionati in questa directory.
/usr/local/bin
Binari per programmi locali nel sito.
/usr/local/sbin
Programmi installati localmente per lamministrazione del sistema.
/usr/sbin
Questa directory contiene programmi binari per lamministrazione del sistema che non sono essenziali per il processo di avvio, per il montaggio di
/usr
o per la riparazione del sistema .
Commenti
- Questo non ‘ t rispondere alla ‘ domanda.
- La pagina man contiene una voce per ciascuna delle directory bin, che spiega cosa entra in esse, che era una delle domande.
Rispondi
Il File system Hierar La voce chy Standard in Wikipedia mi ha aiutato a rispondere alla stessa domanda quando lho avuta, inoltre ha una tabella molto esplicativa.
Estratto da quella 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 Estratto il 19 giugno 2019; permalink .
Risposta
Il Le directory sbin
contengono programmi che generalmente sono solo amministratori di sistema. I programmi per utenti regolari non dovrebbero mai essere inseriti.
Alcuni programmi sono necessari durante lavvio e finiscono in /bin/
o /sbin/
. Questi devono essere disponibili prima di montare i file system. Cose come mount
e fsck
necessarie per controllare e montare i file system devono essere presenti.
La maggior parte dei pacchetti i programmi finiscono in /usr/bin/
e /usr/sbin/
. Questi potrebbero trovarsi su un file system diverso dal file system radice. In alcuni casi potrebbero trovarsi su ununità montata in rete.
I programmi e gli script locali appartengono a /usr/local/bin/
e /usr/local/sbin/
. Questo li identifica come chiaramente non standard e possibilmente disponibili solo in loco.
Per ulteriori spiegazioni prova a eseguire il comando man hier
che dovrebbe fornire una descrizione della gerarchia del file system consigliata per la tua distribuzione. Potresti anche leggere informazioni sulla Gerarchia del file system su Wikipedia
Commenti
- +1 Una spiegazione davvero concisa se top è un po troppo.
- ” I programmi e gli script locali appartengono a / usr / local / bin / e / usr / local / sbin / ” – Intendi programmi locali come in ” non fanno affatto parte del sistema operativo, ma ho deciso di installarlo e desideri utilizzarli “?
Risposta
Negli anni 70, UNIX aveva tutti gli eseguibili ufficiali in /bin
e /usr/bin
era una posizione sotto le home directory degli utenti (ad es. /usr/dmr
) che era disponibile per qualsiasi utente per memorizzare i propri file binari che avrebbero potuto interessare anche ad altri.
Il risultato di questo /usr/bin
era un deposito di spazzatura di software non documentato e quindi Stephen Bourne è arrivato te uno script cron che verificava la presenza di nuovi binari ogni notte e rimuoveva tutti i binari che non avevano una documentazione o che sono stati aggiornati senza aggiornare anche la loro documentazione.
Alla fine degli anni 70, /usr/bin
è stato integrato nella distribuzione di base del sistema operativo e le persone hanno iniziato a utilizzare /usr/local/bin
per lo scopo del precedente /usr/bin
.
Dopo un po , gli amministratori di sistema hanno utilizzato /usr/local/bin
per archiviare software non locale importato dalla rete (ad es. USENET) e poiché alle aziende UNIX non piaceva ripetere lo stesso errore di /usr/bin
, intorno al 1987 ci fu una conferenza sulla gerarchia del file system in cui tutte le società UNIX accettarono di rinunciare a /usr/local/bin
e di utilizzare /opt/<vendor>/bin
al suo posto.
Sfortunatamente, le distribuzioni Linux non hanno seguito questa decisione ….
Commenti
- Sebbene molto interessante, niente di tutto questo cerca persino di rispondere alla domanda posta che non riguardava
/opt
e non su UNIX ma su Linux. È come rispondere ” Perché le auto hanno 4 ruote? ” con ” Le biciclette hanno 2! Purtroppo, le auto non ‘ t. ” che ‘ non aiutano lOP a capire il motivo cars ne hanno 4. - Se non sei in grado di utilizzare la spiegazione fornita come spiegazione dello sfondo di Linux e del fatto che a Linux piace imitare UNIX, potresti perdere lo sfondo necessario.
- Interessante, ma qualcosa su cui mi confondo e che forse è anche solo storico. Oggi, il download di un cestino in linea e un cestino aziendale non è ‘ molto diverso. Se Joe Blow crea un programma e io lo scarico, perché non inserirlo in / opt / JowBlow / bin invece di / usr / local / bin. È una questione di provider affidabile o non affidabile? ‘ non mi sembra avere senso.
- Avrei voluto saperlo ‘ esatto ‘ cronologia di alcuni anni fa. a) Mi chiedevo perché AIX ha evitato / usr / local, usa / opt / IBM e / opt / ibm e bullfreeware usa / opt / freeware – e perché DOVREI usare un percorso diverso (non solo / opt / * sbin). Per quanto riguarda la semi-rilevanza con Linux – strumenti GNU migliori – limpostazione predefinita –prefix in auto-tools è / usr / local. Peccato che gli autotools (automake, autoconf, ecc. Non seguono …. Ma sopravviviamo tutti e impariamo dove i fornitori di distrub. || mettono i loro programmi.
- Potremmo avere unaltra di queste conferenze? Solo questa volta, TUTTI ASCOLTANO!
/usr/sbin/
.~/bin/
per cose personali./bin
è stato unito a/usr/bin
e/sbin
è stato unito a/usr/sbin
– vedi Il caso della fusione / usr ./usr/local/bin
?