logo

리눅스 패키지 관리자

소개

패키지 관리 시스템 또는 패키지 관리자 소프트웨어 도구 그룹입니다. 컴퓨터 운영 체제에 대한 컴퓨터 프로그램의 설치 프로세스, 업그레이드 프로세스, 구성 프로세스 및 제거 프로세스를 효율적인 방식으로 자동화합니다. ㅏ 패키지 관리자 패키지, 아카이브 파일 내의 데이터 및 소프트웨어 배포와 함께 작동합니다.

패키지에는 다음과 같은 메타데이터가 포함됩니다. 소프트웨어 이름, 목적 설명, 체크섬 (암호화 해시 함수가 바람직함), d 의존성 목록, 공급업체, 그리고 버전 번호 소프트웨어가 제대로 실행되기 위해서는 필수적입니다.

  • 메타데이터는 설치 시 로컬 패키지의 데이터베이스 내부에 저장됩니다.
  • 일반적으로 패키지 관리자는 필수 구성 요소 누락 및 소프트웨어 불일치를 방지하기 위해 버전 정보 및 소프트웨어 종속성의 데이터베이스를 관리합니다.
  • 앱 스토어, 바이너리 저장소 관리자 및 소프트웨어 저장소와 긴밀하게 작동합니다.
  • 패키지 관리자는 수동 업데이트 및 설치 요구 사항을 없애기 위해 개발되었습니다.
  • 특히, 일반적으로 수백 개 이상의 다양한 소프트웨어 패키지를 결합하는 OS를 사용하는 대규모 조직에 도움이 될 수 있습니다.

패키지 관리자의 기능

소프트웨어 패키지는 다음과 같이 정의될 수 있습니다. 아카이브 파일 개발을 위해 컴퓨터 프로그램과 필수 메타데이터를 결합합니다. 시스템 프로그램은 먼저 빌드하고 컴파일해야 하는 소스 코드 내에 있을 수 있습니다.

패키지 메타데이터에는 패키지 버전, 패키지 설명, 종속성(미리 설치해야 하는 패키지)이 포함됩니다. 많은 패키지 관리자는 사용자 명령에 따라 소프트웨어 패키지를 설치, 제거, 유지 관리 또는 찾는 작업을 담당합니다.

그만큼 패키지 관리 시스템 몇 가지 전형적인 내용이 포함되어 있습니다 기능 아래에 언급된 내용은 다음과 같습니다.

  • 패키지 아카이브 추출을 위한 파일 아카이버 처리.
  • 디지털 인증서와 체크섬을 각각 인증하여 패키지의 신뢰성과 무결성을 보장합니다.
  • 앱 스토어나 소프트웨어 저장소를 통해 기존 소프트웨어를 업데이트, 설치, 다운로드 또는 검색합니다.
  • 사용자의 혼란을 줄이기 위해 기능을 통해 패키지를 결합합니다.
  • 패키지가 필요한 모든 패키지와 함께 설치되었는지 확인하기 위한 종속성을 유지합니다. 그러니까 무시하고 '의존 지옥'.
리눅스 패키지 관리자

컴파일된 패키지의 프런트 엔드(로컬)

시스템 관리자 패키지 관리 소프트웨어 이외의 일부 도구를 사용하여 소프트웨어를 설치하고 관리할 수 있습니다. 예를 들어, 로컬 관리자는 소스 코드(패키지 해제)를 다운로드하고 컴파일한 다음 설치할 수 있습니다.

이로 인해 로컬 시스템 상태가 패키지 관리자 상태 데이터베이스와 동기화되지 않을 수 있습니다. 로컬 관리자는 수정 사항을 패키지 관리자에 수동으로 통합하거나 몇 가지 종속성을 관리하는 등 몇 가지 추가 조치를 취해야 합니다.

객관적인 자바

컴파일 패키지를 확인하기 위한 몇 가지 도구가 있습니다. (장소 상에서) 패키지 관리로 개발되었습니다.

설치 확인 에 사용할 수 있습니다 .rpm 또는 .deb 파일 기반 배포판 그리고 슬랙웨어 리눅스 또한. 을 위한 잡종 같은 시스템 아치 리눅스 그리고 레시피 기반 시스템 좋다 젠투 리눅스, 처음에 레시피를 지정하면 패키지가 로컬 패키지 데이터베이스에 맞는지 확인할 수 있습니다.

분산 라이브러리의 과제

정적 라이브러리 연결이 아닌 동적 라이브러리 연결에 의존하는 다양한 컴퓨터 시스템은 기계 명령어의 라이브러리(실행 파일)를 응용 프로그램과 패키지에 배포합니다.

이러한 유형의 시스템에서 라이브러리 결과 버전이 필요한 개별 패키지 간의 일반적인 관계는 '의존 지옥'.

그것은 또한로 알려져 있습니다 'DLL 지옥' Microsoft Windows에서 연결된 라이브러리를 동적으로 처리할 때. 이러한 시스템에서는 올바른 패키지 관리가 중요합니다.

에서 오픈스텝 , 프레임워크 시스템은 둘 이상의 라이브러리 버전을 동시에 설치할 수 있도록 허용하고 많은 소프트웨어 패키지가 어떤 버전에 연결되어 있는지 설명함으로써 이 문제를 해결하는 데 적합했습니다.

구성 유지 관리

구성 파일의 업그레이드는 소프트웨어 업그레이드에서 특히 문제가 됩니다. 적어도 Unix에서는 패키지 관리자가 파일 보관 유틸리티 확장으로 시작되었기 때문입니다.

일반적으로 구성 파일에 규칙을 사용하는 대신 구성 파일을 유지하거나 덮어쓰기만 합니다. 구성 파일 형식이 수정되면 몇 가지 문제가 발생할 수 있습니다. 예를 들어, 이전 구성 파일이 표시되어야 하는 새로운 옵션을 명시적으로 비활성화하지 않는 경우입니다. Debian의 dpkg와 같은 일부 패키지 관리자는 설치 시 구성을 허용합니다. 어떤 경우에는 기본 구성을 사용하여 패키지를 설치하고 설치(헤드리스) 구성을 다수의 시스템에 덮어쓰는 것이 바람직합니다. 이러한 유형의 설치(사전 구성됨)는 dpkg를 통해서도 지원됩니다.

업그레이드 억제

사용자가 업그레이드를 수행하기 위해 패키지 관리 소프트웨어와 협력하는 경우 실행할 작업 목록(일반적으로 업그레이드할 패키지 목록 및 가능하면 새 버전 및 이전 버전 번호 제공)과 함께 사용자를 사용할 수 있도록 하는 것이 전통적입니다.

이를 통해 사용자는 업그레이드를 위해 단일 패키지를 선택하거나 대량으로 업그레이드할 수 있습니다. 많은 패키지를 절대 업그레이드하지 않거나 소프트웨어 패키지에 지정된 대로 이전 표준에서 심각한 불안정성이나 취약점이 감지된 경우에만 업그레이드하도록 다양한 패키지 관리자를 구성할 수 있습니다. 때때로 이 프로세스를 버전 고정이라고 합니다.

예를 들어:

yum은 이를 지원합니다 제외=오픈오피스* 통사론

구문이 있는 팩맨 무시=오픈오피스 (두 경우 모두 오픈오피스 업그레이드를 억제하기 위해)

dselect와 dpkg는 패키지 선택 내의 보류 플래그를 통해 부분적으로 이를 지원합니다.

적성은 '금지하다' 그리고 '잡고 있다' 플래그.

포티지는 설정 파일로 이를 지원합니다. 즉, 패키지.마스크.

APT는 플래그를 확장합니다. 즉, 잡고 있다 단지에 의해 '고정' 방법(사용자는 패키지를 블랙리스트에 올릴 수도 있음)

저장소

사용자가 자신의 시스템에 설치하도록 허용하는 소프트웨어 유형에 대한 추가 제어를 제공하기 위해(때때로 배포자 측의 편의 및 법적 이유 때문에) 소프트웨어는 때때로 많은 소프트웨어 저장소를 사용하여 다운로드됩니다.

계단식 패키지 제거

더욱 발전된 패키지 관리 측면 중 일부는 '계단식 패키지 제거', 여기서 대상 패키지에 의존하는 모든 패키지와 대상 패키지가 의존하는 모든 패키지도 제거됩니다.

명령 비교

그러나 명령은 모든 특정 패키지 관리자에 대해 고유합니다. 대부분의 패키지 관리자가 동일한 기능을 지원하기 때문에 이러한 명령은 대부분 번역 가능합니다.

패키지 관리자의 보급

dpkg와 같은 패키지 관리자는 1994년 초에 출시되었습니다. 바이너리 패키지를 지향하는 다양한 Linux 배포판은 소프트웨어를 유지 관리하는 주요 수단 때문에 패키지 관리 시스템에 크게 의존합니다.

Windows Phone, iOS(Unix 계열), Android(Linux 기반)와 같은 많은 모바일 운영 체제는 해당 공급업체의 App Store에 거의 의존합니다. 따라서 그들은 패키지 관리 시스템(전용)을 사용합니다.

설치 프로그램과의 비교

종종 패키지 관리자는 다음과 같이 알려져 있습니다. '설치 관리자'. 설치 프로그램과 패키지 관리자 사이에 혼란이 발생할 수 있습니다. 주요 차이점 중 일부는 다음과 같습니다.

표준 패키지 관리자 설치자
함께 배송됨 일반적으로 OS는 모든 컴퓨터 프로그램
설치정보 위치 설치를 위한 중앙 데이터베이스 전적으로 설치자의 재량에 달려 있습니다. 앱 폴더에 있는 파일일 수도 있고 운영 체제의 폴더와 파일 사이에 있는 파일일 수도 있습니다. 설치 정보를 공개하지 않고 제거 프로그램 목록에 자신을 등록할 수도 있습니다.
유지보수 범위 잠재적으로 시스템의 모든 패키지 포장된 제품 그대로
개발자 단일 패키지 관리자 공급업체 둘 이상의 설치 프로그램 공급업체
패키지 형식 인식되는 몇 가지 형식 앱 번호만큼 다양한 형식이 있을 수 있습니다.
패키지 형식의 호환성 패키지 관리자가 사용하는 한 활용될 수 있습니다. 사용자가 패키지 관리자를 업그레이드하지 않거나 새 패키지 관리자 버전이 이를 계속 지원합니다. 설치 프로그램이 아카이브 형식을 사용하는 경우 설치 프로그램은 항상 해당 형식과 호환됩니다. 그러나 설치 프로그램은 모든 컴퓨터와 마찬가지로 소프트웨어 부패의 영향을 받을 수 있습니다.

자동화 유틸리티와의 비교

거의 모든 소프트웨어 구성 관리 시스템은 소프트웨어 배포와 소프트웨어 구축을 별개로 나타냅니다. 일반적으로 빌드 자동화 유틸리티는 이미 시스템에 있는 사람이 읽을 수 있는 형식의 소스 코드 파일을 가져와 유사한 시스템에서 실행 가능한 패키지(바이너리)로 변환하는 절차를 가속화합니다.

일반적으로 나중에 다른 몇몇 시스템에서 실행되는 패키지 관리자는 인터넷에서 해당 실행 가능 패키지(미리 빌드된 바이너리)를 다운로드한 다음 설치합니다.

그러나 두 가지 유형의 도구 모두 아래에 언급된 몇 가지 공통 요소를 포함합니다.

  • 종속성 그래프 토폴로지 정렬은 많은 바이너리 구성 요소 간의 종속성을 처리하기 위해 패키지 관리자 내에서 적용됩니다.
  • 또한 여러 소스 구성 요소 간의 종속성을 처리하기 위해 빌드 관리자 내부에 적용됩니다.
  • 실행 파일을 빌드하는 것뿐만 아니라 다양한 makefile이 지원을 제공합니다.
  • 또한 make install을 사용하여 설치를 지원합니다.
  • 모든 패키지 관리자는 소스 코드(사람이 읽을 수 있음)를 바이너리 실행 파일로 변환한 다음 Homebrew, Sorcery, Portage 등과 같은 소스 기반 배포용으로 설치하는 것을 지원합니다.

다음과 같은 일부 도구 A-A-P 그리고 만들다 배포와 구축을 모두 관리하도록 개발되었습니다. 또한 패키지 관리자나 빌드 자동화 유틸리티 또는 둘 다로 사용할 수도 있습니다.

기본 패키지 관리자 및 해당 형식

유니버설 패키지 관리자

그것은 또한 바이너리 저장소 관리자. 이 패키지 관리자는 스토리지를 최적화하고 소프트웨어 개발 프로세스 내에서 생성 및 사용되는 바이너리 파일, 패키지 및 아티팩트를 다운로드하기 위해 만들어진 소프트웨어 도구입니다.

유니버설 패키지 관리자 패션 사용자가 모든 유형의 패키지를 취급하는 것을 표준화하는 데 중점을 둡니다. 이는 사용자에게 각 유형의 아티팩트에 대한 규정 준수 및 보안 지표를 사용할 수 있는 기능을 제공합니다. 그들은 중간에 있는 것으로 지정되었습니다. DevOps 툴체인.

알파벳과 숫자
리눅스 패키지 관리자

오픈 소스 및 무료 소프트웨어 시스템

호환 가능하고 유사한 라이센스의 패키지는 오픈 소스 및 무료 소프트웨어의 동작을 통해 여러 운영 체제에서 사용할 수 있도록 존재했습니다.

이러한 패키지는 여러 버전별 충돌과 종속성 및 소프트웨어 순열을 관리하기 위해 내부적으로 복잡하고 구성 가능한 패키징 시스템을 사용하여 배포 및 결합될 수 있습니다.

또한 오픈 소스 및 무료 소프트웨어의 일부 패키징 시스템 자체가 오픈 소스 및 무료 소프트웨어로 게시됩니다.

Windows 및 Mac OS X와 ​​같은 운영 체제와 Linux와 같은 오픈 소스 및 무료 소프트웨어의 패키지 관리 간의 한 가지 차이점은 오픈 소스 및 무료 소프트웨어 시스템에서는 유사한 메커니즘을 통해 타사 패키지를 업그레이드하고 설치할 수 있다는 것입니다. . 반면, Windows 및 Mac OS X의 많은 패키지 관리자는 각각 Microsoft와 Apple에서 제공하는 소프트웨어를 업그레이드합니다.

패키지 관리 구성 파일에 해당 저장소 URL을 포함시켜 타사 소프트웨어를 지속적으로 업그레이드하는 기능이 추가되었습니다.

패키지 형식

모든 패키지 관리자는 관리할 수 있는 패키지의 메타데이터와 형식에 따라 달라집니다. 패키지 관리자는 종속성과 같은 적절한 메타데이터를 사용하여 특정 패키지 관리자에 대해 파일 그룹을 그룹화해야 합니다.

핵심 유틸리티 모음은 이러한 패키지를 통해 일반 설치를 관리하는 경우가 많으며 둘 이상의 패키지 관리자가 추가 기능을 제공하기 위해 이러한 유틸리티를 적용합니다.

예:

  1. yum은 백엔드로 rpm에 의존합니다. Yum은 시스템 네트워크를 유지하기 위해 간단한 구성과 같은 측면을 추가하여 백엔드 기능을 개발합니다.
  2. 시냅틱 패키지 관리자는 dpkg에 의존하는 Advanced Packaging Tool의 라이브러리를 적용하여 GUI를 제공합니다.

외계인 서로 다른 Linux 패키지 형식을 변환하는 프로그램으로 정의할 수 있습니다. 간의 전환을 지원합니다. 슬랙웨어(.tgz, .tlz, .tbz, .txz) 패키지, Solaris(.pkg), Stampede(.slp), .deb, .rpm 패키지, 그리고 Linux 표준 베이스 (LSB) 규격을 준수합니다.

다음과 같은 여러 모바일 OS에서 구글 플레이 패키지 형식을 활용합니다. 안드로이드 애플리케이션 패키지 (간단히 말하면 APK ) 동안 윈도우 스토어 형식을 사용합니다 XAP 그리고 APPX. 둘 다 윈도우 스토어 그리고 구글 플레이 시조 패키지 관리자를 포함합니다.

애플리케이션 수준 패키지 관리자

개발자가 현재 라이브러리를 필요로 하는 경우 프로그래밍 언어 및 제한된 기능을 위한 OS용 패키지 관리자(추가 기능)가 몇 가지 있습니다. 응용 프로그램 수준 패키지 관리자는 시스템 수준 패키지 관리자와 달리 소프트웨어 시스템의 작은 부분에 집중합니다.

일반적으로 디렉터리 트리에 상주합니다. 다음과 같은 시스템 수준 패키지 관리자에 의해 구성되지 않습니다. /usr/로컬/fink 또는 c:cygwin. 그러나 이는 프로그래밍 라이브러리와 함께 작동하는 패키지 관리자의 조건이 아닐 수 있으며, 두 패키지 관리자 모두 업그레이드를 중단하고 다음을 요청할 수 있으므로 충돌이 발생할 수 있습니다. '소유하다' 파일.