por que o bash não atualiza através do yum?

por que o bash não atualiza através do yum?

Estou tentando atualizar o bash no CentOS 7 - preciso de pelo menos 4.4 para meu projeto e o shell padrão é 4.2. É um servidor de produção, então eu literalmente só quero uma nova versão do bash como shell padrão e pronto; Não quero mexer muito ou atualizar mais nada.

De qualquer forma, executando:

yum update bash

retorna

No packages marked for update

O comando:

yum repolist all

mostra que o repositório de atualizações do CentOS 7 está habilitado (embora não o CentOS 7.* base/updates).

Como resultado, este comando:

 yum  --enablerepo=updates update bash

faz nada.

Posso compartilhar meu arquivo CentOS-Base.repo, se ajudar. O que estou fazendo de errado?

Responder1

O objetivo de distribuições como RedHat (e, portanto, CentOS) é que ela é estável; não possui a versão mais recente de todos os softwares, possui uma versão consistente. Para CentOS7 a versão atual é bash-4.2.46-33.el7. O RedHat fará backport de correções de segurança, mas não poderá fazer backport de aprimoramentos de funcionalidade porque podem causar problemas de compatibilidade.

Se você precisar de uma versão diferente, talvez seja necessário compilá-la a partir do código-fonte e colocá-la em um local não padrão (por exemplo, $HOME/bin/bash). Não substitua /bin/bashporque o sistema operacional pode substituí-lo a qualquer momento através do yum update.

Em comparação, RedHat 8 (CentOS8) possui bash 4.4 e Debian 10 possui bash 5.0

Responder2

Caso a pergunta implícita fosse, como posso atualizar o bash para 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

Responder3

Bash 4.2.46 é a versão atual para CentOS 7 e RHEL 7. Bash 4.4.19 é a versão atual para CentOS 8 e RHEL 8. BASH 4.4 não está nos repositórios para CentOS 7 e RHEL 7 e é por isso que yumnão atualiza para isso.

Para obter o 4.4, você terá que construí-lo a partir do código-fonte em um local diferente /binde /home/bash, colocar o local no bashbinário em /etc/shells (como root somente se você quiser alterá-lo para outros usuários) e então usar chsh -s /path/to/new/bashpara alterar seu shell de login para Bash 4.4.

Se você deseja apenas executar scripts com a versão mais recente do bash, após compilá-lo, altere o shebang nos scripts para:

#!/path/to/new/bash

E eles funcionarão com a versão mais recente.

informação relacionada