Quando si installano le applicazioni utente, dove suggeriscono che si trovano le "migliori pratiche"?


210

Occasionalmente installo le applicazioni manualmente, anziché utilizzare apto un altro gestore pacchetti.

Che posizione ( /usr/, /usr/local/, /opt/, /home/, etc.) è suggerito da "buone pratiche" per l'installazione di applicazioni utente?


Mi piace installare le cose dal sorgente ogni tanto, ho scritto un piccolo strumento per farlo che fa da solo le modifiche al file di avvio della shell (e modifica anche il prefisso della libreria, se lo chiedi, per programmi che dipendono da librerie condivise ). Non molto ricco di funzionalità, ma funziona il 99% delle volte.
nuovo123456,

Articolo correlato: askubuntu.com/q/138547/62483
Lucio,

1
Grande discussione sulla distinzione tra /opte /usr/local: unix.stackexchange.com/q/11544/11917
blong

Risposte:


184

Dipende davvero. Se l'applicazione ha un makefile o, ad esempio, per le app Python se l'applicazione utilizza distutils (ad esempio, ha un setup.pyfile) o un sistema simile build / install, è necessario installarlo in /usr/local/. Questo è spesso il comportamento predefinito.

Da quello che ho capito, /usr/local/ha una gerarchia simile /usr/. Tuttavia, le directory come /usr/bin/e di /usr/lib/solito sono riservate per l'installazione dei pacchetti tramite apt. Quindi un programma che si aspetta di essere "installato" /usr/dovrebbe funzionare bene /usr/local/.

Se devi solo estrarre un tarball ed eseguire direttamente (ad esempio Firefox), inseriscilo /opt/. Un programma che ha solo bisogno di una directory e otterrà tutti i file / librerie relativi a quella directory può ottenere una directory per sé /opt/.


24
Sembra che molte persone se ne dimentichino opt/- secondo me hai colpito l'unghia sulla testa per il suo scopo.
Marco Ceppi

3
Crea un collegamento simbolico da / usr / bin o aggiungilo a PATH in ~ / .bashrc
Alex

1
Che dire ~/.local/share? @Marco
ultimatex

1
Puoi installare cose all'interno ~(la tua home directory), ma ciò renderà un'applicazione accessibile solo a un utente. Altri utenti sul tuo sistema dovranno installare e mantenere le proprie installazioni di quel software. Per quanto riguarda le migliori pratiche sull'installazione delle applicazioni, installa la tua home directory, credo che non ci siano linee guida così forti perché non interferirai con i pacchetti di sistema.
Umang,

1
È sbagliato installare app 'decompresse da tar' in / home / ubuntu / myapp - che differenza fa rispetto a / opt / myapp?
JARC

116

È bene ricordare che /usrnon rappresenta l' utente ma piuttosto unix le risorse di sistema .

In quanto tale, tendo a capire che qualsiasi distribuzione ha il diritto di calpestare tutti i contenuti /usr,e che le mie specifiche aggiunte al sistema entrano /usr/local, che conservo prima di fare un aggiornamento.

Nel frattempo, applicazioni e altre cose entrano /opt.

Alcune persone si sentono a proprio agio nel mettere le cose /home, anche se raramente seguo quella convenzione.

Detto questo, ho lasciato prima che il gestore dei pacchetti di distribuzione facesse le cose a modo suo, e poi facesse quanto sopra quando rotolava le cose a mano.


35
Vale la pena ricordare che "risorse di sistema unix" è una ridenominazione eseguita DOPO che "/ home" è stata aggiunta. Nei vecchi, vecchi, vecchi tempi (Unix Versione 6 et.al.) vedresti directory come / usr / jimmy, / usr / siobhan, / usr / ahmed, ecc. Perché le directory "utente" sono state memorizzate in / usr .
Mark Leighton Fisher,

5
OK, mordo: cosa significa Opt?
Seth,

3
@Seth Penso che sia 'opzionale' - originariamente era per software che non faceva parte di un'installazione predefinita.
Carl H,

5
/ usr è User. Questo perché gli utenti di Linux erano sviluppatori. Innanzitutto, quando ha iniziato a dividere in sviluppatori e utenti, è /homestata introdotta la directory dir. E poi qualcuno ha avuto l'idea di dire che significa Unix System Resources, il che non ha davvero senso, perché abbiamo l' Unix system Resourcesin/dev
Info-Screen

2
Corretto, / usr è un backronym. Lo scopo è cambiato dai tempi in cui Unix era in esecuzione su un PDP-7 nel 1969.
Walt Stoneburner,

34

Installa programmi instabili come firefox devel in / home / user / opt / rende molto più facile la rimozione e non c'è confusione per gli altri utenti su quale versione dovrebbero usare ... Quindi se non è un programma per uso globale, installa in una sottocartella nella tua home directory.

Non installare programmi in / usr /, è probabile che causi caos, le cose installate in / usr / sono destinate esclusivamente ai pacchetti di distribuzione. / usr / local / è per i pacchetti compilati localmente. E la struttura funziona esattamente allo stesso modo! i file in / usr / local / avranno la priorità rispetto ai file in / usr /

/ opt / dovrebbe essere usato per l'installazione di pacchetti precompilati (binari) (Thunderbird, Eclipse, Netbeans, IBM NetSphere, ecc.) e simili. Ma se sono solo per un singolo utente, dovrebbero essere inseriti nella tua home directory.

Se vuoi essere in grado di eseguire un programma installato in una posizione "strana" (come / home / user / opt / firefox /) senza digitare l'intero percorso che devi aggiungere alla tua variabile $ PATH, puoi farlo aggiungendo una linea come questa nel tuo /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

Il nome della cartella dovrebbe essere quello in cui si trova il file eseguibile che devi eseguire.


26

Lo standard della gerarchia del filesystem Linux indica /usr/local.

Da http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

L'idea originale dietro '/ usr / local' era di avere una directory ('local') '/ usr' separata su ogni macchina oltre a '/ usr', che poteva essere montata in sola lettura da qualche altra parte. Copia la struttura di '/ usr'. In questi giorni, "/ usr / local" è ampiamente considerato come un buon posto in cui conservare programmi autocompilati o di terze parti. La gerarchia / usr / local è utilizzata dall'amministratore di sistema durante l'installazione del software in locale. Deve essere sicuro di non essere sovrascritto quando il software di sistema viene aggiornato. Può essere utilizzato per programmi e dati condivisibili tra un gruppo di host, ma non presenti in / usr. Il software installato localmente deve essere posizionato in / usr / local anziché / usr a meno che non sia installato per sostituire o aggiornare il software in / usr.


1
Sembra contraddire questa roba / usr / local con le informazioni sulla pagina opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Questa directory è riservata a tutto il software e ai pacchetti aggiuntivi che non fanno parte dell'installazione predefinita. Ad esempio, i pacchetti StarOffice, Kylix, Netscape Communicator e WordPerfect si trovano normalmente qui. Per ottemperare a FSSTND, tutte le applicazioni di terzi devono essere installate in questa directory. "..." (simile al modo in cui Windows installerà il nuovo software nel proprio albero di directory C: \ Windows \ File Progam \ "Nome programma ")"
Pod

6

Di solito ho una cartella denominata "Programmi" nella mia casa in cui installo quei programmi, abbastanza strano (o no) sono tutti roba java in questo momento.

Ha un grande vantaggio per me, quando reinstallo o cambio computer vengono spostati con il resto della mia casa. Ha un chiaro svantaggio, quelle app sono disponibili solo per il mio utente.


Come posso reinstallare Ubuntu 16.04 senza perdere i dati nella cartella home? Ho provato a fare dalla /directory formate solo dopo aver digitato lo stesso vecchio nome utente e password ma ho scoperto che Ubuntu crea un'altra cartella home.
Ibrahim Disouki,

1

Usa "checkinstall" per convertire il tuo pacchetto alien in un deb in modo che non sia installabile usando il gestore pacchetti.

Tieni presente che i file di configurazione spesso non verranno gestiti come file di configurazione (forse ignorati o forse trattati come parte dell'app) e che gli script pre e post installazione a volte vengono confusi, anche se in genere ti avvisa quando pensa che il deb avrà uno script pre o post installazione errato.

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.