Compile bash (o paquete de Linux alternativo) con un nombre binario/doc personalizado

Compile bash (o paquete de Linux alternativo) con un nombre binario/doc personalizado

Estoy intentando compilar Bash 4.2 como un paquete RPM para usar en sistemas Enterprise Linux 5, que vienen de forma predeterminada con 3.2.25. Esto funciona correctamente, sin embargo, quiero que ambas versiones coexistan en el sistema, para evitar conflictos con el paquete del sistema y para permitir que el sistema u otros scripts continúen usando bash3 con el que son compatibles.

Mi plan es el siguiente:

  • Cambie el nombre del paquete a 'bash4' y no entre en conflicto con 'bash' ni proporcione 'sh'
  • Configure bash para compilar con el nombre binario 'bash4' y cambie la ruta de cualquier documento o archivo de soporte en consecuencia

En teoría, esto es simple y Vim ofrece prefijo/sufijo binario en sus scripts de configuración, sin embargo, bash no parece tener esta característica. Lo más cercano que he encontrado es EXEEXT de automake, que brinda soporte para extensiones ejecutables (como .exe en Windows), pero en realidad no está diseñado para lo que quiero hacer, ni resuelve el problema del documento.

Respuesta1

Aunque la bashversión autoconf (2.63) es un poco antigua (septiembre de 2008), admite las funciones --program-transform-namey --program-suffix. Lamentablemente, el proceso de compilación de bash no utiliza estas funciones comodetallado por la documentación, ni utiliza parámetros para permitir el procesamiento en tiempo de compilación de las páginas de manual.

Dado que la cantidad de archivos y cambios es pequeña, recomiendo un enfoque semimanual, es decir, escribir un pequeño script para realizar los cambios antes de la instalación. Opcionalmente puedes usarinstalar relojpara asegurarse de captar todo durante la instalación, pero bashen realidad es bastante mínimo. (FWIW, eché un vistazo rápido a los puertos bash de FreeBSD y los parches bash de Debian, no hay señales de una solución adecuada).

Si bien generalmente es una forma interesante de romper construcciones,poderAbuso EXEEXTaquí:

ac_cv_exeext=42 ./configure [...]
make
./bash42 -c 'echo $BASH_VERSION'
4.2.42(1)-release

Como lo único que te salvó fue cambiar el nombre, realmente no lo recomiendo ;-)

Hay un poco más que ganar con:

./configure [...]
make -e Program=bash42

ya que eso también refleja su cambio dentro del bashbugscript generado (aunque no le cambia el nombre).

información relacionada