[Ubuntu] apt 명령어 | apt-get 명령어 사용법과 차이점
Red Hat 계열 리눅스에서는 패키지 관리를 위해 dnf 명령어를 사용하며, Debian 계열에서는 apt 명령어를 사용합니다.
Ubuntu와 같은 Debian 기반 배포판에서는 두 명령어가 모두 사용 가능하지만, 목적과 사용 방식에 따라 약간의 차이가 있습니다.
이 글에서는 apt와 apt-get의 차이를 간단히 비교하고, apt 명령어에서 자주 사용하는 명령어 예제를 함께 정리해보겠습니다.
✅ apt & apt-get 명령어 차이점
apt-get은 “Advanced Package Tool – get”의 줄임말입니다. Debian과 그 파생 배포판에서 패키지를 설치, 업데이트, 삭제하는 명령어로 1998년부터 사용되어 왔습니다.
apt와 apt-get는 사용하는 명령어 옵션도 동일하고 기존 사용하는 방식도 비슷하지만, apt가 좀 더 사용자 친화적으로 개선된 인터페이스를 제공합니다.
Ubuntu 14.04~16.04 시기, apt-get과 apt-cache 같은 명령어가 분리되어 있어 초보자에게 혼란이 있었습니다. 따라서, 개발자들은 사용자 편의성을 높이고, 자주 쓰이는 명령어들을 통합하여 더 간단하고 깔끔한 명령어 인터페이스를 만들고자 했습니다.
그래서 2014년 경부터 apt 명령어가 개발되어 Ubuntu 16.04부터 공식적으로 도입되었습니다.
항목 36456_beb645-a4> |
apt 36456_65583d-26> |
apt-get 36456_5fa84b-e7> |
---|---|---|
도입 시기 36456_82fa25-33> |
Ubuntu 16.04부터 도입(2016년 4월) 36456_d415df-ed> |
1998년부터 사용 36456_2204e6-3e> |
사용자 대상 36456_0f8990-ba> |
일반 사용자 중심 36456_83f87f-8d> |
고급 사용자 및 스크립트용 36456_909123-c3> |
기능 36456_4aebbb-55> |
apt-get과 apt-cache 기능 통합 36456_08330b-5d> |
명령어별 분리 (apt-get, apt-cache) 36456_4b19d0-43> |
출력 형식 36456_e2d5fd-a7> |
깔끔하고 직관적 36456_839291-b4> |
단순하고 상세 36456_08616d-d2> |
일반 사용자용으로 apt 명령어만으로 충분하지만 apt-get을 사용하는 이유는 고급 사용자가 최소 패키지를 설치해야 한다거나 더 많은 디버깅 정보가 필요할 경우와 셸 스크립트를 써야 하는 등의 이유가 있습니다.
✅ apt 명령어
🔲 패키지 설치
apt install <패키지명>
🔲 패키지 인덱스 업데이트
apt update
APT는 패키지를 설치하거나 업그레이드할 때, 리포지토리(저장소)에 있는 최신 패키지 정보를 참고합니다. 이 정보를 담고 있는 것이 패키지 인덱스입니다. apt update 명령은 이 패키지 인덱스를 갱신합니다.
실제 패키지의 설치 및 업그레이드는 이루어지지 않습니다.
🔲 패키지 업그레이드
apt upgrade
미 설치된 패키지를 최신 상태로 업데이트하지만, 새로운 패키지 설치나 제거는 진행되지 않습니다. 운영 중인 서버에서 실행 시 의존 패키지가 자동으로 실행되어 기존 설치된 패키지의 호환성 문제로 충돌이 발생할 수 있습니다.
apache, nginx, php, mysql 등의 기존 운영 중인 패키지가 재시작 되면서 예상치 못한 문제가 발생할 수 있습니다. 예를 들어 apache의 .conf 파일(apache2.conf, 000-default.conf)이 강제로 덮어쓰기가 되어 apache 실행 오류가 발생할 수 있습니다.
upgrade 명령은 특정 패키지의 업그레이드가 꼭 필요할 때 신중하게 실행해야 합니다.
🔲 update 및 upgrade 비교
구분 36456_d121e4-3d> |
apt update |
apt upgrade 36456_949c35-d9> |
---|---|---|
목적 36456_5fa5da-bb> |
패키지 인덱스(저장소의 최신 패키지 정보) 갱신 36456_f98614-2e> |
이미 설치된 패키지 최신 버전으로 업그레이드 36456_3b0184-e4> |
실제 패키지 변경 36456_921d9f-7b> |
없음 (목록만 갱신) 36456_534cc8-44> |
있음 (설치된 패키지 버전 업그레이드) 36456_9f46e6-f4> |
새로운 패키지 설치 36456_206954-05> |
없음 36456_f47711-55> |
없음 (새 패키지 설치 및 제거는 하지 않음) 36456_c7cb56-7c> |
의존성 처리 36456_126f0b-e4> |
없음 36456_d36a7e-39> |
의존성 패키지도 함께 업그레이드되며, 충돌 가능성 있음 36456_0c39c1-6f> |
운영 중 서버 영향 36456_24c67e-d5> |
없음 (안전하게 실행 가능) 36456_edf377-33> |
서비스(예: apache, nginx, php, mysql) 재시작 가능 36456_5bd9d5-dd> |
위험 요소 36456_328261-f4> |
없음 36456_5d8c13-3a> |
설정 파일 덮어쓰기, 호환성 문제, 서비스 오류 가능 36456_eb8775-97> |
설정 파일 영향 36456_65e8b6-0e> |
없음 36456_63f305-61> |
패키지 업데이트 시 apache 설정 파일 등이 덮어써질 수 있음 36456_810915-74> |
권장 실행 시점 36456_a25a50-56> |
수시, 운영 중에도 안전 |
유지보수 시간 또는 백업 후 실행 권장 36456_8649ac-a3> |
🔲 패키지 삭제
apt remove <패키지명>
레드헷 계열에서 dnf remove를 사용하면 의존성 패키지가 함께 삭제됩니다. apt remove 명령어는 기본적으로 지정한 패키지만 삭제하고, 그 패키지에 의존하는 다른 패키지는 삭제하지 않습니다.
예를 들어 apache2를 의존성 패키지를 함께 삭제할 경우
apt remove apache2
apt autoremove
apt autoremove 명령어를 함께 사용함으로써 남아 있는 폴더 및 .conf 파일 등의 설정과 사용하지 않는 고아 패키지를 삭제 해 줍니다.
서버 환경을 고려 해 어떠 패키지를 삭제할 지 미리 테스트를 해 볼 수 있습니다.
Ubuntu ~]# apt autoremove --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Ubuntu ~]#
to remove 항목에서 미리 확인 후 작업을 진행할 수 있습니다.(테스트 서버에서 apache2 삭제 후 apt autoremove –dry-run 진행하였으나 제거해야 할 대상은 0으로 나와 실제 작업 시 apt autoremove로 완전 삭제를 진행함)