GNU/Linux >> Tutoriales Linux >  >> Linux

Instalar binarios en /bin, /sbin, /usr/bin y /usr/sbin, interacciones con --prefix y DESTDIR

Esencialmente, la distinción entre el / y el /usr jerarquías no está y no debe estar en manos del mantenedor de los paquetes (léase:No es su responsabilidad). Desde / solo debe contener los archivos necesarios para arrancar y hacer /usr disponible, es una decisión administrativa lo que pasa a / . Para las instalaciones desde la fuente, esta decisión la toma el instalador y, para las distribuciones, el mantenedor del paquete.

Por una razón, supongamos que alguien está tratando de construir un chroot ambiente. La distinción entre /usr y / no tiene sentido en el entorno y no se realizará. Todos los prefijos se establecen en /foo/bar/chroot , y cualquier script de configuración que interfiera con $prefix es probable que induzca un comportamiento extraño. Los mismos argumentos se aplican a scripts como los asistentes de empaquetado de Debian, que se basan en el habitual $prefix semántica para trabajar.

Por lo tanto, la solución más limpia es el bash-4.1 solución. Tiene básicamente dos opciones limpias:dividir su paquete en partes críticas y no críticas para el arranque, o dejar que su configure script ofrece un prefijo alternativo para las partes críticas de arranque, que se establece de forma predeterminada en / , dejando $prefix como /usr .


Hay dos niveles diferentes para esta pregunta, y todas sus preguntas parecen aplicarse al segundo significado (el paquete binario generado por su archivo *.spec, o debian/rules, o un archivo *.pkg). En cuanto a las herramientas automáticas estás preocupado, NO TE IMPORTA. No debe intentar especificar un prefijo predeterminado que no sea /usr/local en su configure.ac. La especificación de dónde deben instalarse las cosas se realiza en los archivos de control del paquete binario, y NO en configure.ac. La distribución fuente que utiliza el script de configuración generado por autoconf debe instalarse en /usr/local de forma predeterminada, y cualquier otra cosa es un error de empaquetado.

Si desea tener una distribución fuente que el usuario pueda usar para instalar fácilmente en una ubicación particular en una plataforma particular, sería aceptable incluir una secuencia de comandos en el tarball que lo haga. Por ejemplo, puede incluir un script de compilación que se parezca a:

#!/bin/sh

case $1 in
foo) args='--prefix=/usr --bindir=/bin --sysconfdir=/etc';;
bar) args='--prefix=/opt';;
*) args=;;
esac
$(dirname $0)/configure $args &&
make &&
make install

que especificaría argumentos predeterminados para configurar para las plataformas 'foo' y 'bar', pero realmente parece que sus preguntas son sobre archivos de control para paquetes binarios.


Linux
  1. Diferencia entre /bin/falso y /sbin/nologin

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. Bash =~ Regex y Https://regex101.com/?

  4. ¿Cuál es la diferencia entre /sbin/nologin y /bin/false?

  5. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

Linux:¿/sbin/init no existe?

cmake --version apunta a /usr/bin/cmake mientras que cmake apunta a /usr/local/bin

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

¿Cuándo debo usar #!/bin/bash y cuándo #!/bin/sh?

¿Por qué poner otras cosas que no sean /home en una partición separada?

Diferencia entre /bin y /usr/bin