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/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를 얻으려면 etc가 아닌 소스에서 빌드해야 합니다. 해당 위치를 /etc/shells의 바이너리 에 넣은 다음 /bin
( 다른 사용자를 루트로 변경하려는 경우에만) 로그인 쉘을 Bash로 변경을 사용하십시오. 4.4./home/bash
bash
chsh -s /path/to/new/bash
최신 버전의 bash를 사용하여 스크립트를 실행하려면 빌드 후 스크립트의 shebang을 다음과 같이 변경하세요.
#!/path/to/new/bash
그들은 최신 버전을 실행할 것입니다.