[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>] ...
Arguments | Description |
---|---|
<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>
Arguments | Description |
---|---|
<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
- https://skyoo2003.github.io/post/2017/03/17/what-is-alternatives-command