/ usr / local u / opt?

44

¿Cómo procede generalmente para las instalaciones de sus paquetes en Linux, para los paquetes que no forman parte de los repositorios de su distribuidor?

Por mi parte, estoy acostumbrado a instalar / opt. Pero desde entonces, vi este documento en Internet: http://www.pathname.com/fhs/ . Ahora estoy confundido: aparentemente / usr / local también sería una posibilidad.

¿Cuál es la diferencia entre ambos? ¿Alguna mejor práctica para compartir?

Gracias

Sir Fabel


fuente
Territorio de la guerra santa y no es realmente un tema de programación para arrancar.
dmckee
1
Pregunta similar en Ask Ubuntu , superuser , unix & linux
kenchew

Respuestas:

33
  • Todo lo que tiene que ser compilado e instalado al estilo Unix y cumple con FHS ->/usr/local
  • Todo lo demás (por ejemplo, una aplicación web Java que viene con su propio servidor de aplicaciones y muchos recursos en un archivo zip -> /opt
lajuette
fuente
lintian ya no permite la instalación de paquetes en / opt ni / usr / local
Cristiano
24

Como información adicional interesante: el significado original de /usr/locales que si /usrestá montado en la red ( /usrcompartido individualmente en varias computadoras), /usr/localsería un sistema de archivos separado local a la computadora (partición en el disco local).

Y mientras hablamos de ese tema, incluso si está fuera del tema de la pregunta: si hay varias computadoras con arquitecturas diferentes, naturalmente habría una /usrpara cada arco, pero /usr/sharesería otro sistema de archivos separado compartido entre arquitecturas (de ahí 'compartir') .


fuente
55
No ... históricamente (¡sí, estaba allí!) / Usr et al tenían el material proporcionado por el proveedor, / usr / local era material instalado localmente (es decir, bash, gcc y otras cosas buenas).
vonbrand
@vonbrand ¿Estás realmente contradiciendo la respuesta? Parece que lo que sea necesario compartir entre el host sería / usr, y lo que no fuera necesario, estaría en / usr / local
Didier A.
@Didier A., ​​cuando comencé a usar Unix ('80es) había una máquina, sin redes ... y tenían / ​​usr y / usr / local.
vonbrand
@vonbrand Oh, ya veo, interesante. Entonces parece que la intención original de tener / usr y / usr / local sigue siendo un misterio.
Didier A.
@Didier A., ​​de nuevo: / usr fue lo que se envió con el sistema operativo, cosas "estándar", / usr / local fueron adiciones locales (homebrewed, salido de Usenet, filmado de un colega amigable en una convención, ...) . No estándar, solo uso común.
vonbrand
7

La forma en que lo hago es que si requiere un prefijo para sí mismo O es un paquete binario, voy por / opt (que es más o menos la forma de Solaris). Si estoy compilando desde la fuente / usr / local, así es como voy.

Sotavento
fuente
6

Puse todo en un directorio privado y luego uso GNU stow .

Entonces, instalaré el paquete X.ver en /BASE/stow/X.ver. Stow de GNU A continuación, combinar todos los paquetes (con enlaces simbólicos) en /BASE/bin, /BASE/lib, etc.

Los conflictos y la eliminación de paquetes son mucho más fáciles de manejar.

R Samuel Klatchko
fuente
Normalmente he usado / usr / local / stow / <packagename> como el hogar para guardar "paquetes", y siento que es una buena práctica: si alguien más mira / usr / local, es obvio lo que está sucediendo y qué El sistema está manteniendo los enlaces simbólicos.
Stephanie
3

Así es como interpreto el estándar FHS:

/ usr / local es para archivos construidos localmente o instalados localmente, ya sea empaquetados o no, que de alguna manera se vuelven parte de esa instancia del sistema operativo.

/ opt es un lugar para instalar paquetes "extraños" que no forman parte del sistema operativo.

Siempre y cuando solo use archivos en el sistema único donde los construye, / usr / local está bien y, por lo tanto, es el directorio base predeterminado para la gran mayoría del software de código abierto.

Si planea redistribuir su paquete, le recomendaría usar un directorio base personalizado como / opt / myPackage.

jlliagre
fuente
2

Solaris usado / opta mucho. Muchas distribuciones modernas de Linux ahora esperan paquetes en / usr / local /. La idea es la misma: un lugar para colocar el software que hace que esta máquina haga lo que hace, en lugar del sistema operativo. Es más o menos análogo a "Archivos de programa" en un sistema Windows.

Elige uno y cúmplelo. Es bastante fácil enlazar / optar por / usr / local.

Kyle Hodgson
fuente
Me gusta el comentario de Lee, una buena forma de pensar sobre el problema. Sería un poco extraño para mí tener un / opt en una máquina Debian, pero eso es probablemente solo una preferencia personal.
Kyle Hodgson
Por favor no lo hagas. El FHS puede estar bastante anticuado, pero su razonamiento en / usr vs / usr / local vs / opt es sólido: estándar, distribución proporcionada; instalado localmente, como homebrew o material experimental fuera de github; material no estándar proporcionado por el proveedor.
vonbrand
0

Si recompila un software proporcionado por la distribución de su sistema operativo, para aprovechar varias ventajas de arquitectura específicas de su propia máquina, use / usr / local.

Si agrega un software de otras fuentes, además de la distribución de su sistema operativo, póngalo en / opt.

cp7781
fuente