/ usr / local o / opt?


44

Come procedete generalmente per le installazioni dei vostri pacchetti su Linux, per i pacchetti che non fanno parte dei repository della vostra distribuzione?

Da parte mia sono abituato a installare in / opt. Ma da allora, ho visto questo documento su Internet: http://www.pathname.com/fhs/ . Ora sono confuso: apparentemente / usr / local sarebbe anche una possibilità.

Qual è la differenza tra entrambi? Qualche best practice da condividere?

Grazie

SirFabel


Territorio della guerra santa e non proprio un argomento di programmazione da avviare.
dmckee,

Risposte:


33
  • Tutto ciò che deve essere compilato e installato in stile Unix e conforme a FHS ->/usr/local
  • Tutto il resto (ad esempio un'applicazione Web Java fornita con il proprio application server e un sacco di risorse in un archivio zip -> /opt

lintian non consente più l'installazione di pacchetti su / opt / n / usr / local
Cristiano

24

Proprio come ulteriori informazioni interessanti: il significato originale di /usr/localè che se /usrè montato in rete (singolo /usrcondiviso su più computer), /usr/localsarebbe un filesystem separato locale al computer (partizione sul disco locale).

E mentre su quell'argomento, anche se è fuori tema alla domanda: se ci sono più computer con architetture diverse, naturalmente ce ne sarebbe uno /usrper ciascun arco, ma ci /usr/sharesarebbe ancora un altro filesystem separato condiviso tra architetture (da qui 'condividi') .


5
No ... storicamente (sì, ero lì!) / Usr et al avevano roba fornita dal fornitore, / usr / local era roba installata localmente (cioè, bash, gcc e altre cose carine).
vonbrand,

@vonbrand Stai davvero contraddicendo la risposta? Sembra solo che qualunque cosa debba essere condivisa tra host sarebbe / usr, e qualunque cosa non sia necessaria, sarebbe in / usr / local
Didier A.

@Didier A., ​​quando ho iniziato a usare Unix (anni '80) c'era una macchina, nessuna rete ... e avevano / usr e / usr / local.
vonbrand,

@vonbrand Oh, vedo, interessante. Quindi sembra che l'intento originale di avere / usr e / usr / local sia ancora un mistero.
Didier A.

@Didier A., ​​di nuovo: / usr era ciò che veniva spedito con il sistema operativo, roba "standard", / usr / local era aggiunte locali (homebrewed, uscito da Usenet, rubato da un collega amichevole a una convention, ...) . Non standard, solo per uso comune.
vonbrand,

7

Il modo in cui lo faccio è che se richiede un prefisso a se stesso O è un pacchetto binario, scelgo / opt (che è praticamente il modo di Solaris). Se sto compilando da source / usr / local è come vado.


6

Metto tutto in una directory privata e quindi uso GNU stow .

Quindi, installerò il pacchetto X.ver su /BASE/stow/X.ver. GNU stivare, combinandosi tutti i pacchetti (con link simbolici) in /BASE/bin, /BASE/libecc

I conflitti e la rimozione dei pacchetti sono molto più facili da gestire.


In genere ho usato / usr / local / stow / <nomepacchetto> come home per i "pacchetti" di stivaggio, e mi sento come se fosse una buona pratica - se qualcun altro guarda in / usr / local rende ovvio cosa sta succedendo e cosa il sistema sta mantenendo i collegamenti simbolici.
Stephanie,

3

Ecco come interpreto lo standard FHS:

/ usr / local è per i file creati localmente o installati localmente, sia compressi o meno che diventano in qualche modo parte di quell'istanza del sistema operativo.

/ opt è un posto dove installare pacchetti "esteri" che non fanno parte del sistema operativo.

Finché si utilizzano solo file sul singolo sistema in cui vengono creati, / usr / local va bene ed è quindi la directory di base predefinita per la stragrande maggioranza del software open source.

Se hai intenzione di ridistribuire il tuo pacchetto, ti consiglio di utilizzare una directory di base personalizzata come / opt / myPackage.


2

Solaris ha usato / optato molto. Molte distribuzioni Linux moderne ora si aspettano pacchetti in / usr / local /. L'idea è la stessa: un posto dove mettere software che faccia fare a questa macchina ciò che fa, al contrario del sistema operativo. È approssimativamente analogo a "Programmi" su un sistema Windows.

Scegli uno e attenersi ad esso. È abbastanza semplice ricollegare / scegliere / usr / local.


Mi piace il commento di Lee, un bel modo di pensare al problema. Mi sembrerebbe un po 'strano avere un / opt su una macchina Debian, ma probabilmente è solo una preferenza personale.
Kyle Hodgson,

Per favore, no. L'FHS potrebbe essere un po 'datato, ma il suo ragionamento su / usr vs / usr / local vs / opt è corretto: standard, distribuzione fornita; installato localmente, come homebrew o cose sperimentali off github; roba non standard fornita dal fornitore.
vonbrand,

0

Se si ricompila un software fornito dalla distribuzione del proprio sistema operativo, per sfruttare diversi vantaggi dell'architettura specifici per la propria macchina, utilizzare / usr / local.

Se aggiungi un software da altre fonti, oltre alla distribuzione del tuo sistema operativo, inseriscilo in / opt.

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.