Ubuntu를 비롯한 Debian 계열 리눅스 배포판을 사용한다면, 설치 안내에서 APT 명령어를 사용하라고 하는 경우도 있고 dpkg를 사용하라고 하는 경우도 본 적이 있을 것입니다.
그렇다면 리눅스 시스템에 패키지를 설치할 때 어느 패키지 관리자를 사용하느냐가 정말 중요할까요? 두 도구의 차이점은 무엇일까요? 이번 글에서는 이러한 궁금증을 해결하고, Ubuntu에서 패키지를 가장 효율적으로 설치하는 방법까지 알아보겠습니다.
APT vs dpkg: 두 가지 핵심 패키지 설치 도구
APT와 dpkg는 모두 Ubuntu 및 기타 Debian 기반 시스템의 터미널에서 사용할 수 있는 명령줄 패키지 관리 인터페이스입니다. DEB 파일을 설치하거나 설치된 패키지 목록을 확인하는 등의 작업을 수행할 수 있습니다.
하지만 이렇게 비슷한 기능을 한다면, 굳이 APT와 dpkg 두 가지가 모두 필요한 이유가 무엇일까요?
사실 이 두 인터페이스는 함께 작동하며, APT는 dpkg를 활용해 완전한 패키지 관리 도구 역할을 수행합니다.
잘 이해되지 않으신다면? 핵심적인 차이점을 하나씩 살펴보겠습니다.
APT는 dpkg를 통해 패키지를 설치합니다
APT(또는 그 변형인 apt-get)가 패키지를 설치할 때, 실제로는 백엔드에서 dpkg를 사용해 작업을 처리합니다. 즉, dpkg는 APT의 더 친화적인 인터페이스 뒤에서 동작하는 '내부 도구' 역할을 하는 셈입니다.
APT는 패키지를 다운로드할 수 있습니다
APT를 사용하면 원격 저장소에서 파일을 가져오고 설치하는 과정을 단 한 번의 명령으로 처리할 수 있습니다. 덕분에 설치 전에 패키지를 일일이 찾아 다운로드하는 번거로움이 사라집니다.
반면 dpkg는 직접 다운로드해 둔 로컬 파일만 설치할 수 있습니다. 원격 저장소를 검색하거나 그곳에서 패키지를 가져오는 기능은 지원하지 않습니다.
dpkg는 의존성을 설치하지 않습니다
dpkg로 패키지를 설치하면 해당 패키지 자체만 설치됩니다. 하지만 일부 패키지는 정상적으로 작동하기 위해 '의존성(dependencies)'이라 불리는 추가 소프트웨어가 필요합니다. 이런 경우 dpkg는 오류 메시지로 경고할 수 있습니다.
반면 APT는 필요한 의존성을 자동으로 확인하고 가져와서, 설치하려는 프로그램이 올바르게 작동하도록 보장합니다. 그래서 dpkg로 패키지를 설치한 후에도, 누락된 의존성을 복구하는 APT의 특별 명령어를 실행하는 것을 권장합니다.
sudo apt install -fdpkg는 로컬 패키지만 조회합니다
시스템에 설치된 패키지 정보를 확인하고 싶다면, dpkg의 --list 옵션이 APT보다 유용할 수 있습니다. 원격 패키지를 찾거나 다운로드하지 못하는 것처럼, dpkg는 이 기기에 없는 패키지는 목록에 표시하지 않기 때문입니다.
dpkg --listAPT의 list 명령은 로컬 여부와 상관없이 알고 있는 모든 패키지를 표시합니다.
apt list설치된 패키지만 보고 싶다면 --installed 또는 -i 옵션을 함께 사용해야 합니다.
apt list --installeddpkg vs APT: 어떤 것을 선택해야 할까?
로컬 패키지를 설치하는 용도라면 dpkg를 아무 문제 없이 사용할 수 있습니다. 하지만 원격 소프트웨어 저장소에서 패키지를 자주 검색하고 설치한다면 APT 또는 apt-get을 사용하는 것이 훨씬 좋습니다.
APT는 원하는 패키지를 찾아 다운로드하는 작업을 대신 처리하고, 필요한 모든 의존성이 충족되는지도 확인해 줍니다. 물론 dpkg를 계속 사용할 수 있지만, APT가 동일한 기능을 수행하면서 소프트웨어가 의도대로 작동하도록 보장해 줍니다. 또한 APT는 패키지를 깔끔하게 제거하고 시스템에서 완전히 삭제하는 데에도 가장 적합한 도구입니다.