Secondo il Filesystem Hierarchy Standard, ci sono diversi posti che sono accettabili, a seconda dell'applicazione. Ne cito ampiamente qui.
bin
è ovviamente l'abbreviazione di "binario"-
sbin
è l'abbreviazione di "server binary", altrimenti definito come:Utilità utilizzate per l'amministrazione del sistema (e altri comandi solo per root)
-
/usr
è per dati condivisibili e di sola lettura e dovrebbe essere condivisibile tra vari host compatibili con FHS (se hai molte macchine sulla tua rete e sono tutte della stessa architettura, dovresti essere in grado di condividere una singola cartella /usr con ogni macchina sulla rete) /usr/local
è destinato all'uso da parte dell'amministratore di sistema durante l'installazione del software in locale (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.- I programmi di amministrazione del sistema richiesti per la riparazione del sistema, il ripristino del sistema, il montaggio di /usr o altre funzioni essenziali devono essere inseriti in
/sbin
invece (cioè, le cose a cui devi accedere per montare/usr/sbin
vai in/sbin
) - Allo stesso modo, comandi utente essenziali che potrebbero essere necessari prima di
/usr
è montato vai in/bin
- Tutto ciò che è installato solo sulla macchina locale dovrebbe andare in
/usr/local/bin
o/usr/local/sbin
C'è un altro uso per /usr/local però. La maggior parte delle cose che installi tramite il gestore pacchetti della tua distribuzione verranno posizionate sotto /usr; molte persone invece mettono le cose che hanno compilato a mano sotto /usr/local. Ciò li tiene lontani dal sistema di gestione dei pacchetti e ti consente di individuare ciò che hai installato dalla distribuzione (e non è necessario eseguire il backup perché puoi recuperarlo di nuovo) e ciò che hai compilato a mano; consente inoltre di eseguire diverse versioni 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ù vicino a c:\program files
, in quanto è l'unico posto in cui ti aspetteresti di trovare un'applicazione con tutti i suoi file insieme in una cartella, piuttosto che sparsi in /usr/bin
, /var
e /etc
. Di solito è utilizzato solo da pacchetti molto grandi, ma in questo caso, dato che Netbeans vuole avere una propria cartella, probabilmente ha più senso metterlo sotto /opt/netbeans
In realtà si riduce alle preferenze personali. Spiegherò il mio per quello che vale.
/usr, /usr/bin sono di solito posizioni per il software installato dal sistema da installare. Quando installo le cose da solo, le installo in uno dei tanti posti:
- Se è uno script o un piccolo programma che userò solo io, lo installo in ~/bin:è qui che finisce la maggior parte delle mie cose.
- Se è qualcosa come hai descritto (NetBeans) con un proprio albero di file completo, lo installo in /opt
- Se è un singolo eseguibile, lo installo in /usr/local/bin
Perché distinguo tra #2 e #3? Non ne ho idea, è solo un'abitudine che ho sviluppato nel tempo. Funziona che /opt di solito finisce per diventare un profondo albero di file, ma ha solo 2 o 3 "cose" installate. In questo momento, ho lampp e lotus note installati in opt, 2 directory che hanno ciascuna alberi piuttosto grandi sotto di loro. 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 fanno parte della semplice installazione dal repository standard).