패키지·저장소·의존성
패키지 관리
패키지는 프로그램 파일과 버전·의존성·설치 정보를 묶은 배포 단위이며 저장소는 설치 후보와 메타데이터를 제공하는 공급 경로이다. 같은 설치 데이터베이스 도구와 · 같은 저장소 관리자는 맡은 계층이 다르다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 파일의 소유 패키지와 설치 버전을 추적한다.
- 필요한 의존성 조합을 계산하고 설치·갱신·제거를 수행한다.
- 배포판 저장소의 서명과 정책을 통해 공급 경로의 신뢰를 관리한다.
02어떤 순서로 동작하나
- 후보 조회
활성 저장소의 메타데이터에서 이름·버전·에 맞는 후보를 찾는다.
- 의존성 계산
요구·충돌·제외 조건을 풀어 함께 바꿀 패키지 집합을 결정한다.
- 검증과 설치
패키지를 받아 무결성·서명 조건을 검사하고 파일 및 설치 데이터베이스를 갱신한다.
- 실행 반영
설정 파일 처리 결과와 서비스 재시작 필요성을 확인한다. 이미 실행 중인 프로세스나 커널은 설치 파일 교체만으로 새 코드가 되지 않을 수 있다.
03먼저 알아둘 용어와 구성요소
- 패키지에는 프로그램 파일과 함께 이름·버전··의존성·설치 스크립트·설정 파일 정보 같은 메타데이터가 들어간다.
- 이나 는 로컬 패키지를 설치하고 설치 데이터베이스를 관리하는 기반 도구다.
- 와 는 를 조회하고 의존 관계를 해결하여 여러 패키지를 하나의 설치 계획으로 묶는다.
- 해결기는 요청한 패키지뿐 아니라 요구·충돌·제공 관계를 만족하는 조합을 찾는다. 최신 후보가 보인다는 사실과 그 후보를 현재 조합에 설치할 수 있다는 사실은 별개다.
- 동적 실행 파일은 가 필요한 를 찾은 뒤 실행을 이어 간다.
- python3 -m 는 그 python3에 연결된 를 사용한다는 의미다.
저장소의 모듈 목록과 실제 설치 버전 구별하기
사용 가능한 패키지 선택지, 설치 데이터베이스, 실행 파일 버전을 구분하여 버전 확인 결과를 해석한다.
실습 구성과 전제
- 의 모듈 목록과 의 -query는 서로 다른 시스템 사례다. 같은 서버에서 이어 실행한 결과가 아니다.
- 화면의 버전은 촬영 시점의 상태다. 현재 권장 버전이나 최신 버전 목록으로 읽지 않는다.
module list를 설치 목록으로 오해하지 않는다
- 의 모듈 목록에는 이름·스트림·프로필과 표시 기호가 나온다. 스트림은 배포판이 제공하는 패키지 계열의 선택지이며, 여러 줄이 모두 설치되어 있다는 뜻은 아니다.
- 기본값 표시 [d]와 활성화·설치 표시는 서로 다르다. 출력 하단의 기호 설명과 저장소 구성을 함께 읽어야 한다.
bashdnf module list php rpm -q php php --version모듈을 제공하는 계열 환경의 조회 예시다.
원본 크기로 보기 ↗- MariaDB·nginx·PHP 등 이름 아래에 여러 버전 스트림이 나열된다.
- 각 스트림에는 프로필과 [d] 같은 표시가 붙어 있어 단순 버전 문자열 이상의 상태를 담는다.
확인 기준사용 중인 버전을 확인하려면 설치 데이터베이스와 실행 파일을 추가 조회한다. 모듈을 제공하지 않는 배포판 버전에서는 같은 출력이 나오지 않을 수 있다.
설치 데이터베이스의 이름·버전을 읽는다
- -query -W는 계열 설치 데이터베이스에서 지정 패키지를 조회한다. 화면의 두 제품 버전은 이 시스템에 등록된 패키지 정보다.
- 패키지가 설치되었다고 서비스가 정상 실행 중인 것은 아니다. 설정 오류나 중지 상태는 서비스 조회로 별도 확인한다.
bashdpkg-query -W -f='${Package}\t${Version}\t${db:Status-Status}\n' nginx계열에서 버전과 설치 상태 필드를 함께 읽는 재구성 예시다.
원본 크기로 보기 ↗- dpkg-query -W 뒤에 elasticsearch와 kibana 두 패키지명이 지정되어 있다.
- 결과는 제품별 한 줄로 버전을 출력하며, 두 줄 모두 9.5.2가 보인다.
확인 기준조회 오류와 비어 있는 결과를 성공적인 미설치 확인과 혼동하지 않는다. 패키지명 및 명령 종료 상태도 함께 읽는다.
실행되는 파일의 출처까지 연결한다
- PATH에서 먼저 찾은 프로그램이 방금 조회한 패키지의 실행 파일인지 확인한다. 별도 설치한 버전이나 가상 환경이 앞에 있을 수 있다.
- 명령 경로를 찾은 뒤 -qf 또는 -query -S로 소유 패키지를 연결한다. 패키지 버전과 프로그램의 자체 버전 표기는 배포판 수정 번호 등으로 형태가 다를 수 있다.
bashcommand -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상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.