Computer >> 컴퓨터 >  >> 시스템 >> Linux

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

리눅스의 핵심은 자유입니다. 상용 운영체제가 웹 브라우저 같은 앱 유형마다 '기본값'을 정해두고 사용자를 그쪽으로 유도하는 것과 달리, 리눅스는 시스템을 자신의 취향에 맞게 조정할 수 있는 도구를 제공합니다. 같은 종류의 프로그램이라도 원하는 만큼 여러 개를 설치하고 골라 쓸 수 있어야 하죠. 바로 이 지점에서 update-alternatives가 빛을 발합니다. 여러 옵션 사이를 손쉽게 전환할 수 있게 해주는 도구이기 때문입니다.

이 글에서는 우분투(및 기타 데비안 계열 배포판)에서 이 도구를 사용하는 방법을 살펴보겠습니다.

update-alternatives 시스템의 작동 원리

다양한 대안(alternative)들을 다루기 전에, 먼저 내부적으로 어떤 일이 일어나는지 짚고 넘어가겠습니다. editor라는 대안은 터미널 기반 텍스트 편집기를 제공합니다.

whereis editor
editor: /usr/bin/editor /usr/share/man/man1/editor.1.gz

이 명령어로 텍스트 파일을 열면 기대한 대로 동작합니다.

sudo editor /etc/fstab

파일시스템 설정 파일이 텍스트 편집기로 열리는데... 그렇다면 어떤 편집기일까요? 아래 시스템에서는 nano로 열렸습니다.

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

사실 editor 명령어는 심볼릭 링크(symlink)입니다. 그럼 nano로 직접 연결되어 있을까요? 아닙니다! /usr/bin/editor/etc/alternatives/editor를 가리키는 링크입니다. /etc/alternatives 디렉터리는 시스템의 모든 대안들이 심볼릭 링크 형태로 관리되는 곳이며, 이 링크들이 실제 프로그램을 가리킵니다. 즉, PATH에 있는 링크가 대안 디렉터리의 링크를 거쳐 실제 프로그램으로 이어지는 구조입니다.

짐작하셨겠지만, update-alternatives는 바로 이러한 링크들을 관리해주는 도구입니다. 사용법을 살펴보겠습니다.

update-alternatives 기본 사용 예시

대부분의 update-alternatives 명령어는 다음 패턴을 따릅니다.

sudo update-alternatives [option] [alternative(s)]

여기서 alternative(s)는 최종적으로 사용할 프로그램을 의미하고, option은 그 프로그램에 대해 수행할 작업을 뜻합니다. editor 항목을 계속 예로 들어, 본격적으로 조작하기 전에 먼저 현황부터 파악해 보겠습니다. display 옵션을 사용하면 상세 정보를 확인할 수 있습니다.

update-alternatives --display editor

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

상단 몇 줄에는 editor 명령어 자체의 경로와 현재 연결된 항목이 표시됩니다. 다만 man 페이지 번역본 등이 함께 출력되어 정보가 많습니다. 더 간결한 list 명령어를 쓰면 훨씬 이해하기 쉽습니다.

update-alternatives --list editor

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

보시다시피 nanoeditor의 대안으로 등록되어 있습니다. 그 외에 무엇을 쓸 수 있을까요? VIM을 포함해 세 가지 선택지가 나타납니다. config 옵션을 사용하면 editorVIM을 호출하도록 변경할 수 있습니다.

sudo update-alternatives --config editor

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

대화형 메뉴에서 새 옵션을 고르면 됩니다. 원하는 프로그램을 이미 알고 있다면 set 옵션을 사용하는 것이 더 빠릅니다.

sudo update-alternatives --set editor /usr/bin/vim.basic

다음으로, 실제로 활용해 볼 만한 대안 몇 가지를 소개하겠습니다.

알아두면 유용한 주요 대안 항목들

앞서 언급했듯이 이미 많은 패키지가 update-alternatives 시스템을 활용하고 있습니다. 시스템 관리에 도움이 될 만한 항목들을 소개합니다.

update-alternatives --config java

일부 프로그램은 특정 버전의 Java를 요구합니다. 우분투 계열 시스템에서는 저장소에서 OpenJDK(오픈소스 Java)의 여러 버전을 설치할 수 있고, 공식 Oracle JRE도 여러 버전을 수동으로 설치할 수 있습니다. 이들을 대안으로 등록해 두면 프로그램이 실행되는 Java 환경을 즉석에서 전환할 수 있습니다.

참고: Java 관련 대안 중에는 함께 업데이트해야 하는 항목들이 여럿 있습니다. Java 전용 작업을 일부 자동화해주는 편의 도구인 update-java-alternatives를 활용해 보세요.

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

update-alternatives --config x-www-browser/gnome-www-browser

설명이 거의 필요 없겠지만, 이 명령으로 기본 웹 브라우저를 지정할 수 있습니다. GNOME 기반 데스크톱 환경이라면 gnome-www-browser 항목도 함께 확인하세요.

update-alternatives --config mozilla-flashplugin

좋든 싫든 아직도 Flash를 사용하는 사이트가 많습니다. 이 항목을 통해 공식 Adobe 버전과 gnash 같은 오픈소스 구현체 사이를 전환할 수 있습니다.

사용 가능한 모든 대안 목록과 현재 설정이 궁금하다면 아래 명령어로 전체를 확인할 수 있습니다.

update-alternatives --get-selections

나만의 대안 항목 만들기

캐노니컬이 제공하는 항목을 관리하는 것만으로도 좋습니다. 하지만 자유란 결국 자기 것으로 만드는 데서 완성되는 법이죠? 이번 섹션에서는 직접 대안 그룹을 추가하고 삭제하는 방법을 알아보겠습니다.

시스템에 대안 추가하기

지원되는 패키지를 설치하면 대안이 자동으로 시스템에 등록됩니다. 예를 들어 emacs를 설치하면 설치 과정에서 스크립트가 실행되어 /etc/alternatives에 필요한 항목과 우선순위(priority)를 생성합니다.

하지만 모험심이 있다면 직접 대안을 만들 수도 있습니다. 다만 이 경우 해당 대안의 내용을 수동으로 채워야 한다는 점을 기억하세요. 예를 들어 x-word-processor라는 새 대안을 만들었다면, 첫 번째 프로그램과 이후 추가되는 모든 프로그램을 직접 등록해야 합니다. 삭제도 마찬가지로 직접 해야 하며, 그렇지 않으면 더 이상 존재하지 않는 프로그램을 대안이 가리키는 상황이 생길 수 있습니다.

x-word-processor라는 그룹을 만들고 하나의 대안(여기서는 훌륭한 LibreOffice Writer)을 추가하는 명령은 다음과 같습니다.

sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/lowriter 40

이 명령은 다음을 생성합니다.

  • word-processor라는 새 명령어(실제로는 심볼릭 링크)
  • x-word-processor라는 새 대안 그룹
  • 그룹에 포함되며 기본값이 되는 애플리케이션 /usr/bin/lowriter
  • 40의 우선순위 값

이제 명령줄에서 word-processor를 호출하면 LibreOffice Writer(위에서 lowriter로 지정)가 실행됩니다. 같은 명령 형식으로 실제 애플리케이션 경로만 바꿔 다른 프로그램(예: 텍스트 모드 워드 프로세서 wordgrinder)도 추가할 수 있습니다.

sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/wordgrinder 20

이제 x-word-processor 그룹을 조회하면 두 가지 옵션이 표시됩니다.

우분투에서 update-alternatives 명령어 하나로 기본 앱을 자유롭게 바꾸는 방법

기본적으로 그룹은 "auto" 모드로 동작합니다. 이는 시스템이 그룹 내에서 숫자가 가장 큰 우선순위를 가진 옵션을 자동으로 사용한다는 뜻입니다(이 경우 wordgrinder의 20보다 높은 40인 LibreOffice). 앞서 설명한 config 옵션으로 이 설정을 변경할 수 있습니다.

시스템에서 대안 삭제하기

더 이상 필요 없는 옵션이 있다면 remove 옵션을 사용한 간단한 명령으로 제거할 수 있습니다.

sudo update-alternatives --remove x-word-processor /usr/bin/wordgrinder

마지막으로 remove-all 옵션은 그룹에 속한 모든 대안을 포함해 그룹 전체를 삭제합니다.

sudo update-alternatives --remove-all x-word-processor

단, 이 명령들은 update-alternatives의 등록 항목만 삭제할 뿐, 링크된 실제 프로그램까지 삭제하지는 않습니다.

update-alternatives를 직접 사용해 본 적이 있으신가요? 대안 관리와 관련된 나만의 팁이나 요령이 있다면 댓글로 알려주세요!

이미지 출처: momente via Shutterstock.com