почему bash не обновляется через yum?

почему bash не обновляется через yum?

Я пытаюсь обновить 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

И они будут работать с более новой версией.

Связанный контент