¿Debo instalar aplicaciones Linux en / var u / opt?

83

Ejecuto muchas aplicaciones de código abierto, incluidas Java y Tomcat. Parece que la mayoría de las instrucciones tienen mis aplicaciones ejecutándose desde el /vardirectorio. Pero de vez en cuando, también veo el /optdirectorio. Mientras estoy en eso, también veo /usr/local/e incluso /etctambién.

¿Cuándo debo instalar aplicaciones en una carpeta u otra? ¿Hay pros y contras de cada uno? ¿Tiene que ver con el historial de sabores (Solaris vs Linux o Red Hat vs Ubuntu)?

Trevor Allred
fuente
8
/ etc es un lugar extraño e inapropiado para salir aplicaciones ...
user5336
He visto a personas poner cosas en / etc, como los módulos de Perl. Es raro, pero sucede ...
ℝaphink
66
Por cada absurdo, hay un campeón para defenderlo.
womble

Respuestas:

133

El estándar para estos problemas es el Estándar de jerarquía de archivos . Es un documento bastante grande. Básicamente (y más o menos), las rutas estándar en Linux son:

  • /bin& /sbinson para programas vitales para el sistema operativo, siendo sbin solo para administradores;
  • /usr/bin& /usr/sbinson para programas no vitales, siendo sbin solo para administradores;
  • /vares para vivir datos para programas. Pueden ser datos de caché, datos de spool, datos temporales (a menos que estén en /tmp, que se borran en cada reinicio), etc.
  • /usr/locales para programas instalados localmente. Por lo general, aloja programas que siguen los estándares pero que no fueron empaquetados para el sistema operativo, sino que el administrador los instaló manualmente (usando, por ejemplo ./configure && make && make install), así como scripts de administrador;
  • /optes para programas que no están empaquetados y no siguen los estándares. Simplemente pondría todas las bibliotecas allí junto con el programa. A menudo es una solución rápida y sucia, pero también se puede usar para programas creados por usted y para los que desea tener una ruta específica. Puede crear su propia ruta (p /opt/yourcompany. Ej. ) Dentro de ella, y en este caso se le recomienda registrarla como parte de las rutas estándar;
  • /etc no debe contener programas, sino configuraciones.

Si sus programas son específicos de los servicios prestados por el servicio, /srvtambién puede ser una buena ubicación para ellos. Por ejemplo, prefiero usar /srv/wwwpara sitios web en lugar de /var/wwwasegurarme de que el directorio solo contendrá datos que agregué yo mismo, y nada que provenga de paquetes de software.

Hay algunas diferencias entre distribuciones. Por ejemplo, los sistemas RedHat usan libexecdirectorios cuando los sistemas Debian / Ubuntu no lo hacen.

El FHS es utilizado principalmente por las distribuciones de Linux (en realidad no conozco ningún otro sistema operativo que realmente lo cumpla). Otros sistemas Unix no lo siguen. Por ejemplo, los sistemas BSD tienden a usarse /usr/localpara programas empaquetados, que no es el caso de Linux. Solaris tiene rutas estándar muy diferentes.

Le recomiendo encarecidamente que lea el documento de FHS que he vinculado anteriormente si desea obtener más información al respecto.

Phaphink
fuente
1
Una de las pocas listas de viñetas que me gustaría imprimir como una hoja de trucos ...
stimpy77
66
+1 para /srv. Estaba buscando un lugar para mis repositorios git y no me gustaba que mi contenido de Apache estuviera en /var/www. /srvParece el lugar perfecto.
Sr. Hedgehog
@ ℝaphink, ¿por qué se llama en varlugar de data?
Pacerier
@ Mr.Hedgehog, ¿Qué quieres decir con "no me gusta"? ¿Le importaria explicar?
Pacerier
@Pacerier En los años 90, te dirían que es /varporque es para "varios datos". En los primeros días, Unix estaba alojado en una sola unidad. Cuando no fue suficiente, obtuvieron uno nuevo, lo montaron /usry movieron todos los datos del usuario allí. Pero no fue suficiente y el disco viejo estaba lleno nuevamente pronto. Por lo que se trasladaron todos los binarios del sistema podría arrancar sin partir /binde /usr/bin. Simplemente se quedan sin espacio. Más tarde, necesitaron compartir datos entre los usuarios, por lo que lo hicieron /vary lo usaron como un cuadro desplegable. FHS está lleno de decisiones heredadas como esa y debe tomarse con una pizca de sal.
cprn
4

optsignifica software opcional. varsignifica archivos de sistema variables. Por lo tanto, sus aplicaciones deben ir a /opt.

Eduard Wirch
fuente
8
/vares para variar los archivos del sistema, no "varios".
womble
44
/ var es para "archivos de datos variables". Decir que es para "varios archivos del sistema" es ambiguo y potencialmente engañoso. o_O Tienes razón sobre "optar" sin embargo.
phoenix8
@Eduard, ¿qué pasa con / opt / var entonces? Y </ usr / var>, </ usr / local / var> ...
Pacerier
@womble Es una etimología falsa. Es lo que dice FHS pero no es cierto. En los años 90, te dirían que es /varporque es para "varios datos". Todavía tengo notas de un libro anterior a Internet que leí en ese entonces.
cprn
2

Depende de cuál sea su estándar local.

Personalmente, no instalo nada en / var sin una buena razón. Mi / usr / local es casi siempre un montaje nfs fuera de la red, por lo que todo lo que no está empaquetado se instala en / opt.

David Mackintosh
fuente
1
¿Qué pondrías en / var de todos modos, excepto los datos?
phaphink
1
por lo general, los programas pegan sus propias cosas en / var. Principalmente suministrado por el proveedor: registros, algunas bibliotecas, archivos de control, archivos .pid, ese tipo de cosas.
David Mackintosh
2
No estoy del todo de acuerdo. Las bibliotecas, si son estáticas, deberían entrar /usr. Libs generadas dinámicamente podrían terminar en /var/libocasiones, pero no ver lo que usted realmente instalar en /var, desde el punto de vista del administrador. El programa podría usarlo ampliamente, pero debería estar bastante vacío antes de iniciarlo.
phaphink
1
En este momento, lo único que he instalado deliberadamente en / var es nfsen / nfdump, y eso se debe a que la huella de la aplicación son todos los archivos nfdump que acumula. (Y debido a que esta es una instalación de prueba que de alguna manera llegó a producción. Entonces, "por lo general no hay una buena razón"). Pero eso es todo. Por supuesto, como no particiono mi disco duro, / var, / opt y / usr están todos en el mismo sistema de archivos de todos modos.
David Mackintosh
1
Qmail se instala en / var. Esta es una de las numerosas críticas en su contra.
staticsan