데비안과 우분투에서 패키지를 찾고 설치하는 명령이다. apt가 사용자용 명령이고, dpkg는 이미 받아 둔 패키지 파일을 다룬다.

패키지 목록은 이 머신에 저장되어 있다. 저장소를 보기 전에 그 목록부터 갱신한다.

Bash
sudo apt update
apt list --upgradable
apt search nginx
apt show nginx

update는 설치가 아니라 목록만 받는다. `apt list --upgradable`는 새 버전이 있는 패키지다. search는 이름과 짧은 설명에서 찾고, show는 버전, 의존성, 설명을 보여 준다.

Bash
sudo apt install nginx
sudo apt remove nginx
sudo apt purge nginx

install은 패키지와 그에 필요한 의존성을 설치한다. remove는 패키지를 지우되 설정 파일은 남기는 경우가 많다. purge는 패키지와 함께 그 패키지의 설정 파일도 지운다. 어느 쪽이 설정을 지우는지는 `apt show`와 지운 뒤 `/etc`를 보면 확인된다.

업그레이드는 목록을 갱신한 뒤에 한다.

Bash
sudo apt update
sudo apt upgrade

upgrade는 이미 설치된 패키지를 올린다. 다른 패키지를 지워야만 진행되는 변경은 미루기도 한다. 그 변경까지 맡기려면 `sudo apt full-upgrade`다. 지워질 패키지 목록을 읽고 확인한 뒤에 진행한다.

어느 패키지의 파일인지

Bash
dpkg -l 'nginx*'
dpkg -L nginx
dpkg -S /usr/sbin/nginx

`dpkg -l`은 설치 상태와 버전이다. 앞 두 글자가 `ii`면 설치되어 있다. `-L`은 그 패키지가 풀어 둔 파일 목록이다. `-S`는 그 파일이 어느 패키지 소속인지 찾는다.

저장소 주소는 `/etc/apt/sources.list`와 `/etc/apt/sources.list.d/`에 있다. 주소를 바꾸었으면 다시 `apt update`를 해야 목록에 반영된다.

`.deb` 파일을 직접 설치할 때는 `sudo apt install ./package.deb`를 쓸 수 있다. apt가 의존성을 같이 맞춘다. `dpkg -i`는 그 파일만 설치하고, 의존성이 빠지면 중간에 실패할 수 있다.