[Unix] APT(Advanced Package Tool)란 무엇일까.

    Ubuntu Linux라는 OS를 처음 접하는 사용자가 가장 먼저 커맨드 쉘에 입력할 명령어가 있다면 바로 sudo apt update일 것이다.

    sudo는 'superuser do'라는 의미라는 것을 검색을 통해 금방 알 것이고, update도 당연히 무언가 갱신하겠거니 생각할 것이다.

    이 때, apt가 무엇인지에 대해 구글링 하다 보면 점차 알 수 없는 용어들이 나오고 너무 deep한 영역까지 들어가게 되어 탭을 닫아버리는데 이 apt에 대해 소개하려고 한다.

    APT란?

    APT는 Advanced Package Tool의 줄임말로, Unix 기반의 운영 체제(특히 Debian, Ubuntu 계열의 Linux 배포판)에서 강력하고 널리 사용되는 소프트웨어 패키지 관리 도구다.

    '리포지토리'라고도 부르는 저장소를 통해 소프트웨어 패키지의 검색, 구성, 설치 및 업그레이드를 자동화하여 소프트웨어 패키지 관리를 위한 각종 프로세스를 단순화 시켰다.

    굳이 몰라도 되는 APT의 역사

    APT의 탄생에는 간단한 역사가 있는데, OS 영역에서 동작하는 소프트웨어다 보니 탄생의 이유와 그 목적이 매우 명확하다.

    APT는 1998년 'Debian Project'에서 처음 개발되었으며, 당시 현역으로 사용되던 dpkg의 기능을 확장하고 사용자 친화적으로 개선하기 위함이었다.

    dpkg는 debian 기반 시스템에서 패키지를 관리하는 데 사용되었던 기본 도구로, 패키지 설치, 제거, 정보 조회 등의 기능을 제공하였지만 의존성 문제를 자동으로 해결하지 못했었고 이를 APT를 통해 보완하였다.

    이후 APT는 수년을 거쳐 계속해서 진화했으며 다양한 Linux 배포판과 Unix 기반 시스템에서 널리 채택되었다.

    저장소란?

    일반적으로 리포지토리(repository)라 부르며 단순히 '어떤 리소스가 존재하는 물리적/논리적 공간, 또는 그 주소'정도로 생각하면 된다.

    따라서 해당 글 주제에서 다루는 'apt 저장소'라고 하면 APT가 패키지를 다운로드하는 원격 서버의 위치를 의미한다.

    이 부분에서 초심자가 조금 헷갈리거나 이해하기 힘든 부분이 있는데 저장소가 4가지로 분류된다는 것이다.

    세부적인 설명은 밑에 적어 놓겠지만, 초심자는 '내가 시스템에 설치하고 사용하는 패키지(소프트웨어)가 어떤 저장소에 포함되는지' 정도만 인지하고 있으면 된다.

    굳이 몰라도 되는 APT의 4가지 저장소 카테고리

    1. main
      • 배포판 개발자가 유지 및 관리하는 공식 지원, 무료 및 오픈 소스 소프트웨어 패키지가 포함됨
      • 해당 저장소의 패키지는 안정적이고 메인 배포판과 호환된다고 볼 수 있음
    2. universe
      • 배포판 개발자가 공식적으로 지원하지는 않지만, 커뮤니티에서 유지 관리하는 무료 및 오픈 소스 소프트웨어 패키지가 포함됨
      • 해당 저장소의 패키지는 안정성이나 품질이 다를 수 있음
      • 해당 저장소의 패키지를 사용하는 사용자는 main 저장소와 동일한 수준의 지원이나 업데이트를 받지 못할 수 있음을 인지해야 함
    3. multiverse
      • 배포판 개발자가 공식적으로 지원하지 않는 저장소
      • 해당 저장소의 패키지는 독점 소프트웨어(유료) 또는 제한적인 라이선스가 적용되었을 수 있음
      • 해당 저장소의 패키지를 사용하는 사용자는 라이선스 및 요구 사항을 준수할 책임이 있음
    4. restricted
      • 라이선스 또는 배포 제한이 있지만 배포판 개발자가 공식적으로 지원하는 소프트웨어 패키지가 포함되어 있음
      • 해당 저장소의 패키지에는 독점 드라이버, 펌웨어, 또는 특정 H/W나 S/W 구성 요소의 적절한 기능에 필요한 기타 소프트웨어가 포함될 수 있음

    굳이 몰라도 되는 반드시 인지하고 사용해야 하는 APT의 저장소 사용 시 체크 리스트

    1. Official Support
      • Main, Restricted 저장소에는 배포판 개발자가 공식적으로 지원하는 패키지가 포함되어 있음
      • Universe, Multiverse 저장소의 패키지는 공식적으로 지원되지 않으며 정기적인 업데이트나 보안 패치 대상이 아닐 수 있음
    2. License
      • Main, Restricted 저장소에는 무료 및 오픈 소스 소프트웨어가 포함되어 있음
      • Universe, Multiverse 저장소에는 라이선스 제한, 독점 소프트웨어가 있는 패키지가 포함되어 있음
    3. Compatibility & Stability
      • Main 저장소의 패키지는 일반적으로 배포판과의 안정성 및 호환성 수준이 높음
      • 나머지 저장소의 패키지는 다양한 수준의 안정성 및 호환성을 가지고 있음
    4. Security
      • Main, Restricted 저장소는 일반적으로 적절한 보안 업데이트를 보장함
      • Universe, Multiverse 저장소는 적절한 보안 업데이트를 보장받지 못할 수 있음
    5. Package Management
      • (카테고리 구분 없이)사용자는 정기적으로 패키지 목록을 업데이트(apt update)하고 설치된 패키지를 업그레이드(apt upgrade)하여 버전을 최신으로 관리하고 적절한 수준의 보안 패치를 받았는지 확인해야 함
      • (카테고리 구분 없이)확인되지 않은 개발자나 회사의 저장소 또는 패키지를 추가할 때 주의해야 함

    주요 명령어

    자주 사용되는 apt 명령어가 있다.

    1. apt install

    새로운 패키지(의존성 포함)를 설치함.

    # syntax
    apt install [PACKAGE]
    # example
    apt install vim

    2. apt udpate

    모든 저장소로부터 패키지 정보를 가져오고 로컬의 패키지 인덱스를 업데이트함.

    # syntax
    apt update
    # example
    apt update

    3. apt upgrade

    주로 apt update 명령어와 함께 사용되며 로컬의 패키지 인덱스를 저장소와 비교해 버전이 뒤쳐진 패키지들을 업그레이드함.

    # syntax
    apt upgrade [PACKAGE]
    # example
    sudo apt update
    sudo apt upgrade

    4. apt purge

    지정된 패키지 및 관련 구성 파일(의존성 포함) 모두를 제거함.

    # syntax
    apt purge [PACKAGE]
    # example
    sudo apt purge vim

    5. apt remove

    지정된 패키지를 제거하지만, 관련 구성 파일(의존성 포함)은 그대로 유지함.

    # syntax
    apt remove [package]
    # example
    apt remove git

    [기타 자주 사용하지는 않지만 알아두면 괜찮은 명령어]

    • apt search [PACAKGE] : 패키지 인덱스에서 지정된 패키지 이름과 일치하는 패키지를 검색
    • apt show [PACKAGE] : 패키지 설명, 버전, 종속성 등과 같은 세부 정보 표시
    • apt list --installed : 시스템에 설치된 모든 패키지를 나열

    apt와 apt-get의 차이

    주된 내용은 아닌데, 내가 처음 Ubuntu를 배울 때 많이 햇갈렸던 부분이다.

    당시 배포판의 메인 버전이 14.04에서 16.04로 넘어가던 시기였고 내가 구글링하거나 참조할 자료들에서 apt 말고 apt-get이라는 명령어를 사용했었다.

    당연히 생초보인 나에게는 두 명령어가 다른 명령어로 보였는데 따로 정리해뒀던 메모를 붙인다.

    일단 aptapt-get의 후속작이라고 보면 된다.

    즉, apt-get을 잘 알고 있는것이 아니라면 그냥 apt를 사용해도 된다는 뜻이다.

    후속작이기 때문에 당연히 전작인 apt-get에 비해 apt는 무언가가 개선되었다는 것이며 여기서는 효율성사용자 친화성이 해당된다.

    다만, apt-get의 장점으로는 상대적으로 고급 기능을 사용할 수 있다는 정도만 알아두면 될 것 같다.

    댓글

    Designed by JB FACTORY