왜 bash는 yum을 통해 업데이트하지 않습니까?

왜 bash는 yum을 통해 업데이트하지 않습니까?

CentOS 7에서 bash를 업데이트하려고 합니다. 프로젝트에는 최소 4.4가 필요하고 기본 셸은 4.2입니다. 프로덕션 서버이므로 말 그대로 새 버전의 bash를 기본 셸로 사용하고 싶습니다. 그게 전부입니다. 나는 너무 많이 어지럽히거나 다른 것을 업데이트하고 싶지 않습니다.

어쨌든 실행 중:

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/bashOS가 를 통해 언제든지 교체할 수 있으므로 덮어쓰지 마십시오 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업데이트되지 않습니다. 그것에.

/bin4.4를 얻으려면 와 같은 위치가 아닌 다른 위치의 소스에서 빌드하고 /home/bash위치를 bash/etc/shells의 바이너리에 넣은 다음(다른 사용자를 위해 변경하려는 경우에만 루트로) 다음을 사용해야 합니다. chsh -s /path/to/new/bash로그인 쉘을 Bash 4.4로 변경하십시오.

최신 버전의 bash로 스크립트를 실행하려면 스크립트를 빌드한 후 스크립트의 shebang을 다음과 같이 변경하세요.

#!/path/to/new/bash

그리고 최신 버전으로 실행됩니다.

관련 정보