為什麼 bash 不通過 yum 更新?

為什麼 bash 不通過 yum 更新?

我正在嘗試在 CentOS 7 上更新 bash - 我的專案至少需要 4.4,而其預設 shell 是 4.2。它是一個生產伺服器,所以我實際上只想要一個新版本的 bash 作為預設 shell,僅此而已;我不想搞亂太多或更新任何其他內容。

無論如何,運行:

yum update bash

回報

No packages marked for update

命令:

yum repolist all

顯示 CentOS 7 更新儲存庫已啟用(但不是 CentOS 7.* 基本/更新)。

結果,這個命令:

 yum  --enablerepo=updates update bash

什麼也沒做。

如果有幫助的話,我可以分享我的 CentOS-Base.repo 檔案。我究竟做錯了什麼?

答案1

像 RedHat(以及 CentOS)這樣的發行版的要點是它是穩定的;它並不具有每個軟體的最新版本,它具有一致的版本。對於 CentOS7,目前版本是bash-4.2.46-33.el7. RedHat 將向後移植安全性修復程序,但可能不會向後移植功能增強,因為它們可能會導致相容性問題。

如果您需要不同的版本,那麼您可能需要從原始程式碼編譯它並將其放置在非標準位置(例如$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

yumBash 4.2.46是 CentOS 7 和 RHEL 7 的當前版本。它。

要獲得 4.4,您必須在 等位置以外的位置從原始程式碼建置它/bin/home/bash將該位置放入bash/etc/shells 中的二進位檔案(僅當您想為其他使用者更改它時才以 root 身分),然後使用chsh -s /path/to/new/bash將您的登入shell 更改為Bash 4.4。

如果您只想使用較新版本的 bash 運行腳本,請在建置後將腳本中的 shebang 變更為:

#!/path/to/new/bash

他們將運行較新的版本。

相關內容