Linux 강좌 / APT와 DNF로 패키지 설치·업데이트하기

리눅스의 패키지 관리자는 저장소에서 프로그램과 필요한 의존 패키지를 찾아 설치·업데이트·제거합니다. Debian·Ubuntu 계열에서는 APT의 apt, Rocky Linux 계열에서는 DNF의 dnf가 대표적입니다. 업데이트는 저장소 정보만 갱신하는 단계와 실제 설치된 패키지를 바꾸는 단계를 구분해야 안전합니다.

패키지, 저장소, 의존성 이해하기

패키지는 프로그램 파일과 버전·의존성 같은 설치 정보를 묶은 단위입니다. 저장소(repository)는 배포판이 제공하거나 관리자가 추가한 패키지 제공처입니다. 어떤 프로그램이 다른 라이브러리를 요구하면 패키지 관리자가 의존성을 검토하고 함께 설치할 수 있습니다. 설치 전에는 출처, 추가·교체·삭제될 패키지와 서비스에 미칠 영향을 확인하세요.

같은 명령 이름이라도 배포판, 릴리스, 설정된 저장소에 따라 제공되는 버전과 결과가 다릅니다. Debian·Ubuntu와 Rocky Linux의 명령을 한 시스템에 섞어 실행하지 마세요. 다음으로 자신의 배포판을 확인할 수 있습니다.

cat /etc/os-release
command -v apt
command -v dnf

/etc/os-release의 ID·ID_LIKE는 배포판 계열을 판단하는 단서입니다. command -v는 명령이 있는지 확인할 뿐, 그 배포판의 모든 패키지 관리 정책까지 설명하지는 않습니다. 컨테이너·최소 설치 이미지에서는 관리 도구가 없거나 사용이 제한될 수 있습니다.

APT와 DNF의 기본 작업 비교

목적 Debian·Ubuntu: APT Rocky Linux: DNF
패키지 찾기 apt search tree dnf search tree
패키지 정보 apt show tree dnf info tree
새 업데이트 확인 sudo apt update 후 apt list --upgradable sudo dnf check-update
패키지 설치 sudo apt install tree sudo dnf install tree
설치된 패키지 갱신 sudo apt upgrade sudo dnf upgrade
패키지 제거 sudo apt remove tree sudo dnf remove tree

표의 tree는 명령 예시용 패키지입니다. 각 저장소에서의 제공 여부는 실제 시스템에서 확인하세요. dnf check-update는 업데이트가 있을 때 종료 상태 100을 반환할 수 있으므로 자동화에서 이를 곧바로 오류로 처리하지 마세요. 표의 설치·업데이트·제거 명령은 시스템 상태를 바꾸므로 연습용 환경에서 대상을 확인한 뒤 실행해야 합니다.

Debian·Ubuntu에서 APT 사용하기

APT는 Debian 패키지(.deb)를 관리합니다. sudo apt update는 설정된 저장소의 패키지 목록을 새로 가져오며, 일반적으로 이미 설치된 프로그램을 그 자체로 업그레이드하지 않습니다. apt list --upgradable로 갱신 후보를 살펴본 다음 sudo apt upgrade를 실행해야 설치된 패키지의 업데이트가 진행됩니다.

sudo apt update
apt list --upgradable
sudo apt upgrade

업그레이드 실행 전에 새로 설치·갱신·제거될 패키지 목록과 다운로드 양을 검토하세요. 저장소 메타데이터 다운로드에 실패하면 목록이 오래됐거나 일부 저장소를 읽지 못했을 수 있으므로 경고를 확인해야 합니다. apt는 사람이 대화형으로 사용할 때 편리한 인터페이스이고, 안정된 명령줄 동작이 중요한 스크립트에는 배포판 문서가 안내하는 apt-get 같은 도구를 검토하세요.

새 프로그램을 찾을 때는 먼저 검색과 정보 조회를 합니다. 아래의 마지막 명령만 실제 설치를 수행합니다.

apt search tree
apt show tree
sudo apt install tree
tree --version

설치가 성공했다면 tree --version에서 버전 정보를 확인할 수 있습니다. 버전 번호는 배포판과 저장소에 따라 다릅니다. 패키지가 없다는 메시지가 나오면 배포판, 저장소 설정, 철자를 확인하세요. 인터넷에서 찾은 임의의 저장소나 설치 스크립트를 출처 확인 없이 추가하지 마세요.

Rocky Linux에서 DNF 사용하기

Rocky Linux는 RPM 패키지를 DNF로 관리합니다. dnf search와 dnf info로 후보를 확인하고, sudo dnf install로 설치합니다. DNF는 실행할 거래(transaction)에서 설치·업데이트·삭제할 패키지를 보여 주므로, 확인 프롬프트를 자동 수락하기 전에 목록을 읽어야 합니다.

dnf search tree
dnf info tree
sudo dnf install tree
tree --version

새 업데이트의 존재를 확인하고 실제 패키지를 갱신하는 명령은 구별됩니다. 아래에서 check-update는 업데이트 후보를 조회하고, upgrade는 승인 후 설치된 패키지를 갱신합니다.

sudo dnf check-update
sudo dnf upgrade

Rocky Linux의 보통 패키지 업데이트와 주 버전 업그레이드는 다른 작업입니다. dnf upgrade를 실행했다고 언제나 다음 주 버전으로 안전하게 전환되는 것은 아닙니다. 주 버전 변경은 해당 릴리스의 공식 마이그레이션 지침과 백업·호환성 계획을 별도로 확인하세요.

설치 전에 확인할 항목

  1. 운영체제 계열과 릴리스, 사용 중인 저장소를 확인합니다. 필요한 패키지가 공식 또는 신뢰할 수 있는 저장소에 있는지 살펴봅니다.
  2. 패키지 정보에서 이름·버전·설명·의존성을 확인합니다. 같은 이름처럼 보여도 다른 기능의 패키지일 수 있습니다.
  3. 설치나 업그레이드가 제안하는 추가 패키지·제거 항목과 디스크 사용량을 검토합니다. 운영 서버라면 서비스 중단 가능성과 복구 방법을 준비합니다.
  4. 명령을 실행한 뒤 종료 상태와 출력의 오류·경고를 읽고, 프로그램 버전 및 필요한 서비스 상태를 확인합니다.
  5. 문제가 생기면 무조건 이전 버전으로 되돌릴 수 있다고 가정하지 않습니다. 사전에 확보한 백업, 저장소의 제공 버전, 배포판의 복구 지침을 기준으로 판단합니다.

보안 업데이트에 재부팅이 필요한지는 바뀐 패키지와 배포판 운영 정책에 따라 다릅니다. 새 커널을 설치했다면 실행 중인 커널은 즉시 바뀌지 않습니다. uname -r로 현재 커널을 확인하고, 변경 창과 서비스 영향을 고려해 재부팅을 계획하세요.

제거·정리에서 조심할 점

apt remove 또는 dnf remove는 지정한 패키지를 제거합니다. APT의 purge는 패키지가 관리하는 설정 파일 제거까지 포함하므로 단순 제거보다 영향이 큽니다. 자동 설치된 의존 패키지를 정리하는 autoremove는 제안 목록에 필요한 프로그램이 들어 있지 않은지 확인한 뒤 사용하세요. 데이터 디렉터리나 수동 생성 파일이 모두 삭제되는지 여부는 패키지·스크립트마다 다르므로 제거를 백업 방법으로 생각하지 마세요.

DNF의 history는 과거 거래를 조사하는 데 도움이 되지만, 기록이 있다는 사실만으로 모든 변경을 완전히 되돌릴 수 있다고 보장하지 않습니다. 설정 파일·데이터·외부 저장소 변경은 별도 백업이 필요합니다.

공식 문서

Ubuntu Server 패키지 관리 문서는 APT의 목록 갱신과 설치·업그레이드 절차를 설명합니다. DNF 명령 참조에는 install·check-update·upgrade 등의 동작과 종료 상태가 정리돼 있습니다. Rocky Linux 업데이트 가이드는 릴리스 업데이트의 적용 범위를 확인할 때 참고할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux / 명령어 / tree - 디렉터리 구조를 트리 형태로 출력

Linux tree 명령어로 디렉터리와 파일 구조를 계층적으로 확인하는 방법을 설명합니다. 설치, 깊이 제한, 숨김 파일, 제외 패턴, 크기·권한 표시와 JSON 저장 방법까지 정리합니다.

Linux 강좌 / 파일 시스템 이해하기 - 절대·상대 경로와 주요 디렉터리

Linux 강좌 / 파일 시스템 이해하기 - 절대·상대 경로와 주요 디렉터리

리눅스 파일 시스템의 트리 구조와 절대·상대 경로를 이해하고, /home·/etc·/var 등 주요 디렉터리의 역할과 경로를 읽는 방법을 익힙니다.

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux renice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux / 명령어 / ethtool - 네트워크 링크·드라이버 정보 확인

Linux ethtool 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux / 명령어 / fold - 긴 행을 지정한 너비로 나누기

Linux fold 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / ssh-copy-id - SSH 공개키를 원격 계정에 등록

Linux / 명령어 / ssh-copy-id - SSH 공개키를 원격 계정에 등록

Linux ssh-copy-id 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인

Linux / 명령어 / curl - URL 요청과 HTTP 응답 확인

Linux curl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / Memo

Linux / Memo

리눅스와 관련된 여러 정보를 정리합니다.

Linux 강좌 / systemd 서비스와 부팅 로그 확인하기

Linux 강좌 / systemd 서비스와 부팅 로그 확인하기

리눅스 부팅 흐름과 systemd 유닛을 이해하고 서비스의 실행 상태와 자동 시작 설정을 구분합니다. systemctl과 journalctl로 상태·부팅 로그를 확인합니다.

Linux 강좌 / 배포판 선택하기

Linux 강좌 / 배포판 선택하기

리눅스 입문과 서버 실습에 Ubuntu와 Rocky Linux 중 무엇을 선택하면 좋을까요? 학습 목표, 패키지 관리 방식과 지원 정책을 기준으로 두 배포판을 비교합니다.