it-swarm.it

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

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

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

E sulla mia casella dell'ufficio, non ho i permessi di scrittura per alcuni di questi.

Che tipo di binario entra in quale di questi bins?

487
Lazer
  1. /bin (e /sbin) erano destinati a programmi che dovevano essere su un piccolo / partizione prima della più grande /usr, ecc. sono state montate le partizioni. In questi giorni, serve principalmente come posizione standard per programmi chiave come /bin/sh, sebbene l'intento originale possa ancora essere pertinente per es. installazioni su piccoli dispositivi integrati.

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

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

  4. C'è un /usr/sbin con la stessa relazione con /usr/bin come /sbin deve /bin.

  5. /usr/local/bin è per i normali programmi utente no gestito dal gestore dei pacchetti di distribuzione, ad es. pacchetti compilati localmente. Non dovresti installarli in /usr/bin perché futuri aggiornamenti della distribuzione potrebbero modificarli o eliminarli senza preavviso.

  6. /usr/local/sbin, come probabilmente puoi immaginare a questo punto, è /usr/local/bin come /usr/sbin per /usr/bin.

Inoltre, c'è anche /opt che è per i pacchetti monolitici di non distribuzione, anche se prima che fossero adeguatamente integrati varie distribuzioni vi collocano Gnome e KDE. Generalmente dovresti riservarlo a pacchetti di terze parti di grandi dimensioni e poco educati come Oracle.

600
geekosaur

Consiglio di dare un'occhiata alla pagina man della gerarchia del file system:

man hier

che è disponibile anche online, ad esempio: http://linux.die.net/man/7/hier . Le parti rilevanti sono state copiate di seguito. A seconda del tuo sistema, potrebbe dire qualcosa di diverso.

Nome

    hier - descrizione della gerarchia del file system

Descrizione

    Un tipico sistema Linux ha, tra le altre, le seguenti directory:

    /bin
      Questa directory contiene programmi eseguibili che sono necessari in modalità utente singolo e per ripristinare il sistema o ripristinarlo.
    /sbin
      Piace /bin, questa directory contiene i comandi necessari per avviare il sistema, ma che di solito non vengono eseguiti dagli 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 l'avvio o la riparazione del sistema e che non sono installati localmente devono essere inseriti in questa directory.
    /usr/local/bin
      Binari per programmi locali al sito.
    /usr/local/sbin
      Programmi installati localmente per l'amministrazione del sistema.
    /usr/sbin
      Questa directory contiene i file binari del programma per l'amministrazione del sistema che non sono essenziali per il processo di avvio, per il montaggio /usr o per la riparazione del sistema.
69
davitenio

La voce Filesystem Hierarchy Standard in Wikipedia mi ha aiutato a rispondere alla stessa domanda quando l'avevo, inoltre ha una tabella molto esplicativa.

Estratto da quella pagina1:

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

1Estratto il 19 giugno 2019; permalink .

36
Humphrey Bogart

Le directory sbin contengono programmi che sono generalmente solo amministrazione di sistema. I programmi per utenti regolari non dovrebbero mai entrare in essi.

Alcuni programmi sono necessari durante l'avvio e finiscono in /bin/ o /sbin/. Questi devono essere disponibili prima del montaggio dei file system. Cose come mount e fsck che sono necessarie per controllare e montare i file system devono essere lì.

La maggior parte dei programmi in pacchetto finisce in /usr/bin/ e /usr/sbin/. Questi possono trovarsi su un file system diverso dal file system radice. In alcuni casi potrebbero trovarsi su un'unità montata in rete.

Programmi e script locali appartengono a /usr/local/bin/ e /usr/local/sbin/. Questo li identifica come chiaramente non standard e possibilmente disponibili solo sul sito.

Per ulteriori spiegazioni prova a eseguire il comando man hier che dovrebbe fornire una descrizione della gerarchia di file system consigliata per la tua distribuzione. Potresti anche voler leggere Gerarchia dei file system su Wikipedia

17
BillThor

Negli anni '70, UNIX aveva tutti gli eseguibili ufficiali in /bin e /usr/bin era una posizione sotto le home directory degli utenti (ad esempio /usr/dmr) che era disponibile per qualsiasi utente per memorizzare i propri file binari che potrebbero essere stati di interesse anche per gli altri.

Il risultato di questo aperto /usr/bin era un ciarpame di software non documentato e quindi Stephen Bourne ha scritto un cron script che ha verificato la presenza di nuovi file binari ogni notte e ha rimosso tutti i file 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 ai fini dell'apertura precedente /usr/bin.

Dopo un po ', gli amministratori di sistema hanno utilizzato /usr/local/bin immagazzinare non-local software importato dalla rete (ad es. USENET) e poiché le società UNIX non hanno voluto ripetere lo stesso errore di /usr/bin ancora una volta, c'è stata una conferenza sulla gerarchia dei file system intorno al 1987 in cui tutte le società UNIX hanno accettato di rinunciare /usr/local/bin e usare /opt/<vendor>/bin anziché.

Sfortunatamente, le distro Linux non hanno seguito questa decisione ...

11
schily