우분투에서 패키지(프로그램)를 설치하는 데 가장 많이 사용되는 명령은 dpkg와 apt(또는 apt-get)입니다. apt가 나오기 이전에는 주로 dpkgDebian Package가 사용되었으나, apt는 dpkg의 개념과 기능을 포함하므로 최신 버전 우분투에서는 대부분 apt를 사용합니다. 그러나 apt가 별도로 존재한다기보다 dpkg를 포함한 확장 개념에 가까우므로 먼저 dpkg의 개념을 익히면 좋습니다.
초창기 리눅스는 새로운 프로그램을 설치하는 것이 꽤 어려웠기 때문에 초보자에게는 프로그램을 설치하는 것조차 하나의 난제였습니다. 이러한 점을 개선하여 데비안Debian 리눅스에서 Windows의 setup.exe와 비슷하게 프로그램을 설치한 후 바로 실행할 수 있는 설치 파일을 제작했습니다. 설치 파일의 확장명은 *.deb이며 이를 ‘패키지Package’라고 부릅니다.
예전 리눅스의 프로그램 설치보다 획기적으로 편리해졌지만 dpkg 명령어 역시 단점이 있습니다. 가장 큰 문제점은 ‘의존성’입니다. 간단한 예로 우분투의 기본 웹 브라우저인 Firefox는 당연히 X 윈도우상에서 가동됩니다. 그런데, X 윈도우가 설치되지 않은 상태에서 Firefox를 설치하면, Firefox는 X 윈도우에 의존성이 있으므로 설치되지 않습니다. 이러한 단점을 해결한 것이 apt 명령어입니다.
dpkg 명령이 분명히 유용하지만 의존성 문제로 인해 불편한 점이 발생합니다. 이를 해결하기 위해 제공하는 것이 apt (또는 apt-get) 명령어입니다. apt는 dpkg와 별도라기보다 *.deb 패키지를 설치하는 편리한 도구라고 생각하면 됩니다.
apt 명령어는 dpkg 명령어의 패키지 의존성 문제를 완전하게 해결해 줍니다. 즉, 특정 패키지를 설치하고자 할 때 의존성이 있는 다른 패키지를 자동으로 먼저 설치해 주는 편리한 명령어죠. 또 dpkg 명령어는 설치하려는 *.deb 파일이 DVD에 있거나 인터넷에서 미리 다운로드한 후 설치해야 합니다.
하지만 apt는 우분투가 제공하는 deb 파일 저장소Repository에서 설치할 deb 파일은 물론, 해당 파일과 의존성이 있는 다른 deb 파일까지 인터넷을 통해 모두 알아서 다운로드한 후 자동으로 설치해줍니다. 그러므로 사용자는 deb 패키지 설치 시 더이상 의존성 문제를 고민하지 않아도 됩니다.
단, ‘인터넷을 통해’ 다운로드한 후 설치해야 하므로 당연히 인터넷에 정상적으로 연결된 상태여야 합니다. 그럼 ‘저장소Repository의 URL은 어떻게 알 수 있는가?’라는 문제가 있을텐데요. 이 저장소의 URL은 /etc/apt/sources.list.d/ubuntu.sources 파일에 저장되어 있습니다.
apt의 기본 사용법은 무척 간단하며 대개는 이 기본 사용법만 알아도 충분합니다.
apt install 패키지명 명령은 패키지를 다운로드한 후, 사용자에게 설치 여부를 묻는 부분이 나옵니다. 여기서 -y 옵션을 쓰면 사용자에게 yes/no를 묻는 부분에서 무조건 yes를 입력한 것으로 간주하고 자동으로 넘어가서 편리하답니다.
apt -y install 패키지이름
/etc/apt/sources.list 파일의 내용이 수정되면 이 명령으로 다운로드 받을 패키지 목록을 업데이트해야 합니다.
apt update
기존 설치된 패키지를 제거합니다.
apt remove 패키지이름
기존 설치된 패키지를 설정 파일을 포함해 완전히 제거합니다.
apt purge 패키지이름
사용하지 않는 패키지를 모두 제거합니다.
apt autoremove
설치할 때 내려받기한 파일 및 과거의 파일을 제거합니다.
apt clean 또는 apt autoclean
apt-cache 패키지를 설치하기 전에 패키지에 대한 정보나 의존성 문제를 미리 확인해 볼 수 있습니다.
패키지의 정보를 화면에 출력합니다.
apt-cache show 패키지이름
패키지에 대한 의존성 정보를 출력합니다.
apt-cache depends 패키지이름
이 패키지에 의존하는 다른 패키지의 목록을 보여 줍니다.
apt-cache rdepends 패키지이름
apt 명령어와 관련된 설정 파일은 /etc/apt/sources.list.d/ 디렉터리에 들어 있습니다. 다른 파일들은 특별히 신경 쓸 필요가 없으며 중요한 것은 ubuntu.sources 파일입니다. 이 파일에는 apt 명령을 실행했을 때 인터넷에서 해당 패키지 파일을 검색하는 네트워크의 주소가 들어 있기 때문이죠.
galculator 패키지를 설치한다고 가정하고 위 그림의 흐름도를 살펴보겠습니다. 먼저 ①에서 apt install galculator 패키지 설치 명령을 입력하면 ②에서 자동으로 /etc/apt/sources.list.d/ 디렉터리 중 핵심 파일인 ubuntu.sources 파일을 확인합니다.
이 파일에는 ‘Ubuntu 24.04 LTS 패키지’ 저장소의 인터넷 주소가 적혀 있습니다. 그리고 ③, ④와 같이 설치할 패키지 관련 목록을 요청하고 다운로드합니다. 여기서 주의할 점은 실제 패키지 파일을 다운로드하는 것이 아니며 패키지의 이름만 가져온다는 것입니다.
그리고 다운로드한 패키지 목록 파일을 근거로 사용자가 요청한 galculator 패키지와 의존성이 있는 패키지 목록을 아래 그림과 같이 화면에 출력합니다. ⑥에서 사용자가 패키지 목록을 확인하고 설치할 의향이 있다면 y를 입력해 실제 패키지 다운로드를 요청하고 ⑦에서 해당 패키지 파일(deb파일)을 다운로드하여 자동으로 설치합니다.
이러한 흐름에서 우리는 apt 명령어와 y만 입력하면 되고 나머지는 모두 자동으로 처리됩니다. 또 apt -y install galculator 명령을 실행하면 ②~⑦까지 모두 한 번에 처리됩니다.
‘‘apt install 패키지명’명령을 입력하면 작동하는 순서’ 그림의 ‘우분투 패키지 저장소’에는 main, universe, multiverse, restricted 네 가지가 있는데 그 의미는 다음과 같습니다.
그러므로 완전한 무료 소프트웨어를 사용하려면 main 저장소와 universe 저장소의 제품만 사용해야 하며, 우분투에서 지원하는 소프트웨어를 사용하려면 main 저장소와 restricted 저장소의 제품을 사용해야 합니다.
이제 ubuntu.sources 파일이 어떻게 구성되었는지 살펴볼까요? 먼저 /etc/apt/sources.list.d/ubuntu.sources 파일을 gedit으로 열어 보면 다음 그림과 같습니다.
1행의 Types는 설치될 패키지의 형식인 deb 파일을 기본적으로 사용하며, 2행의 URIs는 ‘우분투 패키지 저장소’인 http://kr.archive.ubuntu.com/ubuntu/를 지정합니다. 필요하다면 변경할 수 있지만 굳이 그럴 필요는 없습니다.
3행의 Suites 부분은 우분투 24.04 LTS를 의미하는 nobel로 되어 있는데, 이는 우분투 24.04 LTS가 출시된 시점의 패키지만 사용하겠다는 의미입니다. 그 이후 버전이 올라간 업그레이드된 패키지를 설치하고 싶다면 이어서 noble-updates 및 noble-backports를 추가로 써 주면 됩니다. 그 이후에는 현재 시점에서 가장 최신 버전으로 업데이트된 패키지가 설치됩니다.
4행의 Components는 ‘저장소 종류’가 지정되어 있습니다. 앞에서 설명한 것처럼 필요하다면 저장소 중 원하는 것만 남기고 다른 것은 지워도 됩니다. 만약 완전한 무료(Free) 제품만 사용하고 싶다면 main과 universe 부분만 남기고 나머지는 지웁니다. 또, 우분투에서 지원하는 소프트웨어만 사용하고 싶다면 main과 restricted만 남기고 나머지를 지우면 됩니다.
5행의 Signed-By는 다운로드한 패키지의 이상 유무를 체크하기 위한 파일 경로인데 변경하지 않고 그대로 두면 됩니다. 7~11행도 같은 내용이며 보안과 관련된 패키지에 해당합니다.
현재는 위에 써 있는 ubuntu.sources 파일을 특별히 변경하지 않아도 별 문제가 없습니다. 하지만 시간이 지나서 우분투 저장소의 URL이 변경되면 apt 명령어가 작동하지 않을 수 있습니다. 그럴 때는 https://launchpad.net/ubuntu/+cdmirrors에서 다른 미러 사이트의 URL을 알아낸 후 ubuntu.sources 파일의 2행 및 8행에 있는 URL을 변경해서 사용하면 됩니다.
위 컨텐츠는 『이것이 우분투 리눅스다(3판)』의 내용을 재구성하여 작성되었습니다.
최신 콘텐츠