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.