Qual è il percorso di installazione convenzionale per le applicazioni in Linux?


73

Attualmente sto installando NetBeans e la directory di installazione predefinita è /home/thomasowens/netbeans-6.8. Io non sono un fan di quella posizione, così sto guardando /etc, /bin, /usr/bin, e /sbin. Linux ha un posto che, per convenzione, è uguale alla C:\Program Filesdirectory di Windows ?

Risposte:


99

Secondo il Filesystem Hierarchy Standard , esistono diversi posti accettabili, a seconda dell'applicazione. Ne sto citando ampiamente qui.

  • bin è l'abbreviazione di "binario", ovviamente
  • sbin è l'abbreviazione di "server binary", altrimenti definito come:

    Utilità utilizzate per l'amministrazione del sistema (e altri comandi solo root)

  • /usr è per dati condivisibili di sola lettura e dovrebbe essere condivisibile tra vari host conformi a FHS (se sulla tua rete sono presenti molte macchine e hanno tutte la stessa architettura, dovresti essere in grado di condividere una singola cartella / usr con ogni macchina in rete)

  • /usr/local deve essere utilizzato dall'amministratore di sistema quando si installa il software localmente (ovvero, per le applicazioni installate solo su questa macchina, non su tutte le macchine della rete).

Prendendo questi insieme:

  • /usr/bin è la directory principale dei comandi eseguibili sul sistema.
  • /usr/sbin è per tutti i file binari non essenziali utilizzati esclusivamente dall'amministratore di sistema.
  • Programmi di amministrazione del sistema che sono necessari per la riparazione del sistema, il ripristino del sistema, il montaggio / usr, o altre funzioni essenziali devono essere collocati in /sbinposto (vale a dire, le cose che servono per accedere al fine di montare /usr/sbinandare in /sbin)
  • Allo stesso modo, i comandi utente essenziali che potrebbero essere necessari prima del /usrmontaggio vengono inseriti/bin
  • Tutto ciò che è installato solo sul computer locale dovrebbe entrare /usr/local/bino/usr/local/sbin

C'è un altro uso per / usr / local però. La maggior parte delle cose che installi attraverso il gestore dei pacchetti della tua distro saranno collocate in / usr; molte persone mettono invece le cose che hanno compilato a mano in / usr / local. Questo li tiene lontani dal sistema di gestione dei pacchetti e consente di individuare ciò che è stato installato dalla distribuzione (e non è necessario eseguire il backup perché è possibile recuperarlo di nuovo) e ciò che è stato compilato manualmente; consente inoltre di eseguire versioni diverse contemporaneamente (ad esempio, / usr / bin / firefox vs / usr / local / bin / firefox).


Proprio quando pensavi che le cose fossero sistemate, c'è un altro posto, che è probabilmente l'equivalente più vicino di c:\Program Files- /opt:

/opt è riservato all'installazione di pacchetti software applicativi aggiuntivi. »

/optè probabilmente l'equivalente più a c:\program files, in quanto è l'unico posto che ci si aspetta di trovare un'applicazione con tutti i suoi file insieme in una cartella, piuttosto che sparsi /usr/bin, /vare /etc. Di solito è usato solo da pacchetti molto grandi, ma in questo caso, dato che Netbeans vuole avere una propria cartella, probabilmente ha più senso metterlo in / opt / netbeans


3
interessante. se avessi progettato Linux avrei inserito le app condivise di rete in / usr / shared e poi le app host privatamente locali in / usr. in questo modo potrei condividere / usr / shared senza anche, tramite ereditarietà, condividere / usr.
Djangofan,

1
Davvero una bella risposta. Mi piace anche il commento su come tenere le cose fuori dal sistema di gestione dei pacchetti.
DaveParillo,

1
Sicuramente / optare per "pacchetti completi di terze parti". La maggior parte delle installazioni suddivide i vari binari, librerie, file, ecc. In diverse directory, ma quando si dispone di una directory "tutto in uno", / opt semplifica la gestione.
Avery Payne,

Coppia domande veloci: 1) Se / usr dovrebbe essere condivisibile tra tutte le macchine su una rete, ciò non significa che anche tutte le directory figlio sarebbero condivisibili, rendendo quindi / usr / local visibili ad altre macchine sulla rete? 2) Cos'è FHS 3) Quando parli di comandi necessari per il montaggio / usr, stai parlando del modo in cui il sistema operativo si avvia, per esempio, un arresto? Mi scuso per il bombardamento di domande 7 anni dopo, ma sono nuovo su Linux e ho avuto la stessa domanda dopo aver visto le guide di installazione dire dove mettere le cose, ma non PERCHÉ metterle lì. +1 a
settimana

5

In realtà dipende dalle preferenze personali. Spiegherò il mio per quello che vale.

/ usr, / usr / bin sono di solito posti per l'installazione del software installato dal sistema. Quando installo le cose da solo, le installo in una delle varie posizioni:

  1. Se è uno script o un piccolo programma che userò, lo installo in ~ / bin - è qui che finisce la maggior parte delle mie cose.
  2. Se è qualcosa che hai descritto (NetBeans) con un albero di file completo, lo installo in / opt
  3. Se è un singolo eseguibile, lo installo in / usr / local / bin

Perché faccio una distinzione tra # 2 e # 3? Nessuna idea, è solo un'abitudine che ho sviluppato nel tempo. Risulta che / opt di solito finisce per diventare un albero profondo di file, ma ha solo 2 o 3 "cose" installate. In questo momento, ho installato le note di lampp e di loto in opt, 2 directory che ognuna ha alberi piuttosto grandi sotto di esse. In / usr / local / bin, ho 20 o 30 voci, ma nessuna sottodirectory.

Non installo cose in / usr / bin o / usr / sbin perché mi piace tenere separate le cose che aggiungo manualmente (non parte della semplice installazione dal repository standard).


1

Mentre il Filesystem Hierarchy Standard fornisce alcune indicazioni. Ho scoperto che alla maggior parte delle distribuzioni piace installare i pacchetti /usr/share.

Per questo motivo, ho adottato la pratica di installare qualsiasi applicazione non installata tramite Gestione pacchetti (rpm / apt-get / emerge) in /usr/local. Questo mi permette di mantenere le applicazioni e le librerie che non sono gestite tramite la gestione dei pacchetti separate da quelle che lo sono.

È una tecnica che mi ha aiutato a gestire il mio sistema con Fedora Core e Gentoo.


0

Avrei pensato che il percorso predefinito fosse /bin, è dove praticamente tutto viene installato di default se si usa apt-get o simili ...

... Tuttavia, quando si tratta di programmi più moderni (o senza programma di installazione) che hanno molti file aggiuntivi, mi piace inserirli nella loro directory /bin.


3
Qual è la differenza tra / bin, / usr / bin e / sbin? / bin ha più senso, poiché è per i file BINary.
Thomas Owens,

0

Di solito si installano in più cartelle, principalmente / usr, / local, / bin, ecc. Puoi scoprire dove si installa il programma dal programma di installazione GDebi (sotto la scheda file). Se hai intenzione di spostare Netbeans, suggerirei di spostarlo su / opt, perché è lì che Google sembra installare i suoi contenuti.


0

Concordare con la risposta di James Polley, ma in realtà la directory predefinita ha molto senso a meno che non sia necessario condividere l'applicazione tra più account. Per esempio, avevo bisogno di installare Eclipse 3.0 (obsoleto) per fare il lavoro Flex su Linux, e l'ho messo in $ HOME / eclipse3.


0

Mi piace usare / app per la maggior parte delle app aggiuntive che installo su più server. Conservo una copia della cartella in / installs / apps sul mio server nfs. Quando creo un nuovo server Linux monto la cartella delle installazioni e copia / app e ho molte diverse app comuni sul nuovo server. Cancella quelle voci che non mi servono per questo nuovo server e ho finito. Bene, forse ho bisogno di eseguire uno o tre script per impostare variabili di ambiente o istruzioni di percorso, ma è praticamente quello che serve per configurare molti nuovi server.

Vengo da uno sfondo Windows e .net. Una delle promesse di .net era che la maggior parte delle app potesse essere installata utilizzando Windows xcopy. Cerco la stessa cosa in Linux. Se disponibile, scelgo il tarball su RPM o yum, ecc. In modo da poter distribuire in / app con cp -r e aggiungere l'app al mio server nfs per future distribuzioni.


2
La domanda richiede la convenzione. Hai descritto quello che fai, personalmente. Puoi almeno collegarlo a una convenzione?
fixer1234,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.