Я пытаюсь обновить bash на CentOS 7 - мне нужна как минимум версия 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 будет выполнять бэкпорт исправлений безопасности, но не сможет выполнять бэкпорт улучшений функциональности, поскольку они могут вызвать проблемы совместимости.
Если вам нужна другая версия, то вам может потребоваться скомпилировать ее из исходного кода и поместить в нестандартное место (например, $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
обновление до него не будет выполнено.
Чтобы получить версию 4.4, вам придется собрать ее из исходного кода в месте, отличном от /bin
указанного /home/bash
, указать местоположение bash
двоичного файла в /etc/shells (только как пользователь root, если вы хотите изменить его для других пользователей), а затем использовать его chsh -s /path/to/new/bash
для изменения вашей оболочки входа на Bash 4.4.
Если вы просто хотите запускать скрипты с помощью новой версии bash, после ее сборки измените shebang в скриптах на:
#!/path/to/new/bash
И они будут работать с более новой версией.