![為什麼 bash 不通過 yum 更新?](https://rvso.com/image/168816/%E7%82%BA%E4%BB%80%E9%BA%BC%20bash%20%E4%B8%8D%E9%80%9A%E9%81%8E%20yum%20%E6%9B%B4%E6%96%B0%EF%BC%9F.png)
我正在嘗試在 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
yum
Bash 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
他們將運行較新的版本。