¿Por qué mi paquete se instaló en / opt?

8

Hace un tiempo instalé couchdb desde la fuente en mi máquina Debian. Pareció instalarse bien y todo funcionó.

Unas semanas después quería actualizar e instalar desde un .deb usando dpkg. Todo parece haber sido instalado ahora bajo /opt. Todo parece funcionar bien, pero realmente no entiendo por qué se ha instalado todo /opt. No se siente tan "suave" como cuando las cosas se instalaron directamente en /usr/local/biny /etcy /var/log. Es más engorroso configurar que cuando edité previamente los archivos de configuración que se instalaron en / etc / couchdb

¿Le importaría a alguien explicarme por qué la instalación /optes "algo bueno" y por qué esta es una mejor manera de hacer las cosas que la instalación anterior que fue de la fuente?

Sé que esta es una pregunta bastante vaga, pero solo soy competente con Linux, no un experto y no entiendo el pensamiento detrás de la instalación para /opt

Mikel
fuente
¿Quizás falta una etiqueta / debian?
D4RIO
¿Está diciendo que un paquete Debian está instalado en / opt? Si es así, está haciendo lo incorrecto. También tengo una aplicación Google Chrome (actualmente no instalada) que se instaló en / opt. Todo lo que gestiona el sistema de paquetes debe ir al sistema principal.
Faheem Mitha
Al mirar esto más cuidadosamente, no pude encontrar una declaración clara en la política de que la instalación del paquete Debian (independientemente de si es oficial o no) no debería instalarse en / opt, aunque tengo la fuerte impresión de que esto no debería hacerse, y allí Hay varios comentarios en la red que indican que hacerlo es incorrecto. Si encuentro algo más definitivo, lo publicaré. AFAIK, Debian no espera ni requiere que los paquetes no oficiales se instalen en un lugar diferente de los paquetes oficiales.
Faheem Mitha

Respuestas:

10

El estándar de jerarquía del sistema de archivos proporciona estas definiciones:

  • /opt : Paquetes de software de aplicación complementaria
  • /usr/local : Jerarquía local (para uso del administrador del sistema al instalar software localmente)

La forma en que leo eso:

  • Las aplicaciones estándar del sistema deben entrar /biny /usr/bin(implícito)
  • Los paquetes de terceros deben entrar /opt
  • Algo solo debe instalarse /usr/localsi el administrador del sistema lo desea

Por extensión, si el administrador del sistema instala algo usando dpkgo rpm, no debería entrar /usr/localpor defecto.

Entonces, podría decirse que está haciendo lo correcto.

Mikel
fuente
El servidor de aplicaciones Websphere de IBM entra en / opt. Además, cuando instalo algo como IBM JDK, lo pongo en / opt / java.
djangofan 01 de
5

La política de Debian dice

9.1.2 Programas específicos del sitio

Según lo ordena el FHS, los paquetes no deben colocar ningún archivo /usr/local, ya sea colocándolos en el archivo del sistema de archivos para que dpkg los desempaque o manipulándolos en sus scripts de mantenedor.

No existe tal prohibición específica contra /opt. La política también agrega

La ubicación de todos los archivos y directorios instalados debe cumplir con el Estándar de Jerarquía del Sistema de Archivos (FHS), versión 2.3, con las excepciones que se detallan a continuación, y excepto cuando hacerlo violaría otros términos de la Política de Debian.

y el estándar de jerarquía de archivos dice

Los directorios /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, y /opt/manestán reservados para uso local administrador del sistema.

y luego más abajo

Las distribuciones pueden instalar software /opt, pero no deben modificar o eliminar el software instalado por el administrador del sistema local sin el consentimiento del administrador del sistema local.

Tenga en cuenta que la Política es para Debian, pero generalmente corresponde a una recomendación de mejores prácticas. El resultado, si estoy leyendo esto correctamente, es que no está bien instalar paquetes binarios (deb) /usr/local, pero está bien instalarlo /optsiempre que no interfiera con el uso del espacio por parte del administrador de sistemas.

Mi opinión personal es que es una mala idea tener paquetes deb en /usr/localo /opt. No estoy de acuerdo con D4RIO cuando dice:

Hay un paquete para Debian couchdb (quiero decir, oficial), por lo que si ha descargado otra, está bien, se debe instalar en /opto /usr/local/bintampoco.

Por lo general, no desea que se instalen dos paquetes de deb diferentes correspondientes al mismo software, y si en realidad son el mismo nombre de paquete, dpkg no lo permitirá de todos modos. Los paquetes de software Debian no oficiales disponibles como paquete oficial comúnmente (pero no siempre) tienen el mismo nombre que los oficiales; solo instala uno u otro, no ambos.

Por lo que vale, creo que poner paquetes deb /optes una mala idea, y la única ocurrencia reciente de esto que he visto es con Google Chrome. Sin embargo, Google no siempre sigue las mejores prácticas.

Faheem Mitha
fuente
Totalmente de acuerdo en que un paquete no debe instalarse en / opt, especialmente si coloca archivos en otro lugar también como / usr / bin. Imho / opt debe contener un software completamente autónomo para que pueda eliminarlo de la órbita simplemente borrándolo de / opt.
Arrowmaster
De acuerdo, excelentes respuestas, gracias, pero está instalado en / opt por defecto. Si no es para / optar, ¿dónde debo instalarlo? ¿Y cómo hacerlo usando dpkg?
@Duke: Si puede obtener la fuente del paquete deb, puede reconstruir la deb para instalarla en el sistema como paquetes regulares. Esto requerirá un poco de trabajo si aún no está familiarizado con el procedimiento, pero eso es lo correcto aquí.
Faheem Mitha
1
No estoy de acuerdo con esta respuesta. Hay muchas situaciones en las que desea instalar dos versiones de software, puede querer fácilmente un python específico para una aplicación específica. Un administrador de sistemas local podría querer empaquetar esta python, ¿a dónde debería ir? El software instalado localmente (make install) entra en / usr / local, el tercer software empaquetado entra / opt / - la definición de paquetes se mantiene amplia: a través de dpkg, a través de instaladores, a través de PIP, a través de (inserte el sistema de embalaje de elección). Estoy de acuerdo en que es una buena práctica de "proveedores / paquetes" autónomos.
Ashwoods
4

/optes para software de terceros. Hay un paquete para Debian couchdb (quiero decir, oficial), por lo que si ha descargado otra, está bien, se debe instalar en /opto /usr/local/bintampoco.

D4RIO
fuente
2

Aunque no es Debian, las Pautas de empaquetado de Fedora son bastante claras al respecto:

... ningún paquete de Fedora puede tener archivos o directorios en / opt o / usr / local ...

La razón por la que los paquetes no ponen cosas en / opt es bastante simple: como se señaló anteriormente, el Estándar de Jerarquía de Archivos establece que ...

Las distribuciones pueden instalar software en / opt, pero no deben modificar o eliminar el software instalado por el administrador del sistema local sin el consentimiento del administrador del sistema local.

Eso es algo que los paquetes no pueden garantizar, ya que una instalación o actualización puede modificar dichos datos.

Sé que Fedora no es Debian, pero supongo que en este caso, son bastante similares. Sobre todo porque Lintian, la herramienta de verificación de paquetes para Debian, tiene un error especial para esto: dir-or-file-in-opt

Lars Kiesow
fuente