패키지 의존성
100%

패키지 · 레슨 4

패키지 의존성

패키지 메타데이터가 필요한 기능, 버전, 충돌 및 공유 라이브러리 관계를 표현하는 방법을 알아봅니다.

패키지 의존성은 한 패키지를 설치하거나 실행하려면 다른 패키지, 기능 또는 호환 버전이 필요하다는 사실을 나타냅니다. 저장소를 인식하는 패키지 관리자는 각 아카이브를 따로 처리하지 않고 이 메타데이터를 사용해 일관된 변경 집합을 계산합니다.

의존 관계

패키지 메타데이터는 단순한 필수 패키지 이름보다 다양한 관계를 표현할 수 있습니다. 배포판 형식에 따라 다음 관계가 포함될 수 있습니다.

  • 필수 의존성
  • 최소, 최대 또는 정확한 버전 제약
  • 여러 제공자 가운데 하나만 충족해도 되는 대안
  • 의미상 강제성이 더 약한 권장 또는 제안 항목
  • 충돌, 손상 또는 대체 관계
  • 둘 이상의 패키지가 제공하는 가상 기능

이 규칙을 바탕으로 의존성 해결기는 설정된 저장소, 아키텍처 및 설치 상태와 호환되는 패키지 버전 집합을 선택합니다. 해결 과정에는 업그레이드, 제거 또는 제공자 선택이 필요할 수 있으므로 승인하기 전에 제안된 트랜잭션을 검토하십시오.

저장소를 인식하는 의존성 해결기가 만들려는 것은 무엇입니까?

의존성으로서의 공유 라이브러리

공유 라이브러리에는 여러 프로그램이 실행 중에 매핑할 수 있는 컴파일된 코드가 들어 있습니다. 코드를 공유하면 중복 구현을 줄이고 배포판이 공통 라이브러리를 독립적으로 업데이트할 수 있지만, 프로그램에는 호환되는 애플리케이션 바이너리 인터페이스, 즉 ABI가 필요합니다.

ELF 기반 리눅스 시스템에서 실행 파일은 SONAME 같은 필수 라이브러리 이름을 기록할 수 있습니다. 프로그램이 시작될 때 동적 링커는 일치하는 설치 라이브러리를 찾습니다. 패키지 메타데이터는 보통 이 요구 사항을 호환 라이브러리를 제공하는 패키지 또는 기능에 대한 의존성으로 표현합니다.

공유 라이브러리란 무엇입니까?

버전과 ABI 호환성

이름이 비슷한 라이브러리 파일이 있다는 것만으로는 충분하지 않습니다. 필요한 ABI, 아키텍처, 심볼 및 경우에 따라 최소 버전까지 일치해야 합니다. 파일 이름이 맞아 보여도 배포판 라이브러리를 수동으로 교체하면 그 라이브러리에 의존하는 모든 프로그램이 손상될 수 있습니다.

패키지 유지 관리자는 라이브러리 관계를 인코딩하고 ABI가 변경될 때 전환 과정을 조정합니다. 네이티브 라이브러리는 패키지 관리자의 통제 아래 두십시오. 충돌하는 버전이 필요한 소프트웨어에는 지원되는 병렬 설치, 컨테이너, 환경 또는 빌드 메커니즘을 사용하십시오.

이름이 비슷한 라이브러리 파일이 있어도 프로그램이 실패할 수 있는 이유는 무엇입니까?

손상된 의존성 상태

저장소 혼용, 중단된 작업, 수동으로 설치한 아카이브, 고정된 버전, 제거된 파일 또는 호환되지 않는 서드파티 소프트웨어 때문에 의존성 문제가 생길 수 있습니다. 패키지 데이터베이스 파일을 삭제하거나 무작정 설치를 강제하는 방식으로 대응하지 마십시오.

먼저 패키지 관리자의 진단을 읽고, 신뢰하는 저장소 메타데이터만 갱신하며, 보류되거나 핀으로 고정된 버전을 확인한 뒤 제안된 복구 내용을 검토하십시오. 저수준 패키지 설치 도구는 모든 의존성을 가져오지 않고도 아카이브를 풀 수 있습니다. 일반적인 설치에서는 전체 트랜잭션의 의존성을 해결하는 고수준 저장소 도구가 대체로 더 안전합니다.

저수준 아카이브 도구로 로컬 패키지 하나를 설치할 때 흔한 한계는 무엇입니까?

레슨 완료

패키지 의존성 완료

이제 패키지 의존성 해결 방식이 어떻게 작동하는지 설명할 수 있습니다.

  • 필수, 대안, 버전 지정 및 충돌 관계를 식별합니다.

  • 공유 라이브러리 패키지를 런타임 ABI 요구 사항과 연결합니다.

  • 파일 이름보다 아키텍처와 인터페이스 호환성을 더 강한 증거로 봅니다.

  • 복구를 적용하기 전에 패키지 관리자의 전체 트랜잭션을 검토합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
패키지(으)로 돌아가기