なぜ bash は yum 経由で更新されないのですか?

なぜ bash は yum 経由で更新されないのですか?

CentOS 7 で bash を更新しようとしています。プロジェクトには少なくとも 4.4 が必要ですが、デフォルトのシェルは 4.2 です。これは実稼働サーバーなので、文字通り、新しいバージョンの bash をデフォルトのシェルとして使いたいだけです。あまりいじったり、他のものを更新したりしたくありません。

とにかく、実行中:

yum update bash

戻り値

No packages marked for update

コマンド:

yum repolist all

CentOS 7 アップデート リポジトリが有効になっていることを示します (ただし、CentOS 7.* base/updates は有効ではありません)。

その結果、このコマンドは次のようになります。

 yum  --enablerepo=updates update bash

何もしません。

役に立つなら、CentOS-Base.repo ファイルを共有できます。何が間違っているのでしょうか?

答え1

RedHat (および CentOS) のようなディストリビューションのポイントは、安定していることです。すべてのソフトウェアが最新バージョンであるわけではなく、一貫したバージョンであるということです。CentOS7 の場合、現在のバージョンは ですbash-4.2.46-33.el7。RedHat はセキュリティ修正をバックポートしますが、互換性の問題を引き起こす可能性があるため、機能強化はバックポートしない可能性があります。

別のバージョンが必要な場合は、ソースからコンパイルして、非標準の場所 (例 ) に配置する必要があります。OSは を通じていつでもそれを置き換える可能性があるため、$HOME/bin/bash上書きしないでください。/bin/bashyum update

比較すると、RedHat 8 (CentOS8) には bash 4.4 があり、Debian 10 には bash 5.0 がある。

答え2

暗黙の質問が「bash を 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

答え3

Bash 4.2.46 は CentOS 7 および RHEL 7 の現在のバージョンです。Bash 4.4.19 は CentOS 8 および RHEL 8 の現在のバージョンです。BASH 4.4 は CentOS 7 および RHEL 7 のリポジトリにないため、yum更新されません。

/bin4.4 を入手するには、などの場所以外のソースからビルドし、その/home/bash場所を /etc/shells 内のバイナリに設定し(他のユーザー用に変更する場合は root としてのみ)、を使用してログイン シェルを Bash 4.4 に変更するbash必要があります。chsh -s /path/to/new/bash

新しいバージョンの bash でスクリプトを実行したいだけの場合は、ビルド後にスクリプト内の shebang を次のように変更します。

#!/path/to/new/bash

そして、新しいバージョンで実行されます。

関連情報