Ubuntu 18.04 Server / apt / 패키지 설치, 삭제, 업그레이드하는 명령어

Ubuntu 18.04 Server에서는 apt update로 패키지 목록을 갱신하고, apt install·apt remove·apt upgrade로 설치·삭제·업그레이드를 수행합니다. 목록 갱신은 프로그램을 업그레이드하는 작업이 아니며, 삭제나 전체 업그레이드 전에는 변경될 패키지를 확인해야 합니다.

APT의 역할과 작업 전 확인

APT(Advanced Package Tool)는 저장소의 패키지 정보와 의존성 정보를 이용해 소프트웨어를 관리하는 도구 모음입니다. 의존성이란 프로그램을 실행하는 데 함께 필요한 라이브러리나 다른 패키지를 뜻합니다. 아래 예시는 Ubuntu 18.04의 APT 1.6 계열을 기준으로 하며, 실제 패키지 버전과 변경 목록은 서버의 저장소·설치 상태에 따라 달라집니다.

Ubuntu 18.04 LTS의 일반 보안 유지보수는 2023년 5월에 종료되었습니다. 기존 서버라면 Ubuntu Pro의 확장 보안 유지보수 적용 여부나 운영체제 업그레이드 계획도 확인하세요. 미러 주소를 바꾸거나 apt upgrade를 실행하는 것만으로 지원 기간이 연장되지는 않습니다. 지원 범위는 Ubuntu 공식 지원 주기에서 확인할 수 있습니다.

설치·삭제·목록 갱신에는 보통 sudo 권한이 필요하지만 검색·정보 조회에는 필요하지 않습니다. 운영 서버에서는 설정과 중요 데이터를 백업하고 서비스 재시작 가능성을 고려해 작업 시간을 정하세요. 처음에는 자동으로 동의하는 -y 옵션 없이 변경 목록을 직접 확인하는 편이 좋습니다.

apt는 터미널에서 사람이 사용하기 편한 인터페이스입니다. 자동화 스크립트에서는 출력과 동작의 호환성을 고려해 apt-get·apt-cache를 우선 검토하세요. 특히 apt upgrade와 apt-get upgrade는 기본 의존성 처리 방식이 같지 않습니다. 차이는 Ubuntu 18.04 apt 매뉴얼에서 확인할 수 있습니다.

패키지 검색과 설치

실습에는 디렉터리 구조를 표시하는 tree 패키지를 사용합니다. 실제 서버에서는 필요한 패키지명으로 바꾸되, 먼저 설명과 설치 후보 버전을 확인하세요.

  1. 저장소의 최신 패키지 정보를 내려받습니다. 오류가 발생하면 다음 단계로 넘어가기 전에 원인을 확인합니다.
sudo apt update
  1. 패키지를 검색하고 상세 정보를 확인합니다. 설치된 버전과 설치 후보 버전·출처는 apt-cache policy로 구분할 수 있습니다.
apt search tree
apt show tree
apt-cache policy tree

apt search는 설명까지 검색하므로 이름에 tree가 없는 패키지도 나올 수 있습니다. apt show에서는 설명·의존성·크기를 살펴보고, apt-cache policy의 Installed와 Candidate를 비교하세요. Candidate가 없으면 저장소·목록 갱신 상태를 먼저 확인합니다. 조회 방식은 apt-cache 매뉴얼을 참고하세요.

  1. 설치를 모의 실행하여 새로 설치·업그레이드·삭제될 패키지를 확인한 뒤 실제로 설치합니다.
sudo apt-get --simulate install tree

--simulate는 패키지를 실제로 변경하지 않습니다. 단, 결과는 실행 당시의 상태를 기준으로 하므로 실제 설치 직전의 확인 화면도 읽어야 합니다. 예상하지 않은 삭제가 있으면 진행하지 말고 의존성·저장소 구성을 확인하세요.

sudo apt install tree
  1. 설치 후 패키지 등록 상태와 실행 가능 여부를 확인합니다.
dpkg-query -W tree
tree --version

첫 명령은 등록된 패키지명과 버전을, 두 번째 명령은 실행 파일의 버전 정보를 보여 줍니다. 설치할 새 버전이 없으면 이미 최신이라는 안내가 나올 수 있습니다. 필요한 의존성은 함께 설치되며, 명령의 동작과 모의 실행 옵션은 apt-get 매뉴얼에 설명되어 있습니다.

목록 갱신과 패키지 업그레이드

update는 저장소의 목록을 갱신할 뿐 설치된 프로그램을 바꾸지 않습니다. 업그레이드할 대상을 확인하려면 다음과 같이 실행합니다.

sudo apt update
apt list --upgradable
apt list --installed

apt list --upgradable은 업그레이드 가능한 패키지, apt list --installed는 설치된 패키지를 보여 줍니다. 단순히 apt list를 실행하면 이름 조건 등에 맞는 패키지 목록을 볼 수 있지만 출력이 많을 수 있습니다.

일반적인 전체 패키지 업데이트에는 sudo apt upgrade를 사용합니다. Ubuntu 18.04의 apt upgrade는 필요한 새 의존성을 추가할 수 있지만 기존 패키지를 제거하지 않습니다. 반면 기본 apt-get upgrade는 새 패키지 설치도 하지 않아 일부 업데이트를 보류할 수 있습니다.

sudo apt upgrade

sudo apt full-upgrade는 의존성 해결을 위해 기존 패키지를 제거할 수도 있습니다. 일반 업그레이드가 보류되었다는 이유만으로 곧바로 실행하지 말고, 먼저 설치·삭제 계획과 중요 서비스의 영향을 검토하세요. 이것은 Ubuntu 18.04를 다른 Ubuntu 버전으로 바꾸는 배포판 업그레이드 명령도 아닙니다.

업데이트가 남아 있다면 apt-mark showhold로 의도적으로 보류한 패키지도 확인합니다. 일부 패키지만 업데이트하거나 보안 업데이트로 범위를 좁히려면 특정 패키지·보안 업데이트만 적용하는 방법을 참고하세요. 완료 후 다시 apt list --upgradable을 확인하고, 실행 중인 서비스나 커널의 재시작 필요성은 별도로 판단합니다.

삭제와 불필요한 패키지·캐시 정리

삭제 방식은 남기려는 설정과 제거 범위에 따라 고릅니다. 다음 명령은 서로 다른 선택지이며, 모두 순서대로 실행해야 하는 절차가 아닙니다.

명령 제거 범위
apt remove tree 패키지를 제거하되 패키지에서 관리하는 설정 파일은 보통 남깁니다.
apt purge tree 패키지와 패키지에서 관리하는 설정 파일을 제거합니다. 사용자 홈의 파일까지 모두 삭제한다는 뜻은 아닙니다.
apt autoremove 자동 설치된 의존성 중 현재 더 이상 필요하지 않다고 판단된 패키지를 제거합니다.

예를 들어 tree를 제거하려면 먼저 모의 실행으로 함께 삭제될 대상을 확인하고 실제 삭제를 진행합니다. 표의 실제 변경 명령에는 아래 예시처럼 sudo를 붙입니다.

sudo apt-get --simulate remove tree
sudo apt remove tree

설정까지 제거하려면 필요성을 확인한 뒤 sudo apt purge tree를 선택합니다. 실수로 remove한 패키지는 sudo apt install tree로 재설치할 수 있지만, purge로 지운 사용자 지정 설정은 재설치만으로 복원되지 않을 수 있으므로 백업이 필요합니다.

의존성 정리도 먼저 목록을 확인합니다. 직접 사용 중인 도구나 운영에 필요한 패키지가 포함되어 있으면 진행하지 마세요.

sudo apt-get --simulate autoremove
sudo apt autoremove

자동 제거 대상으로 제안되더라도 계속 사용할 패키지는 sudo apt-mark manual PACKAGE로 수동 설치 표시를 할 수 있습니다. PACKAGE를 실제 패키지명으로 바꿔 사용하세요. 이 표시는 다른 의존성 문제까지 해결하는 기능은 아닙니다. 동작은 apt-mark 매뉴얼에서 확인할 수 있습니다.

설치된 프로그램은 유지하면서 내려받은 패키지 파일만 정리하려면 sudo apt clean을 사용합니다. sudo apt autoclean은 캐시 중 더 이상 내려받을 수 없는 패키지 파일을 정리합니다. 두 명령은 autoremove처럼 설치된 패키지를 삭제하는 명령이 아닙니다.

패키지 저장소 확인과 미러 변경

Ubuntu 18.04의 저장소는 보통 /etc/apt/sources.list와 /etc/apt/sources.list.d/의 개별 파일에서 설정합니다. 다운로드가 느리거나 특정 미러가 실패할 때는 먼저 오류에 나온 호스트와 실제 설정 위치를 확인하세요.

cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

미러 선택에는 Ubuntu 공식 패키지 저장소 미러 목록을 사용합니다. 설치 ISO용 CD 미러 목록과는 다릅니다. 가까운 지역뿐 아니라 동기화 상태와 해당 미러의 bionic 지원 여부를 확인해야 하며, 특정 미러가 항상 가장 빠르다고 단정할 수는 없습니다.

  1. 실제로 수정할 파일을 백업합니다. 아래 백업이 이미 있으면 다른 이름을 사용해 기존 파일을 보존합니다.
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.backup
  1. 기본 편집기로 파일을 열고 해당 Ubuntu 미러의 주소 부분만 바꿉니다. 개별 파일에 설정되어 있다면 그 파일을 백업하고 수정해야 합니다.
sudoedit /etc/apt/sources.list

다음은 한 줄의 구조 예시입니다. 이 한 줄로 파일 전체를 덮어쓰지 마세요. 미러를 바꾸더라도 배포판 코드명 bionic, bionic-updates 등의 구역과 main·universe 등 기존 구성 요소는 필요한 그대로 유지합니다. security·Ubuntu Pro·외부 저장소 주소까지 일괄 치환하지 않습니다.

deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
  1. 저장 후 목록을 다시 갱신하고 필요한 패키지의 설치 후보와 출처를 확인합니다. 오류가 남으면 설치나 업그레이드를 진행하지 않습니다.
sudo apt update
apt-cache policy tree

저장소 형식은 Ubuntu 18.04 sources.list 매뉴얼을 참고하세요. 저장소가 404를 반환한다고 bionic을 다른 Ubuntu 버전의 코드명으로 바꾸면 안 됩니다. 미러의 제공 범위와 현재 지원 경로를 먼저 확인해야 합니다.

오류가 발생했을 때와 되돌리는 방법

  • 패키지를 찾을 수 없음: 이름의 오타, apt update의 오류, 필요한 저장소 구역과 지원 아키텍처를 확인합니다. 설정된 저장소에 없는 패키지가 명령만으로 생기지는 않습니다.
  • 잠금 오류: 다른 apt·dpkg 작업이나 자동 업데이트가 실행 중인지 확인하고 정상 종료를 기다립니다. 잠금 파일을 먼저 지우거나 작업을 강제 종료하지 않습니다.
  • 서명·Release 파일 오류: 저장소 주소·배포판·키 설정과 서버 시간을 확인합니다. 인증 검사를 끄거나 신뢰 확인 없이 저장소를 추가하는 방식으로 해결하지 않습니다.

이전 패키지 작업이 실제로 중단되었고 다른 관리 작업이 실행 중이지 않을 때는 아래 순서로 미완료 설정과 의존성 문제를 점검할 수 있습니다. 첫 명령은 보류된 설정을 실제로 진행하므로 출력 내용을 확인하세요. 두 번째 명령은 복구 계획만 보여 줍니다.

sudo dpkg --configure -a
sudo apt-get --simulate --fix-broken install

계획에 예상하지 못한 중요 패키지 삭제가 없고 복구가 필요하다고 확인한 경우에만 sudo apt --fix-broken install을 실행합니다. 원인이 서로 다른 오류에 복구 명령을 반복 적용하지 마세요.

미러 변경만 되돌리려면 저장해 둔 설정 파일을 복원하고 패키지 목록을 다시 갱신합니다. 다른 파일을 수정했다면 해당 파일의 백업을 사용하세요.

sudo cp -a /etc/apt/sources.list.backup /etc/apt/sources.list
sudo apt update

이 복원은 저장소 설정만 되돌립니다. 이미 설치·삭제·업그레이드한 패키지나 서비스 데이터는 이전 상태로 복구하지 않습니다. 운영 서버의 패키지 변경을 되돌릴 필요가 있다면 별도로 준비한 설정·데이터 백업이나 스냅샷과 서비스별 복구 절차를 사용해야 합니다.