/ usr / bin vs / usr / local / bin su Linux

Perché ci sono così tanti posti dove mettere un binario in Linux? Ce ne sono almeno cinque:

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

  • Hai dimenticato /usr/sbin/ .
  • E ~/bin/ per cose personali.
  • Oggigiorno ci sono meno posti, poiché /bin è stato unito a /usr/bin e /sbin è stato unito a /usr/sbin – vedi Il caso della fusione / usr .
  • @Calmarius, cosa? ‘ t utilizzare /usr/local/bin?
  • @Pacerier ~ / bin è solo per lutente corrente. Ad esempio, in server Linux multiutente in cui non sei un amministratore, ‘ è lunico modo per ” installare ” cose per te.

Rispondi

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

  2. /sbin, a differenza di /bin, è per i programmi di gestione del sistema (normalmente non utilizzati dagli utenti ordinari) necessari prima del montaggio di /usr.

  3. /usr/bin è per i normali programmi utente gestiti dalla distribuzione.

  4. Esiste un /usr/sbin con la stessa relazione con /usr/bin come /sbin deve /bin.

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

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *