
Ich versuche, Bash auf CentOS 7 zu aktualisieren. Für mein Projekt brauche ich mindestens 4.4 und die Standard-Shell darauf ist 4.2. Es handelt sich um einen Produktionsserver, daher möchte ich buchstäblich nur eine neue Version von Bash als Standard-Shell und das war’s. Ich möchte nicht zu viel herumspielen oder sonst etwas aktualisieren.
Wie auch immer, läuft:
yum update bash
kehrt zurück
No packages marked for update
Der Befehl:
yum repolist all
zeigt, dass das CentOS 7-Update-Repository aktiviert ist (allerdings nicht CentOS 7.*-Basis/Updates).
Das Ergebnis ist dieser Befehl:
yum --enablerepo=updates update bash
tut nichts.
Ich kann meine CentOS-Base.repo-Datei freigeben, wenn es hilft. Was mache ich falsch?
Antwort1
Der Sinn von Distributionen wie RedHat (und damit auch CentOS) besteht darin, dass sie stabil sind; sie verfügen nicht über die neueste Version jeder Software, sondern über eine einheitliche Version. Für CentOS7 ist die aktuelle Version bash-4.2.46-33.el7
. RedHat portiert Sicherheitsfixes zurück, aber möglicherweise keine Funktionserweiterungen, da diese Kompatibilitätsprobleme verursachen können.
Wenn Sie eine andere Version benötigen, müssen Sie diese möglicherweise aus dem Quellcode kompilieren und an einem nicht standardmäßigen Ort ablegen (z. B. $HOME/bin/bash
). Überschreiben Sie sie nicht /bin/bash
, da das Betriebssystem sie jederzeit durch ersetzen kann yum update
.
Im Vergleich dazu hat RedHat 8 (CentOS8) Bash 4.4 und Debian 10 hat Bash 5.0
Antwort2
Falls die implizite Frage lautete, wie ich Bash auf 4.4 aktualisieren kann:
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
Antwort3
Bash 4.2.46 ist die aktuelle Version für CentOS 7 und RHEL 7. Bash 4.4.19 ist die aktuelle Version für CentOS 8 und RHEL 8. BASH 4.4 ist nicht in den Repos für CentOS 7 und RHEL 7, weshalb yum
kein Update darauf erfolgt.
Um 4.4 zu erhalten, müssen Sie es aus dem Quellcode an einem anderen Speicherort als /bin
beispielsweise erstellen /home/bash
, den Speicherort der bash
Binärdatei in /etc/shells eintragen (nur als Root, wenn Sie ihn für andere Benutzer ändern möchten) und dann chsh -s /path/to/new/bash
Ihre Anmelde-Shell auf Bash 4.4 ändern.
Wenn Sie Skripte nur mit der neueren Version von Bash ausführen möchten, ändern Sie nach dem Erstellen den Shebang in den Skripten wie folgt:
#!/path/to/new/bash
Und sie werden mit der neueren Version laufen.