He estado usando servidores Linux durante años y sigo confundiéndome con el estándar de jerarquía del sistema de archivos. Por lo general, puedo vivir con la confusión. Pero ahora que estoy desarrollando mi propio software para Linux, necesito entender dónde deben instalarlo los administradores de paquetes.
Estaba bastante convencido de que / opt era la ubicación perfecta para mi aplicación. Pero después de haber investigado mi sistema de archivos Debian, ya no estoy seguro: ¡hay muchos softwares instalados en / usr / lib! Por nombrar algunos: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...
Según el FHS, se supone que / usr / lib contiene "Bibliotecas para programación y paquetes" e "incluye archivos de objetos, bibliotecas y archivos binarios internos que no están destinados a ser ejecutados directamente por los usuarios o scripts de shell" ( ver aquí ).
¡Muchos softwares ubicados en / usr / lib de mi servidor Debian no son bibliotecas o binarios internos, sino softwares ejecutables de usuario completos!
Todavía estoy en camino de tener mi aplicación instalada en / opt. Pero realmente me gustaría entender si esto es correcto y, sobre todo, por qué .
Gracias de antemano por sus amables consejos,
Eric
Respuestas:
La verdadera clave para comprender el Estándar de Jerarquía del Sistema de Archivos es saber que está diseñado teniendo en cuenta los sistemas de archivos de red.
Para cada máquina del mismo sistema operativo, versión y arquitectura, puede compartir / usr a través de NFS y montarlo.
/ usr se (re) monta después de que se inicializa la pila de red.
fuente
La diferencia es que
/usr
está destinado a contener paquetes instalados como parte del sistema . Los paquetes que obtiene de los repositorios Debian / Ubuntu, PPA, etc., vaya aquí. Mientras/opt
está destinado a aplicaciones de terceros desglosadas que no se distribuyen a través del proceso de distribución de paquetes de distribución.Si distribuye paquetes .deb o .rpm, con el objetivo de incluir su software en los repositorios oficiales, debe instalarlo en
/usr
. De lo contrario, instale en/opt
. En cualquier caso, su aplicación debería poder compilarse para ejecutarse en cualquier ubicación arbitraria (por ejemplo, con la ayuda de las herramientas automáticas GNU).fuente
/usr/local
no estaba al alcance de esta pregunta. Pero está destinado a software de terceros que el administrador local compila e instala.Instala sus bibliotecas
<prefix>/lib
, sus archivos binarios<prefix>/bin
, sus archivos de encabezado, sus<prefix>/include
páginas deprefix/[share/]man
manual, sus archivos pkgconfig<prefix>/lib/pkgconfig
o<prefix/share/pkgconfig
sus archivos cmake .m4 en<prefix>/share/aclocal
Luego, deje que el administrador de paquetes decida el prefijo. Si está distribuyendo rpm / deb usted mismo,
/usr
es una buena opción para un prefijo../configure --prefix=~/.local/
Todavía debería funcionar, ¡así que no vayas a codificar tu camino en ningún lado, por favor!Algunas bibliotecas están envueltas en alguna otra herramienta que las hace también ejecutables y utilizables como biblioteca, pero siguen siendo bibliotecas, y no en su $ PATH, por lo que está bien ponerlas en / lib, supongo.
fuente
Sugeriría evitar instalar su aplicación en / opt. Razón 1: algunas distribuciones no tienen / opt por defecto Razón 2: / usr / lib es una ruta estándar para bibliotecas {Si otras aplicaciones necesitan usar su biblioteca, debe agregar su ruta de biblioteca manualmente a / etc / ldconfig} / opt es más conveniente cuando tienes aplicaciones independientes que instalas manualmente y quieres saber dónde están ubicadas
Una de las razones por las que los archivos ejecutables completos se encuentran en / usr / lib podría ser que se usan desde otros scripts. {Por ejemplo, los scripts de bash no pueden usar una API directamente. Por esta razón, un truco común es construir un "envoltorio" alrededor de esta API e insertar parámetros como argumentos del script}
fuente
Por favor, instálelo en / opt.
Demasiadas aplicaciones Linux hacen la misma marca que los desarrolladores de Windows en los años 90.
Vamos a instalar nuestras cosas en C: \ windows para que sea simple y fácil de encontrar (y un poco más rápido). Luego llegaron 15 años de infierno de DLL ya que diferentes paquetes de software necesitaban diferentes versiones de las mismas bibliotecas (que en Windows no tenían versiones de las bibliotecas).
A menos que esté escribiendo software de sistema real, póngalo en / opt, para que las personas puedan rastrear mejor quién instaló qué.
fuente