콤푸타/linux

패키지 관리자

어둠의다크 2024. 7. 6. 18:02

1. 패키지 관리자란

리눅스 사용자는 OS를 처음 설치하거나 또는 사용 중에 주기적으로(수동으로) 업그레이드를 진행한다. 윈도우는 os에서 자체적으로 업데이트를 수행하지만 리눅스는 사용자가 업데이트를 수행해주어야 한다.

데비안 계열의 리눅스 운영체제를 사용해본 독자는 다음과 같은 명령을 많이 수행해 보았을 것이다.

sudo apt install "package"
sudo apt update && sudo apt upgrade

이는 'apt'라는 패키지 관리자를 superuser권한으로(sudo, superuser do)실행 한다는 의미다. 요즘은 데비안 계열 또는 우분투를 많이 쓰기 때문에 'yum'이나 'dnf'보다  APT(Advanced Package Tool)이라는 명령이 익숙한 사용자들이 많을것이라 생각한다.

 

패키지 관리자란 무엇이고 패키지 관리자의 역할은 무엇일까? Wikipedia에는 다음과 같이 설명되어 있다.

Wikipedia 패키지 관리자

패키지 관리자(package manager, 패키지 매니저), 패키지 관리 시스템(package management system)은 컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다.

즉 패키지(소프트웨어)를 설치, 업데이트하고 의존성을 관리해주는 도구라고 이해하면 좋을 것 같다.

 

2.  패키지 관리의 원리

밥먹고 나왔더니 세션이 풀려서 작성글이 다 날아갔다.. 티스토리 너 뭐냐 이자식아.. 임시저장기능은 어디다 팔아먹었냐

아무튼 앞에서 패키지 관리자란 무엇인지 간략하게 살펴보았다. 그럼 이 패키지 관리자는 패키지를 어떻게 관리할까?

각 OS 관리 그룹들은 각자의 패키지 저장소를 관리하고 있다. 이 패키지 저장소에는 패키지 소프트웨어와 의존성을 가지는 소프트웨어에 대한 정보들이 저장되어 있다. 사용자가 패키지 관리자에서 특정 소프트웨어에 대한 정보(설치, 업데이트)를 요청할 때 마다 최신 정보들을 내려준다.

다음은 실제 패키지 저장소와 저장소 미러 사이트다.

Debian 한국 공식 미러 http://ftp.kr.debian.org/debian/

KAIST APT 한국 미러 http://ftp.kaist.ac.kr/

KAKAO APT 한국 미러 https://mirror.kakao.com/ 

이 외에도 각 리눅스 배포판들은 배포사에 따라 각자의 패키지 저장소를 가지고있다. 그리고 미러 사이트는 각 국가에서 접근속도를 높여주기 위한 CDN이라고 이해할 수 있다.

아무튼 저런 패키지 저장소에 요청을 하게 되는데, 이 패키지저장소에 대한 정보는 '/etc/apt/sources.list' 파일에 기록돼있다.

/etc/apt/sources.list

기본값으로 Debian 한국 공식 미러 사이트가 저장돼있는것을 볼 수 있다.

 

3. 패키지 관리하기

앞서 같은 패키지 저장소에도 여러 미러가 존재한다는 것을 언급했다. 우리 입맛에 맞는 패키지 저장소를 취사선택할 수 있는데, 그럼 어떻게 변경할 수 있을까?

당연히 '/etc/apt/source.list'파일을 변경함으로써 패키지 저장소 변경이 가능하다. 또는 '/etc/apt/sources.list.d' 경로에 패키지 저장소 주소가 기록된 파일을 생성하는 방법도 고려해볼 수 있다.

VScode를 명령만으로 설치하는 상황을 생각해보자. 일반적으로 데비안 계열 운영체제라면 sudo apt install vscode 명령을 시도해볼것이다. 하지만 apt 패키지 저장소에서는 vscode가 관리되지 않는다.

'apt search vscode' 명령을 수행해보자.

위와같이 vscode 관련 소프트웨어를 찾아볼수가 없다.

그래서 다음과 같은 과정을 거친다. 필자는 apt 관리기능을 사용하는 방법으로 진행해보겠다.



# 방법 1
# software-properties-common 설치 (add-apt-repository 사용을 위해)
sudo apt install software-properties-common

# wget 으로 저장소 공개키를 읽어 apt-key add 를 사용해 키 추가. -는 표준 입출력을 의미한다.
wget -O - https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# 패키지 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"

# 방법 2
# 해당 정보들을 파일에 직접적으로 쓴다.
wget -O - https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscode.gpg

# 패키지 저장소도 수동으로 파일에 추가.
echo deb [arch=amd64 signed-by=/usr/share/keyrings/vscode.gpg] https://packages.microsoft.com/repos/vscode stable main | sudo tee /etc/apt/sources.list.d/vscode.list

# 패키지 저장소 업데이트
sudo apt update

# 패키지 설치
sudo apt install vscode

 

4. 그 외 다른 패키지 관리자들

python - pip

node.js - npm

ruby - gem

redhat 계열 - yum(구식), dnf(신식)

arch linux - pacman

ubuntu - snap

windows - chocolaty(choco)