Embedded Linux

패키지 버전관리 - update-alternatives

작성자 임베디드코리아 작성일26-01-01 23:28 조회57회 댓글0건
< 패키지 버전관리 :  update-alternatives >

1. 심볼릭 링크 생성
$ sudo update-alternatives --install <link> <name> <path> <priority>
--install 옵션을 사용하여 심볼릭 링크를 생성할 수 있으며, /etc/alternatives 디렉토리에 심볼릭 링크가 생성된다.

link
전체 경로를 포함한 패키지 실행 명령어
name
 패키지 실행 명령어 이름
path
실제 경로 패키지 실행 명령어 위치
priority
자동모드인 경우 priority 높은 값이 선택됨

<예시>
임베디드 SDK를 구성하는 여러 패키지 및 라이브러리는 최신버전보다 구버전을 사용하고 있어,
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 옵션은 심볼릭 링크를 제거할 수 있다.

<예시>
$ sudo update-alternatives --set  gcc  /usr/bin/gcc-7 10


3. 심볼릭 링크 수동 설정
$ sudo update-alternatives --config <name>
--config 옵션은 심볼릭 링크를 우선순위를 무시하고 사용자가 임의로 설정이 가능하다.

<예시>
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                        Priority  Status
------------------------------------------------------------
* 0            /usr/lib/jvm/jdk-21.0.9/bin/java          1        auto mode
  1            /usr/lib/jvm/jdk-21.0.9/bin/java          1        manual mode
  2            /usr/lib/jvm/jdk-17.0.12/bin/java        2          manual mode

Press <enter> to keep the current choice[*], or type selection number:

openJDK 21과 Oracle JDK 17이 깔려있을 때, '시스템 전반적으로' 사용할 자바 버전을 지정해 줄 수 있다.

4. 설정하기
  등록한 내역을 설정하기 위해서는 다음과 같이 하면 된다.

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

<예시>
$ sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk/bin/java
이 명령은 java라는 이름의 대체 항목에 대해 /usr/lib/jvm/java-17-openjdk/bin/java를 기본 실행 파일로 설정한다.