우분투 패키지 버전관리 - update-alternatives

우분투는 update-alternaitves를 사용하여 패키지(명령어)에 대한 디폴트 버전이나 경로를 설정할 수 있다. 우분투의 디폴트 터미널 프로그램은 gnone-terminal 설정되어 있으나, Tilix 설치하여 디폴트 터미널 프로그램을 Tilix로 설정하려면 update-alternatives를 사용하여 쉽게 설정이 가능하다.

 

1. 심볼릭 링크 생성

$ sudo update-alternatives --install <link> <name> <path> <priority>

--install 옵션을 사용하여 심볼릭 링크를 생성할 수 있으며, /etc/alternatives 디렉토리에 심볼릭 링크가 생성된다.

  • link
    • 전체 경로를 포함한 패키지 실행 명령어 ex) /usr/bin/gcc
    • /etc/alternatives/<name>을 가리킴
  • name
    •  패키지 실행 명령어 이름
  • path
    • 실제 경로 패키지 실행 명령어 위치 ex) /usr/bin/gcc-5
  • priority
    • 자동모드인 경우 priority 높은 값이 선택됨

임베디드 SDK를 구성하는 여러 패키지 및 라이브러리는 최신버전보다 구버전을 사용하고 있어, 우분투 20.04 버전의 gcc-9으로 빌드할 경우 gcc 상위 버전으로 인한 에러가 꽤 많이 발생하여, gcc-5 또는 gcc-7을 설치하여 빌드하는 경우가 종종 있다. 이 경우 아래와 같이 gcc 버전을 관리하여 사용할 수 있다.

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 10
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 10
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20

 

2. 심볼릭 링크 제거

$ sudo update-alternatives --remove <name> <path>

--remove 옵션은 심볼릭 링크를 제거할 수 있으며, /etc/alternatives 디렉토리의 심볼릭 링크도 함께 삭제된다.

 

3. 심볼릭 링크 수동 설정

$ sudo update-alternatives --config <name>

--config 옵션은 심볼릭 링크를 우선순위를 무시하고 사용자가 임의로 설정이 가능하다. 아래 이미지는 우분투 터미널 프로그램을 x-terminal-emulator를 tilix로 설정한 것을 나타낸다.

이 옵션 외에도 --set, --list, --display 옵션이 있으며, 아래 문서를 참고하도록 한다.

 

update-alternatives(8) - Linux man page

update-alternatives(8) - Linux man page Name alternatives - maintain symbolic links determining default commands Synopsis alternatives [options] --install link name path priority [--slave link name path]... [--initscript service] alternatives [options] --r

linux.die.net