데비안 안정판은 하나의 gcc 버전을 유지하므로, 어떤 이유에서든지, 예를 들어, bullseye에서 처럼 현재 데비안 안정 버전의 컴파일러 버그로 인해 커널 컴파일이 되지 않는 등의 이유로 시스템 gcc의 최신 버전 또는 최근 안정 버전을 설치하고 싶을 수 있습니다.
다른 배포판에서는 보다 느슨한 정책으로 정식의 저장소 외에도 다른 단체 또는 개인의 저장소를 이용할 수 있고, 데비안도 일부 그런 저장소, 보통 데비안 패키지 관리자의 개인 저장소를 이용할 수도 있습니다.
그러나, 저장소를 추가하면 원하는 패키지 외에 해당 저장소의 다른 패키지가 업데이트되는 문제가 있고, 시스템에 어떤 영향을 미칠지 확인하는 것이 쉽지 않습니다.
어쨌든, gcc도 그런 저장소가 있을 수 있지만, 보통 그런 저장소를 찾지 못하면, 새로운 버전에 대한 패키지를 스스로 컴파일해서 설치할 수 있습니다.
먼저, 시드에 있는 gcc-13을 가져와서 컴파일할 수 있습니다. 이때, 정상적으로 컴파일이 되지 않을 수 있기 때문에, 오류 메시지를 확인해서 컴파일을 시도할 수 있습니다.
그런-다음, 현재 시스템에 설치된 gcc에 대한 정보를 얻습니다:
- dpkg -l | grep gcc
- dpkg -l | grep 12.3.0-12
관련된 모든 패키지의 정보를 얻으면, 그것을 기반으로 로컬에서 패키징된 gcc-13으로 덮어쓰기를 시도합니다:
- dpkg -i cpp-13_2.0-7_amd64.deb ...
생각보다 많은 패키지를 함께 설치해야 하는데, 왜냐하면 의존성으로 인해 개벌적으로 설치가 불가능하기 때문입니다.
그런-다음 다시 한번 gcc-12의 목록을 얻습니다:
- dpkg -l | grep 12.3.0-12
GCC-13과 같은 이름의 패키지가 존재하지 않고, 남은 gcc-12 관련 패키지는 gcc-12를 사용하기 위한 최소한의 패키지입니다.
이제 아래와 같이 설정함으로써 gcc 버전을 선택적으로 사용할 수 있습니다:
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave /usr/bin/g++ g++ /usr/bin/g++-12
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 --slave /usr/bin/g++ g++ /usr/bin/g++-13
- sudo update-alternatives --config gcc
- gcc -v
이전 버전으로 되돌리기 위해서는 다음과 같은 진행할 수 있습니다: 이 과정은 테스트되지 않았습니다.
- sudo apt purge gcc-13 g++-13
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120 --slave /usr/bin/g++ g++ /usr/bin/g++-12
- sudo update-alternatives --config gcc
- gcc -v