¿Por qué bash no se actualiza a través de yum?

¿Por qué bash no se actualiza a través de yum?

Estoy intentando actualizar bash en CentOS 7. Necesito al menos 4.4 para mi proyecto y el shell predeterminado es 4.2. Es un servidor de producción, así que literalmente solo quiero una nueva versión de bash como shell predeterminado y eso es todo; No quiero perder el tiempo ni actualizar nada más.

De todos modos, ejecutando:

yum update bash

devoluciones

No packages marked for update

El comando:

yum repolist all

muestra que el repositorio de actualizaciones de CentOS 7 está habilitado (aunque no la base/actualizaciones de CentOS 7.*).

Como resultado, este comando:

 yum  --enablerepo=updates update bash

no hace nada.

Puedo compartir mi archivo CentOS-Base.repo, si me ayuda. ¿Qué estoy haciendo mal?

Respuesta1

El objetivo de distribuciones como RedHat (y por tanto CentOS) es que son estables; no tiene la última versión de cada software, tiene una versión consistente. Para CentOS7 la versión actual es bash-4.2.46-33.el7. RedHat respaldará las correcciones de seguridad, pero es posible que no admita las mejoras de funcionalidad porque pueden causar problemas de compatibilidad.

Si necesita una versión diferente, es posible que deba compilarla desde el código fuente y colocarla en una ubicación no estándar (por ejemplo $HOME/bin/bash). No lo sobrescribas /bin/bashporque el sistema operativo puede reemplazarlo en cualquier momento a través de yum update.

En comparación, RedHat 8 (CentOS8) tiene bash 4.4 y Debian 10 tiene bash 5.0.

Respuesta2

En caso de que la pregunta implícita fuera, ¿cómo puedo actualizar bash a 4.4?

wget http://ftp.gnu.org/gnu/bash/bash-4.4.18.tar.gz
tar xf bash-4.4.18.tar.gz
cd bash-4.4.18/
./configure
make
make install
sh
bash -version

Respuesta3

Bash 4.2.46 es la versión actual para CentOS 7 y RHEL 7. Bash 4.4.19 es la versión actual para CentOS 8 y RHEL 8. BASH 4.4 no está en los repositorios de CentOS 7 y RHEL 7, por lo que yumno se actualiza. lo.

Para obtener 4.4, tendrás que compilarlo desde el código fuente en una ubicación distinta /bina /home/bash, colocar la ubicación del bashbinario en /etc/shells (como root solo si deseas cambiarlo para otros usuarios) y luego usar chsh -s /path/to/new/bashpara cambiar su shell de inicio de sesión a Bash 4.4.

Si solo desea ejecutar scripts con la versión más reciente de bash, después de compilarlo, cambie el shebang en los scripts a:

#!/path/to/new/bash

Y se ejecutarán con la versión más nueva.

información relacionada