La mayoría de los paquetes que usan autotools son utilidades de nivel de usuario o al menos lo suficientemente alto para ser completamente bajo/usr, o lo suficientemente bajo como para estar completamente por debajo/usr.GNU Autotools: instale binarios en/bin,/sbin,/usr/bin y/usr/sbin, interacciones con --prefix y DESTDIR
Estoy escribiendo un paquete que necesitaría instalar algunos archivos en/bin, algunos en/sbin,/usr/bin y/usr/sbin. Está reemplazando varios binarios existentes que tradicionalmente se ubican en esas ubicaciones.
También necesita instalar un módulo PAM en/lib/security (y obviamente/usr/lib/security no funcionaría).
Ahora el problema es: el prefijo de la configuración predeterminada parece ser/usr/local (puedo controlar ese valor predeterminado en mi configure.ac), y al menos el valor predeterminado de Gentoo Linux es --prefix =/usr (eso es un problema porque anula los valores predeterminados que pongo en mi configure.ac).
Estaba echando un vistazo breve a cómo otros paquetes similares tratan este problema. Aquí están mis resultados:
- bash-4.1 parece instalar en/usr/bin y scripts de distribución construcción mover el binario bash/bin
- Linux-PAM tiene cortes en configure.ac de modo que si el prefijo es "/ usr", va a usar "/ sbin" y "/ lib" para algunos de sus archivos. También establece el prefijo predeterminado en "/ usr". No estoy seguro de qué sucede si el usuario pasa un prefijo diferente.
- shadow-utils establece exec_prefix en "" si el prefijo es "/ usr". Entonces bin_PROGRAMS se refiere a "/ bin", y ubindir se declara para indicar "$ {prefix}/bin" para que ubin_PROGRAMS se refiere a "/ usr/bin"
Mis preguntas son:
- ¿Cuáles son los valores predeterminados de las otras distros para --prefix? ¿Puedo asumir razonablemente que siempre es/usr? Solo estoy preocupado por Linux en este momento, no BSD.
- ¿Cuál de las soluciones anteriores parece la más limpia? ¿Ves algunas mejores soluciones?
- ¿Cuáles son los posibles problemas con las soluciones anteriores? ¿Hay algunas soluciones a esos problemas?
- Estoy bien con la instalación de todo en "/ bin" y la creación de enlaces simbólicos de compatibilidad. ¿Hace el problema más simple?
- ¿Hay algún otro sistema común de construcción que sea aceptable para las utilidades del sistema de bajo nivel que manejarían mejor mis requisitos?
dude en pedir una aclaración de lo que estoy tratando de hacer. Tenga en cuenta que si quiero mantener la compatibilidad con lo que estoy reemplazando, si solía enviar los binarios A y B, uno en/sbin y uno en/usr/bin, creo que solo tengo que poner reemplazos en esos lugares o en menos tienen enlaces simbólicos. Los módulos PAM también tienen una ubicación de instalación fija.
Obviamente voy a votar una respuesta útil. Soy una "respuesta aceptada". Principalmente estoy buscando consejos sobre "qué debería hacer", cuál es la solución más limpia al problema y, si corresponde, una discusión de las opciones y desventajas, pros y contras.(: ¿No es su responsabilidad leer)
No debe cambiar el valor predeterminado en su configure.ac. Si un usuario ejecuta su script de configuración sin asignar un prefijo, el usuario tiene todo el derecho a esperar/usr/local como predeterminado. Si cambias eso, TIENES UN ERROR DE EMBALAJE. Configurar el prefijo es el derecho del usuario (y la responsabilidad) y el mantenedor del paquete no tiene derecho a preocuparse siquiera por ello. –
Puede establecer --prefix en su archivo .spec o en debian/rules, pero usted absolutamente * no * debe modificarlo en configure.ac –