Linux 패키지 관리 시스템
APT
리눅스에서는 소프트웨어를 설치하고 관리하기 위해 패키지 관리 시스템이라는 방식을 사용합니다. 이 시스템은 운영체제가 신뢰하는 중앙 저장소에서 소프트웨어를 다운로드해 설치하고, 필요한 설정과 업데이트를 자동으로 처리해 줍니다. 사용자는 일일이 웹사이트에 접속해서 설치 파일을 내려받을 필요 없이, 단일 명령어로 프로그램을 간편하게 관리할 수 있습니다.
apt는 Debian 계열 리눅스 배포판에서 사용하는 대표적인 패키지 관리 도구입니다. Advanced Package Tool의 약자로, 이름처럼 패키지 관리 작업을 더 쉽게 해 주기 위해 만들어졌습니다. 우분투(Ubuntu) 역시 Debian 계열에 속하기 때문에 기본적으로 apt를 사용합니다.
apt의 가장 큰 장점은 저장소에 올라가 있는 수많은 프로그램을 검색하고 설치할 수 있다는 점입니다. 예를 들어 우분투에는 우분투 저장소라는 중앙 서버가 있으며, 이곳에는 수천 개의 소프트웨어 패키지가 체계적으로 관리됩니다. 사용자가 어떤 프로그램을 설치하고 싶다면, apt가 그 저장소에서 프로그램을 다운로드하고 설치 과정을 처리합니다. 또한 프로그램을 실행하는 데 필요한 다른 라이브러리나 구성요소가 있다면 apt가 이를 자동으로 함께 설치해 줍니다. 이런 과정을 의존성 관리라고 부릅니다.
Update / Upgrade
# 패키지 목록 갱신
$ sudo apt update
# 패키지 실제 업데이트
$ sudo apt upgrade
프로그램을 설치하기 전에 apt update 명령어를 실행해 저장소의 최신 패키지 목록을 갱신해 두는 것이 좋습니다. 패키지 목록을 갱신하지 않으면 오래된 정보로 설치를 시도해서 오류가 날 수 있습니다. 단, apt update는 실제로 프로그램을 업데이트하는 것이 아니라, 프로그램들의 버전 정보, 삭제/수정 정보 등의 정보를 갱신합니다.
프로그램을 실제로 업데이트 하려면 apt upgrade 명령어를 사용합니다. apt upgrade를 실행하면 시스템에 설치된 모든 패키지를 최신 상태로 업데이트합니다. 사용하지 않는 패키지까지 전부 업데이트하기 때문에 업데이트 완료까지 시간이 오래 걸릴 수 있으니 꼭 필요한 경우가 아니라면 실행하지 않는 편이 좋습니다.
Install
$ sudo apt install [설치할 패키지 이름]
apt update 명령어를 입력해 저장소 정보를 업데이트한 뒤에는 apt install 명령어를 통해 원하는 소프트웨어를 설치할 수 있습니다. 예를 들어, 텍스트 편집기인 Vim을 설치하고 싶으면 sudo apt install vim이라고 입력하면 됩니다. 설치가 끝나면 프로그램이 자동으로 경로에 등록되어 바로 사용할 수 있습니다.
Remove / Purge / Autoremove
$ sudo apt remove [삭제할 패키지 이름]
$ sudo apt purge [삭제할 패키지 이름]
$ sudo apt autoremove
반대로 패키지를 삭제하고 싶다면 apt remove 명령어를 입력해 지울 수 있습니다. 하지만 remove를 사용할 경우 각종 설정 파일은 삭제되지 않고 남아있게 됩니다. 설정 파일까지 완전히 삭제하고 싶다면 apt purge 명령어를 사용해 삭제할 수 있습니다. 다만, apt remove와 apt purge 모두 삭제 대상 패키지만 삭제를 진행하고 해당 패키지의 의존성 관계로 설치된 다른 패키지들을 함께 삭제하지 않습니다.
이런 경우에는 apt autoremove 명령어를 사용하면 됩니다. 의존성 때문에 함께 설치되었지만, 원래의 패키지가 삭제되면서 필요하지 않게 된 패키지를 자동으로 찾아서 삭제해 줍니다.
List
$ sudo apt list --installed
$ sudo apt list | grep [검색할 패키지 이름]
apt list 명령어를 입력하면 설치할 수 있거나 이미 설치된 패키지의 목록을 확인할 수 있습니다. 별도의 옵션이 없으면 설치된 패키지와 설치되지 않은 패키지를 구분 없이 출력하게 되는데, --installed 옵션을 사용하면 시스템에 설치된 패키지만 출력되게 할 수 있습니다. 보통 grep 명령어와 함께 혼합해서 패키지 설치 여부나 버전을 확인하기 위해 사용됩니다.
프로그램 설치 방법을 검색하다 보면 apt가 아닌 apt-get을 사용하는 예제들을 종종 찾을 수 있습니다. 사실 apt와 apt-get은 거의 비슷한 기능을 하기 때문에 어느 쪽을 사용해도 괜찮습니다. apt가 apt-get에 비해서 사용자 친화적인 특징들이 많기 때문에 일반적으로는 apt를 주로 사용합니다.
예를 들어, apt는 프로그램 설치 진행률을 터미널 하단에 더욱 직관적으로 표시해 줍니다. 또, 예전에는 apt-get, apt-cache, dpkg 등 여러 명령어를 각각 사용해야 했지만, apt는 이 기능들을 하나로 통합해 더 간단하게 쓸 수 있도록 만들어졌습니다.
APT 저장소
우분투에서 apt로 프로그램을 설치할 때, 소프트웨어는 여러 저장소에 나뉘어 보관됩니다. 저장소란 말 그대로 패키지를 담아두는 서버 공간입니다. 우분투는 크게 아래와 같이 저장소를 구분합니다.
- Main 저장소
- 우분투에서 공식적으로 지원하고 관리하는 핵심 패키지들이 들어 있습니다.
- 보안 업데이트와 버그 수정이 안정적으로 제공됩니다.
- 기본적으로 활성화되어 있습니다.
- Universe 저장소
- 커뮤니티에서 유지·관리하는 오픈소스 패키지가 담겨 있는 저장소입니다.
- 수천 개의 유용한 소프트웨어가 있지만, Main처럼 우분투 공식 개발팀에서 지원하지는 않습니다.
- 보안 업데이트는 가능하지만, 지원이 제한적일 수 있습니다.
- Restricted 저장소
- 우분투에서 기본적으로 제공하지만, 라이선스 제약이 있는 드라이버나 소프트웨어가 들어 있습니다.
- 예: 그래픽카드 드라이버, 일부 무선랜 드라이버 등
- Multiverse 저장소
- 라이선스 문제가 있거나 자유 소프트웨어가 아닌 패키지가 포함됩니다.
- 사용은 가능하지만, 공식 지원은 없습니다.
Universe
앞서 설명한 Universe 저장소에는 특히 오픈소스 커뮤니티가 개발하고 배포하는 소프트웨어가 대부분 포함됩니다. 참고로 ROS의 핵심 패키지들은 별도의 ROS 저장소에서 설치되지만, 빌드 도구나 의존성 패키지들은 Universe 저장소에 포함되어 있기도 합니다.
# universe 저장소 추가
$ sudo add-apt-repository universe
# apt 저장소 업데이트
$ sudo apt update
보통 우분투를 처음 설치할 경우 Universe 저장소가 비활성화되어 있습니다. 위의 명령어를 차례로 입력하여 Universe 저장소를 추가하고, 저장소 목록을 갱신합니다. 이후에는 Universe에 포함된 패키지를 자유롭게 설치할 수 있습니다.