Linux,  Programming

[Linux] update-alternatives: Ubuntu Package Version 관리

Ubuntu를 사용하면 apt-get 명령어를 통해 쉽게 package들을 설치할 수 있다. 그런데 버전에 민감한 package들 (gcc, python) 들은 여러 version을 설치하고 필요에 따라 변경이 필요하다.

사실 내부적으로 보면 symbolic link를 생성해주는게 전부다.

update-alternatives

상세 확인 (–display)

$ alternatives --display <name>
<name> : alternatives 에서 관리할 symbolic link 그룹명을 입력.
$ update-alternatives --display python
python - manual mode
  link best version is /usr/bin/python3.9
  link currently points to /usr/bin/python3.6
  link python is /usr/bin/python
/usr/bin/python3.6 - priority 1
/usr/bin/python3.9 - priority 3

확인 (–list)

--display와 같은 기능이지만 좀 더 간략하게 등록된 symbolic link를 보여준다.

$ alternatives --list <name>
<name> : alternatives 에서 관리할 symbolic link 그룹명을 입력.
$ update-alternatives --list python
/usr/bin/python3.6
/usr/bin/python3.9

생성 (–install)

update-alternatives --install <link> <name> <path> <priority>  [--slave <link> <name> <path>] ...
ArgumentsDescription
<link> 심볼릭링크명이 위치할 경로명
<name> /etc/alternatives 경로에 위치할 심볼릭링크명
<path> 패키지가 설치되어 있는 경로
<priority> 자동모드로 동작할 때 동작할 우선 순위
$ update-alternatives --install /usr/bin/python python /usr/bin/python3.6 1

제거 (–remove)

기존에 생성한 symbolic link를 제거한다.

$ update-alternatives --remove <name> <path>
ArgumentsDescription
<name> /etc/alternatives 경로에 위치할 symbolic link명
<path> 패키지가 설치되어 있는 경로
$ update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.9   3         auto mode
* 1            /usr/bin/python3.6   1         manual mode
  2            /usr/bin/python3.9   3         manual mode
$ update-alternatives --remove python /usr/bin/python3.9
$ update-alternatives --config python
There is 1 choice for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.6   1         auto mode
* 1            /usr/bin/python3.6   1         manual mode

자동 모드 설정 (–auto)

auto mode로 설정된 package version을 사용하도록 한다.

$ alternatives --auto <name>
<name> : alternatives 에서 관리할 symbolic link 그룹명을 입력.

수동 모드 설정 (–config)

수동으로 default package를 설정해준다.

$ update-alternatives --config <name>
$ update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python3.9   3         auto mode
  1            /usr/bin/python3.6   1         manual mode
  2            /usr/bin/python3.9   3         manual mode

Reference

  1. https://skyoo2003.github.io/post/2017/03/17/what-is-alternatives-command

Leave a Reply

Your email address will not be published. Required fields are marked *