우분투 apt-get / apt-cache

우분투의 apt-get명령어와 apt-cache명령어의 사용법을 apt명령어가 점점 활성화되고 있는 이 시점에서 과연 이 글을 쓰는 것이 맞을까?라는 생각을 잠시 하기도 했습니다.

 

하지만 apt명령어가 탑재되지 않은 구 버전 우분투 사용자나 apt명령어보다는 apt-get이나 apt-cache 명령어를 좀 더 선호하는 사용자에게 유용한 정보가 되었으면 하는 바람에서 이 글을 작성해봅니다.

 

 

우분투 apt (Advanced Packaging Tool)

apt-get

패키지 데이터베이스 업데이트

apt-get은 기본적으로 패키지 데이터베이스를 사용합니다. 이 패키지 데이터베이스 정보를 바탕으로 시스템에서 사용 가능한 최신 버전의 패키지가 있는지 확인을 하게 됩니다. 패키지 데이터베이스를 업데이트하는 명령어입니다.

 

업데이트를 진행하면 진행되는 패키지마다 Hit, Get, Ign의 머리말을 확인할 수 있습니다.

 

- Hit : 패키지 버전 정보의 변화가 없습니다.

 

- Ign : 설치된 패키지가 이미 최신 버전 이거나 기타 사유로 인하여 해당 패키지를 무시합니다.

 

- Get : 설치된 패키지보다 새로운 버전의 패키지가 있음을 나타냅니다.

 

sudo apt-get update

 

패키지 업그레이드

패키지 데이터베이스를 업데이트하였다면 이제 우분투에 설치되어 있는 패키지를 최신 버전으로 업그레이드할 수 있습니다. 다음 명령어를 수행하면 패키지 데이터베이스 정보를 기준으로 우분투에 설치된 전체 패키지를 업그레이드합니다.

 

sudo apt-get upgrade

 

또는 특정 패키지만 업그레이드할 수 있습니다.

 

sudo apt-get upgrade <패키지 명>

 

추천하는 방법은 아니지만 아래 명령어로도 패키지 전체를 업그레이드할 수도 있습니다.

 

sudo apt-get dist-upgrade

 

dist-upgrade는 업그레이드 기능을 수행하기도 하지만 새로운 버전의 패키지를 반영할 때 종속성을 확인합니다. 얼핏 보면 스마트한 명령어라는 생각이 들 수도 있겠지만 dist-upgrade는 일부 패키지를 제거할 수도 있는 위험성을 가지고 있습니다. 때문에 업그레이드 이후 사이드 이팩트가 생길 가능성이 매우 큰 명령어 이므로 되도록 사용 안 하는 것이 좋습니다.

 

업데이트와 업그레이드를 한 번에

우분투를 최신 패키지 버전으로 유지하기 위해 upgrade를 하기 위해서는 update가 우선 적용되어야 합니다. 매번 update명령어를 수행하고 기다렸다가 upgrade를 수행하는 것이 조금 불편할 수도 있습니다. 그래서 업데이트와 업그레이드를 한 번에 해결할 명령어를 알려 드리겠습니다.

 

sudo apt-get update && sudo apt-get upgrade -y

 

이렇게 명령어를 만드신다면 한 번에 패키지 업데이트와 업그레이드를 진행할 수 있을뿐더러 cron에 이 명령어를 등록하여 특정 시점에 우분투 패키지를 업데이트와 업그레이드를 편리하게 할 수 있습니다.

 

패키지 설치

다음 명령어를 사용하여 패키지를 설치할 수 있습니다. 만약 설치하고자 하는 패키지가 이미 설치되어 있는 경우라면 apt-get은 패키지 데이터베이스의 정보를 바탕으로 최신 패키지로 업그레이드할 것입니다.

 

sudo apt-get install <패키지 명>

 

패키지 설치하는 데 있어 조금의 팁을 드리자면 명령어를 입력하고 패키지 명을 입력하는데 뒤의 패키지 명이 기억나지 않을 때 우분투의 자동완성 기능(더블 탭)을 사용하시면 우분투에서 입력할 수 있는 패키지 명 리스트를 보여줍니다.

 

단, 패키지 명을 아무것도 입력하지 않고 자동완성을 하게 되면 설치할 수 있는 패키지가 모두 출력되어 원하는 결과를 얻을 수 없습니다. 때문에 설치하고자 하는 패키지 명의 일부라도 입력하고 자동완성을 해야 원하는 결과 값을 얻을 수 있습니다.

 

간혹 특정 버전을 선택하여 패키지를 선택해야 하는 경우가 있습니다. 다음 명령어와 같이 특정 버전을 명시하여 설치할 수 있습니다.

 

sudo apt-get install <패키지 명>=<버전>

 

패키지 여러 개 설치하기

패키지 명을 여러 개 나열하여 하나의 명령어로 설치할 수 있습니다.

 

sudo apt-get install <패키지 명 1> <패키지 명 2>...

 

업그레이드를 하지 않고 패키지 설치하기

일반적인 상황에서 이 옵션을 사용하지는 않을 것입니다. 패키지를 설치하는데 버전에 상관없이 이미 설치되어 있다면 설치된 버전으로 유지하고자 한다면 --no-upgrade 옵션을 사용하면 됩니다.

 

sudo apt-get install <패키지 명> --no-upgrade

 

패키지 설치하지 않고 업그레이드만 하기

해당 패키지가 설치되어 있는 경우에만 업그레이드를 진행합니다. 만약 업그레이드를 하려는 패키지가 설치되어 있지 않을 경우 설치하지 않습니다.

sudo apt-get install <패키지 명> --only-upgrade

 

패키지 삭제하기

패키지 삭제는 다음의 명령어와 같이 삭제할 수 있습니다.

 

sudo apt-get remove <패키지 명>

 

remove로 패키지를 삭제하게 되면 설정 파일은 삭제를 하지 않습니다. 만약 구성 파일까지 완전히 지우기 위해서는 purge를 사용합니다.

 

sudo apt-get purge <패키지 명>

 

특정 패키지를 설치하고 실행하기 위해 종속성을 조건을 충족하기 위해 자동으로 관련 패키지들이 설치될 경우가 있습니다. 하지만 삭제 시에는 이런 종속성을 따지지 않고 해당 패키지만을 삭제합니다. 때문에 종속성 때문에 설치한 패키지이지만 더 이상 사용되지 않은 패키지가 존재할 수 있습니다. 이럴 때 사용되지 않은 패키지를 전부 삭제할 때 유용한 명령어가 있습니다.

 

sudo apt-get autoremove

 

다운로드 한 아카이브 정리하기

패키지 설치를 진행하다 보면 패키지 아카이브 파일을 다운로드하게 됩니다. 정상적으로 패키지가 설치가 되었다면 이 아카이브 파일은 더 이상 사용하지 않습니다. 이러한 아카이브 파일을 삭제하기 위해 다음과 같은 명령어를 사용합니다.

sudo apt-get clean

 

clean은 /var/cache/archives/ 경로에서 잠긴 파일을 제외한 모든 파일을 삭제합니다. 하지만 최신 버전의 아카이브만을 남겨두고 나머지 아카이브만을 삭제하고 싶은 순간이 올 수도 있습니다. 그 순간이 다가오면 다음과 같이 명령어를 수행합니다.

 

sudo apt-get autoclean

 

 

 

 

apt-cache

패키지 검색

아래와 같이 명령어를 수행하면 패키지 명이나 설명에 검색어가 포함되어 있는 패키지를 찾아 줍니다.

 

apt-cache search <검색어>

 

만약 패키지 명을 알고 있다면 아래와 같이 패키지를 검색할 수 있습니다. 이는 패키지 명이 검색어로 시작되는 패키지만을 찾아 줍니다.

 

apt-cache pkgnames <검색어>

 

패키지 의존성 확인

설치된 패키지의 의존성을 다음 명령어로 확인할 수 있습니다.

 

apt-cache depends <패키지 명>

 

혹은 반대로 패키지 명을 사용하는 패키지를 찾는 역 의존성 정보도 다음 명령어로 확인할 수 있습니다.

 

apt-cache rdepends <패키지 명>

 

패키지 정보 확인

정확한 패키지 명을 알고 있다면 아래 명령어로 해당 패키지의 정보를 확인할 수 있습니다.

 

apt-cache showpkg <패키지 명 1> <패키지 명 2>...

 

또는 아래와 같은 명령어로도 패키지 정보를 확인할 수 있습니다. 이 명령어는 dpkg --print-avail와 비슷한 정보를 출력해 줍니다.

 

apt-cache show <패키지 명>

 

MORE