본문 바로가기
프로그래밍/리눅스

리눅스(Linux) 패키지 관리 시스템에 대해서

by bantomak 2025. 2. 17.
반응형

패키지 관리 시스템(PMS, Package Management System)

리눅스를 비롯한 유닉스 계열 운영체제는 패키지 관리 시스템이 탑재되어 있다. 패키지 관리 시스템(PMS, Package Management System)은 패키지의 설치, 업데이트 구성, 제거를 자동화하고 관리하는 시스템이다.

패키지와 패키지 관리 시스템

패키지 관리 시스템이 관리하는 대상인 '패키지'에 대해서 알아보자. 패키지(package)는 소프트웨어 프로그램과 관련 파일들을 포함한 묶음을 의미한다. 패키지는 소프트웨어의 설치, 업데이트, 구성, 제거를 용이하게 하는 정보는 담고 있다. 패키지의 주요 구성 요소는 다음과 같다.

  • 실행 파일 : 프로그램을 실행할 수 있는 파일
  • 라이브러리 파일 : 프로그램을 실행하는데 필요한 라이브러리
  • 문서 : 매뉴얼, 라이선스 정보, 개발자 문서 등의 문서
  • 패키지 메타데이터 : 패키지 이름, 버전, 설명, 종속성 정보 등의 메타데이터
  • 설정 파일 : 사용자 또는 시스템 관리자가 프로그램을 구성하는 데 필요한 설정 정보

패키지 관리 시스템은 일관된 방법으로 소프트웨어를 쉽게 관리할 수 있도록 도와준다. 주로 리눅스 같은 유닉스 기반 운영체제에서 널리 사용한다. 패키지 관리 시스템의 주요 기능은 다음과 같다.

  • 패키지 설치 : 소프트웨어 패키지를 시스템에 설치한다.
  • 종속성 관리 : 종속성(dependancy, 패키지 간 상호 의존 관계)이 있는 다른 패키지를 자동으로 찾아 설치하기도 한다.
  • 업데이트 : 설치된 패키지를 최신 버전으로 업데이트한다.
  • 설정 관리 : 패키지 설정을 관리하고 사용자 환경에 맞게 설정할 수 있다.
  • 제거 : 설치된 패키지를 시스템에서 제거한다.

패키지 관리 시스템은 기본적으로 사용자로부터 명령을 입력받아 작동한다. 사용자는 패키지 관리 시스템을 위한 커맨드라인 툴(CLI)이나 GUI 기반의 애플리케이션을 이용해 패키지 관리 시스템에 명령을 내린다. 예를 들어, 사용자가 새로운 패키지 설치를 명령하면 패키지 관리 시스템은 설정된 패키지의 리포지터리(repository, 패키지들이 보관된 공간 또는 주소)를 통해 패키지 정보를 취득해 시스템에 설치한다. 패키지 리포지터리는 일반적으로 운영체제/배포판과 밀접한 관계가 있다. 패키지 리포지터리는 운영체제/배포판 관리 업체나 단체가 관리하므로 크게 신경 쓸 필요는 없다.

apt로 패키지 관리하기

apt(Advanced Package Tool)는 데비안과 우분투 계열의 리눅스 배포판에 탑재된 패키지 관리 시스템이다. 데비안 계열의 배포한인 우분투, 데비안, 리눅스 민트 등에서 널리 사용한다.

패키지 조회

실제 패키지를 시스템에 설치하기 전에 어떤 패키지가 설치되어 있는지 조회한다. 패키지 조회 명령은 apt list이다. 아무런 옵션 없이 실행하면 설치 여부와 관계없이 패키지 리포지터리의 패키지 중에서 시스템에 적합한 패키지를 모두 보여준다. 시스템에 설치된 패키지만 조회하고 싶다면 --installed 옵션을 추가한다. 시스템에 설치된 패키지 중 업그레이드 가능한 패키지만 조회하려면 --upgradable 옵션을 추가한다.

 

apt list 명령으로 패키지를 조회하면 무수히 많은 리스트가 나올 거다. 패키지가 너무 많으니 grep으로 원하는 패키지를 골라 검색하는 것을 추천한다. (전부 보고 싶다면 그것도 추천한다.)

apt list
apt list | wc -l
apt list --installed | wc -l

업그레이드 가능한 패키지도 조회해 보자. 업그레이드 가능한 패키지는 현재 설치된 패키지 버전과 업그레이드 가능한 버전 정보를 함께 출력한다.

apt list --upgradable

패키지 DB 업데이트

패키지 관리 시스템은 시스템에 설치된 패키지를 관리한다. 또한, 설치되지 않았지만 설치 가능한 패키지에 대한 정보도 관리한다. 이런 패키지 관리를 위한 패키지에 관한 모든 정보를 시스템에 저장해 놓고 사용하는데, 이를 패키지 DB라고 한다.

 

리눅스 시스템이 설치된 후에도 패키지마다 새로운 버전의 패키지를 제공한다. 새로운 패키지는 패키지 리포지터리에 올라간다. 이렇게 되면 시스템의 패키지 DB와 패키지 리포지터리 정보가 일치하지 않게 된다. 이때 필요한 것이 패키지 DB 업데이트이다. 패키지 DB 업데이트는 패키지 리포지터리의 정보를 시스템의 패키지 DB에 업데이트하는 것을 뜻한다. 패키지 DB가 업데이트될 뿐 실제 패키지가 설치되거나 업데이트되지는 않는다.

sudo apt update

패키지를 설치할 때는 되도록 최신 버전 패키지를 설치하는 것이 좋다. 따라서 패키지를 설치하거나 업그레이드하기 전에는 패키지 DB를 업데이트하자.

패키지 설치

이제 패키지를 설치해 보자. 패키지 설치 명령어는 다음과 같다.

apt install [package_name]

yq라는 패키지를 설치해 보자. yq는 YAML(YAML Ain't Markup Language, 사람이 쉽게 이해할 수 있고 형식으로 데이터를 구조화해 표현하는 언어) 형식의 파일을 분석해 원하는 결과를 화면에 출력해 주는 명령이다.

yq 명령을 실행해 보면 에러가 발생한다. yq가 설치되어 있지 않기 때문이다. 에러 메시지를 보면 어떤 명령으로 yq 패키지를 설치할 수 있는지 나와있다. snap 패키지 관리 시스템을 사용해 yq 패키지를 설치하는 명령어를 안내한다. snap도 apt와 같은 패키지 관리 시스템이다.

sudo apt install yq

현재 로컬 우분투에서 apt를 통한 설치가 되지 않아서 snap을 사용해서 yq를 설치해 보았다. 정상적으로 잘 설치되었다. 물론 apt를 사용해서 설치하는 것도 가능하다. 가능하다면 둘 다 해보자.

패키지 삭제

설치된 패키지를 삭제할 때는 다음 형식을 사용한다.

apt remove [package_name]
apt autoremove [package_name]

apt remove 명령은 단일 패키지를 삭제한다. apt autoremove 명령은 대상 패키지를 삭제하면서 불필요해진 패키지까지 함께 삭제한다. 위에서 설치한 yq를 패키지를 삭제해 보자.

sudo apt remove yq

apt autoremove 명령으로 불필요해진 패키지까지 함께 삭제해 보자.

sudo apt autoremove yq

댓글