개념 사전 · 개념

패키지·저장소·의존성

패키지 관리

패키지는 프로그램 파일과 버전·의존성·설치 정보를 묶은 배포 단위이며 저장소는 설치 후보와 메타데이터를 제공하는 공급 경로이다. 같은 설치 데이터베이스 도구와 · 같은 저장소 관리자는 맡은 계층이 다르다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 파일의 소유 패키지와 설치 버전을 추적한다.
  • 필요한 의존성 조합을 계산하고 설치·갱신·제거를 수행한다.
  • 배포판 저장소의 서명과 정책을 통해 공급 경로의 신뢰를 관리한다.

02어떤 순서로 동작하나

  1. 후보 조회

    활성 저장소의 메타데이터에서 이름·버전·에 맞는 후보를 찾는다.

  2. 의존성 계산

    요구·충돌·제외 조건을 풀어 함께 바꿀 패키지 집합을 결정한다.

  3. 검증과 설치

    패키지를 받아 무결성·서명 조건을 검사하고 파일 및 설치 데이터베이스를 갱신한다.

  4. 실행 반영

    설정 파일 처리 결과와 서비스 재시작 필요성을 확인한다. 이미 실행 중인 프로세스나 커널은 설치 파일 교체만으로 새 코드가 되지 않을 수 있다.

03먼저 알아둘 용어와 구성요소

패키지에는 프로그램 파일과 함께 이름·버전··의존성·설치 스크립트·설정 파일 정보 같은 메타데이터가 들어간다.
이나 는 로컬 패키지를 설치하고 설치 데이터베이스를 관리하는 기반 도구다.
와 는 를 조회하고 의존 관계를 해결하여 여러 패키지를 하나의 설치 계획으로 묶는다.
해결기는 요청한 패키지뿐 아니라 요구·충돌·제공 관계를 만족하는 조합을 찾는다. 최신 후보가 보인다는 사실과 그 후보를 현재 조합에 설치할 수 있다는 사실은 별개다.
동적 실행 파일은 가 필요한 를 찾은 뒤 실행을 이어 간다.
python3 -m 는 그 python3에 연결된 를 사용한다는 의미다.
LEARN THROUGH PRACTICE

저장소의 모듈 목록과 실제 설치 버전 구별하기

사용 가능한 패키지 선택지, 설치 데이터베이스, 실행 파일 버전을 구분하여 버전 확인 결과를 해석한다.

실습 구성과 전제

  • 의 모듈 목록과 의 -query는 서로 다른 시스템 사례다. 같은 서버에서 이어 실행한 결과가 아니다.
  • 화면의 버전은 촬영 시점의 상태다. 현재 권장 버전이나 최신 버전 목록으로 읽지 않는다.
  1. module list를 설치 목록으로 오해하지 않는다

    • 의 모듈 목록에는 이름·스트림·프로필과 표시 기호가 나온다. 스트림은 배포판이 제공하는 패키지 계열의 선택지이며, 여러 줄이 모두 설치되어 있다는 뜻은 아니다.
    • 기본값 표시 [d]와 활성화·설치 표시는 서로 다르다. 출력 하단의 기호 설명과 저장소 구성을 함께 읽어야 한다.
    bash
    dnf module list php
    rpm -q php
    php --version

    모듈을 제공하는 계열 환경의 조회 예시다.

    5/26 - php, mariaDB · 실습·개념 참고 화면 4원본 크기로 보기 ↗
    • MariaDB·nginx·PHP 등 이름 아래에 여러 버전 스트림이 나열된다.
    • 각 스트림에는 프로필과 [d] 같은 표시가 붙어 있어 단순 버전 문자열 이상의 상태를 담는다.
    확인 기준

    사용 중인 버전을 확인하려면 설치 데이터베이스와 실행 파일을 추가 조회한다. 모듈을 제공하지 않는 배포판 버전에서는 같은 출력이 나오지 않을 수 있다.

  2. 설치 데이터베이스의 이름·버전을 읽는다

    • -query -W는 계열 설치 데이터베이스에서 지정 패키지를 조회한다. 화면의 두 제품 버전은 이 시스템에 등록된 패키지 정보다.
    • 패키지가 설치되었다고 서비스가 정상 실행 중인 것은 아니다. 설정 오류나 중지 상태는 서비스 조회로 별도 확인한다.
    bash
    dpkg-query -W -f='${Package}\t${Version}\t${db:Status-Status}\n' nginx

    계열에서 버전과 설치 상태 필드를 함께 읽는 재구성 예시다.

    9/1 - beat, nessus · 명령·상태 출력 1원본 크기로 보기 ↗
    • dpkg-query -W 뒤에 elasticsearch와 kibana 두 패키지명이 지정되어 있다.
    • 결과는 제품별 한 줄로 버전을 출력하며, 두 줄 모두 9.5.2가 보인다.
    확인 기준

    조회 오류와 비어 있는 결과를 성공적인 미설치 확인과 혼동하지 않는다. 패키지명 및 명령 종료 상태도 함께 읽는다.

  3. 실행되는 파일의 출처까지 연결한다

    • PATH에서 먼저 찾은 프로그램이 방금 조회한 패키지의 실행 파일인지 확인한다. 별도 설치한 버전이나 가상 환경이 앞에 있을 수 있다.
    • 명령 경로를 찾은 뒤 -qf 또는 -query -S로 소유 패키지를 연결한다. 패키지 버전과 프로그램의 자체 버전 표기는 배포판 수정 번호 등으로 형태가 다를 수 있다.
    bash
    command -v php
    readlink -f "$(command -v php)"
    # RPM 계열: rpm -qf /실제/실행파일
    # Debian 계열: dpkg-query -S /실제/실행파일

    경로를 먼저 확인한 다음 해당 배포판의 파일 소유 조회를 적용한다.

    확인 기준

    설치 버전과 실행 버전이 다르면 저장소를 바로 바꾸기보다 실제 경로·심볼릭 링크·가상 환경부터 확인한다.

실습에서 확인한 동작 원리

  • 저장소의 선택지, 설치 기록, 실행 중인 프로그램은 서로 다른 관찰 지점이다.
  • 목록의 버전 숫자만 비교하지 말고 스트림 표시·설치 상태·실행 경로를 함께 연결한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • check-update는 갱신 후보가 있으면 100을 반환할 수 있으므로 모든 0 이외 값을 실행 실패로 처리하는 자동화는 의미를 잘못 읽을 수 있다.
  • 패키지가 갱신돼도 이전 실행 파일을 참조하는 서비스는 재시작 전까지 예전 코드를 계속 실행할 수 있다.
  • 의 로 설치한 모듈과 배포판의 는 검색 경로와 관리 데이터베이스가 다르다. import 성공이 OS 패키지 소유권을 뜻하지 않는다.

05혼동하기 쉬운 점과 확인 기준

  • 먼저 type -a·command -v의 선택 결과로 별칭·가상환경·PATH 앞쪽 수동 설치를 구별한다. 패키지 관리자가 갱신한 파일과 실제 실행 파일이 다를 수 있다.
  • 패키지 업데이트의 설정 보존 정책에 따라 기존 수정본과 새 기본 설정이 따로 남을 수 있다. 실제 가 읽은 경로와 최종 적용값을 확인해야 한다.
  • 배포판은 수정 사항을 이전 upstream 버전에 backport할 수 있다. 버전 숫자만 비교하기보다 배포판 패키지 release·보안 공지와 적용 거래를 대조한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.