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/bash
yum 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
更新されません。
/bin
4.4 を入手するには、などの場所以外のソースからビルドし、その/home/bash
場所を /etc/shells 内のバイナリに設定し(他のユーザー用に変更する場合は root としてのみ)、を使用してログイン シェルを Bash 4.4 に変更するbash
必要があります。chsh -s /path/to/new/bash
新しいバージョンの bash でスクリプトを実行したいだけの場合は、ビルド後にスクリプト内の shebang を次のように変更します。
#!/path/to/new/bash
そして、新しいバージョンで実行されます。