RPM 패키지 매니저

RPM Package Manager
RPM 패키지 매니저(RPM)
RPM Logo.svg
원저작자에릭 트로안, 마크 유잉,[1] 레드햇
개발자커뮤니티레드햇[2][3]
초기 릴리즈1997년; 25년 전(1997년)[1]
안정된 릴리스
4.17.0 / 2021년 9월 3일; 11개월 전(2021-09-03)
프리뷰 릴리즈
4.18.0 alpha 2 / 2022년 5월 5일, 3개월 전(2022-05-05)
저장소
기입처C, Perl[4]
운영 체제Linux, Unix와 같은
이용가능기간:40개[5] 언어
유형패키지 관리 시스템
면허증.GPL
웹 사이트rpm.org

RPM(RPM) (원래 Red Hat Package Manager, 현재는 재귀 약어)는 무료 오픈 소스 패키지 관리 [6]시스템입니다.RPM이라는 이름은.rpm 파일 형식 및 패키지 관리자 프로그램 자체입니다.RPM은 주로 Linux 배포용입니다.파일 형식은 Linux Standard Base의 베이스라인 패키지 형식입니다.

Red Hat Linux에서 사용하기 위해 작성되었지만 RPM은 현재 PCLinuxOS, Fedora, AlmaLinux, CentOS, OpenSUSE, OpenMandrivaOracle Linux와 같은 많은 Linux 디스트리뷰션에서 사용되고 있습니다.또한 Novell NetWare(6.5 SP3 버전), IBM의 AIX(4 [7]버전 기준), IBM [8]i 및 ArcaOS[9]같은 일부 다른 운영 체제에도 이식되었습니다.

RPM 패키지에는 임의의 파일세트를 포함할 수 있습니다.대부분의 RPM 파일은 일부 소프트웨어의 컴파일 버전을 포함하는 "바이너리 RPM"(또는 BRPM)입니다.바이너리 패키지 구축에 사용되는 소스 코드를 포함하는 "소스 RPM"(또는 SRPM)도 있습니다.파일 헤더에 일반(B) RPM과 구별되는 적절한 태그가 있기 때문에 설치 시 /usr/src로 압축 해제됩니다.SRPM은 통상적으로 파일 확장자 ".src.rpm" (.spm)을 사용합니다.파일 시스템의 확장자는 3자로 제한됩니다(예: 오래된 DOS FAT).

역사

RPM은 Erik Troan과 Marc Ewing에 [1]의해 1997년에 처음 작성되었으며, 그 기반은 다음과 같습니다.pms,rpp,그리고.pm경험.

pmRik Faith와 Doug Hoffman이 1995년 5월에 Red Hat Software를 위해 작성했으며, 그 설계와 구현은 크게 영향을 받았다.pms1993년 가을 Faith와 Kevin Martin이 Bogus Linux Distribution을 위해 작성한 패키지 관리 시스템. pm'Pristin Sources + patches' 패러다임을 유지하다pms기능을 추가하고 구현에 존재하는 임의의 제한을 없앱니다. pm는 설치된[4][10][11] 패키지를 추적 및 검증하기 위한 데이터베이스 지원을 대폭 강화합니다.

특징들

소프트웨어 설치 및 유지보수를 수행하는 시스템 관리자는 수동 구축이 아닌 패키지 관리를 사용하면 단순성, 일관성 및 이러한 프로세스를 자동화 및 비인터랙티브화할 수 있는 등의 이점이 있습니다.rpm은 2019년 4.15 이후 Berkeley DB를 백엔드 데이터베이스로 사용합니다.RPM 패키지 (Berkeley DB 미포함)–disable-bdb).

RPM의 특징은 다음과 같습니다.

  • RPM 패키지는 GPG 및 MD5사용하여 암호화 검증 가능
  • 원본 아카이브(예:.tar.gz,.tar.bz2)가 SRPM에 포함되어 있어 검증이 용이함
  • 델타 업데이트: 패치 RPM 및 패치 파일과 동등한 RPM인 Delta RPM은 RPM 설치 소프트웨어를 증분 업데이트할 수 있습니다.
  • 자동 빌드 타임 의존성 평가.

로컬 운영

패키지는 특정 디스트리뷰션(예: Red Hat Enterprise Linux) 내에서 제공되거나 다른 당사자(: RPM Fusion for Fedora Linux)[12]에 의해 구축될 수 있습니다.상호의존 RPM 간의 순환 의존성(이른바 '의존성 지옥')은 문제가 [13]될 수 있습니다.이 경우 단일 설치 명령으로 모든 관련 패키지를 지정해야 합니다.

저장소

RPM 은, 대부분의 경우, 인터넷상의 1 개 이상의 저장소에 일원적으로 수집됩니다.사이트에는 대부분의 경우 자체 RPM 저장소가 있으며 이러한 인터넷 저장소의 로컬 미러 역할을 하거나 유용한 RPM의 로컬 유지보수를 할 수 있습니다.

프런트 엔드

개의 프론트 엔드에서 RPM을 저장소에서 가져와 설치하는 프로세스를 용이하게 하여 RPM의 의존관계를 해결합니다.여기에는 다음이 포함됩니다.

로컬 RPM 설치 데이터베이스

패키지 매니저의 배후에서 작업하는 것은 RPM 데이터베이스입니다./var/lib/rpmBerkeley DB를 백엔드로 사용합니다.1개의 데이터베이스(Packages설치된 RPM의 모든 메타 정보를 포함합니다. 인덱싱 목적으로 여러 데이터베이스가 생성되어 쿼리 속도를 높이기 위해 데이터를 복제합니다.이 데이터베이스는 사용자가(RPM을 사용하여) 패키지를 설치할 때 변경 및 생성된 모든 파일을 추적하는 데 사용됩니다. 따라서 사용자는 RPM을 통해 변경 내용을 되돌리고 나중에 패키지를 제거할 수 있습니다.데이터베이스가 파손된 경우(RPM 클라이언트가 정지된 경우 가능), 인덱스 데이터베이스를rpm --rebuilddb명령어를 [16]입력합니다.

묘사

RPM 형식은 Linux 디스트리뷰션마다 동일하지만 자세한 규칙과 가이드라인은 Linux 디스트리뷰션마다 다를 수 있습니다.

패키지 파일 이름 및 라벨

RPM 은, 1 개의 파일로 송신됩니다.보통 파일명은 다음과 같습니다.

<name>-<version>-<release>.src.rpm소스 패키지의 경우 또는
<name>-<version>-<release>.<architecture>.rpm바이너리용.

예를 들어 패키지 파일 이름에서libgnomeuimm-2.0-2.0.0_3.i386.rpm,그<name>libgnomeuimm,그<version>2.0,그<release>2.0.0_3, 및<architecture>i386연관된 소스 패키지에 이름이 지정됩니다.libgnomeuimm-2.0-2.0.0_3.src.rpm

RPM (탑재시)noarch.rpm확장은 특정 CPU 아키텍처에 의존하지 않습니다.예를 들어, 이러한 RPM에는 다른 프로그램에서 사용할 수 있는 그래픽과 텍스트가 포함될 수 있습니다.또한 셸 스크립트나 Python과 같은 다른 해석된 프로그래밍 언어로 작성된 프로그램을 포함할 수도 있습니다.

RPM 컨텐츠에는 패키지 라벨도 포함되어 있습니다.이 라벨에는 다음과 같은 정보가 포함되어 있습니다.

  • 소프트웨어명
  • 소프트웨어 버전(소프트웨어의 원래 업스트림소스로부터 취득한 버전)
  • 패키지 릴리스(같은 버전의 소프트웨어를 사용하여 패키지를 재구축한 횟수).이 필드는 "mdv"(이전의 "mdk"(Mandriva Linux), "mga"(Mageia), "fc4"(Fedora Core 4), "rhl9"(Red Hat Linux 9), "suse100"(SUSE 10Linux) 등의 문자열을 추가하여 패키지의 특정 배포를 나타낼 때도 자주 사용됩니다.
  • 패키지가 작성된 아키텍처(i386, i686, x86_64, ppc 등)

패키지 라벨 필드는 파일 이름과 일치할 필요가 없습니다.

라이브러리 패키지

라이브러리는 버전별로 두 개의 개별 패키지로 배포됩니다.하나는 런타임에 사용할 수 있도록 미리 컴파일된 코드를 포함하고, 다른 하나는 헤더 등의 관련 개발 파일을 포함합니다.이러한 패키지는 이름 필드에 "devel"이 추가됩니다.시스템 관리자는 바이너리 패키지와 개발 패키지의 버전이 일치하는지 확인해야 합니다.

바이너리 포맷

형식은 바이너리이며 다음 4개의 [6]섹션으로 구성됩니다.

  • 리드: 파일을 RPM 파일로 식별하고 오래된 헤더를 포함합니다.
  • 무결성 및/또는 신뢰성을 확보하기 위해 사용할 수 있는 시그니처.
  • 헤더: 패키지 이름, 버전, 아키텍처, 파일 목록 등을 포함한 메타데이터를 포함합니다.
  • 파일 아카이브(payload)는 보통 cpio 형식으로 gzip으로 압축됩니다.rpm2cpio툴을 사용하면 RPM [17]패키지를 설치하지 않고도 cpio 파일을 가져올 수 있습니다.
    • Linux Standard Base에서는 gzip을 사용해야 하지만 Fedora 30 패키지는 xz 압축되고 Fedora 31 패키지는 zstd [18]압축될 수 있습니다.최신 버전의 RPM에서는 bzip2, lzip [19]또는 lzma 압축도 사용할 수 있습니다.
    • RPM 5.0 포맷은 아카이브에 xar를 사용할 수 있습니다.

SPEC 파일

RPM 패키지를 작성하기 위한 "레시피"는 사양 파일입니다.스펙 파일은 .spec 접미사로 끝나며 패키지 이름, 버전, RPM 리비전 번호, 패키지 빌드, 설치 및 클리닝 단계 및 changelog가 포함됩니다.필요에 따라서, 1개의 RPM 사양 파일로부터 복수의 패키지를 작성할 수 있습니다.RPM 패키지는 rpmbuild 도구를 사용하여 RPM 스펙 파일에서 생성됩니다.

스펙 파일은 보통 소스 코드와 함께 패키지된 스펙 파일을 포함하는 SRPM 파일 내에 배포됩니다.

SRPM

일반적인 RPM은 직접 설치할 수 있도록 미리 컴파일된 소프트웨어입니다.대응하는 소스 코드를 배포할 수도 있습니다.이 작업은 SRPM에서 이루어집니다.SPEC 파일에는 소프트웨어 및 소프트웨어 구축 방법을 설명하는 "SPEC" 파일도 포함됩니다.SRPM을 사용하면 코드 자체를 컴파일하거나 변경할 수도 있습니다.

소프트웨어 패키지에는 플랫폼에 의존하지 않는 스크립트만 포함할 수 있습니다.이 경우 개발자는 설치 가능한 RPM인 SRPM만 제공할 수 있습니다.

NOSRC

이것은 SRPM의 특별한 버전입니다.「SPEC」파일과 패치(옵션)가 포함되어 있습니다만, 소스(통상은 [20]라이센스 때문에)는 포함되어 있지 않습니다.

포크

2010년 6월 현재 개발 중인 RPM 버전은 2개입니다.하나는 Fedora Project와 Red Hat이 주도하고 다른 하나는 Red Hat의 전 직원인 RPM의 이전 유지보수가 주도하고 있습니다.

RPM.org

rpm.org 커뮤니티의 첫 번째 주요 코드 리비전은 2007년 7월에 있었습니다.버전 4.8은 2010년 1월에, 버전 4.9는 2011년 3월에, 4.10은 2012년 5월에, 4.11은 2013년 1월에, 4.12는 2014년 9월에, 4.13은 2015년 7월에 출시되었습니다.

이 버전은 Fedora Linux, Red Hat Enterprise Linux 및 파생 모델, Open SUSE, SUSE Linux Enterprise, Unity Linux, Mageia,[21] Open Embedded, TizenOpenMandriva Lx( Mandriva) 등의 배포판에서 사용됩니다.

RPM v5

1999년부터 RPM을 유지해온 Jeff Johnson은 다른 여러 유통업체의 참가자들과 함께 개발을 계속했습니다.RPM 버전5는 2007년 5월에 출시되었습니다.

이 버전은 Wind River Linux(Wind River Linux 10까지), Rosa Linux 및 OpenMandriva Lx(2011년에[22] rpm5로 전환된 이전 Mandriva Linux) 의 배포 및 기타 일반적인 UNIX 플랫폼용 패키지를 제공하는 OpenPKG 프로젝트에서 사용됩니다.

OpenMandriva Lx는 4.0 릴리즈에서 [needs update]rpm[23].org으로 돌아갑니다.

RPM5의 마지막 주요 사용자인 Open Embedded는 RPM5의 문제로 [24][25]인해 rpm.org으로 다시 전환되었습니다.

「 」를 참조해 주세요.

  • 자동 패키지 - "보완적인" 패키지 관리 시스템
  • 델타 ISO - RPM 패키지 매니저 파일을 포함하는 ISO 이미지
  • dpkg : Debian 및 그 파생 모델에 의해 사용되는 패키지 관리 시스템
  • RPM 기반의 Linux 디스트리뷰션 목록
  • pkg-config : 소스 코드에서 소프트웨어를 컴파일하기 위해 라이브러리를 쿼리합니다.

레퍼런스

  1. ^ a b c "RPM timeline". rpm.org. Retrieved 2020-06-25.
  2. ^ "RPM -- plans, goals, etc". Max Spevack. Retrieved 2011-01-20.
  3. ^ "RPM.org FAQ". Archived from the original on 2016-11-05. Retrieved 2013-08-25.
  4. ^ a b Bailey, Edward C. (2000). "Chapter 1: An Introduction to Package Management". Maximum RPM: Taking the Red Hat Package Manager to the Limit. Red Hat, Inc. pp. 22–25. ISBN 978-1888172782. Archived from the original on 2016-09-10. Retrieved 2013-08-13.
  5. ^ "po/LINGUAS". GitHub. 2022-04-23.
  6. ^ a b Bailey, Edward C. (2000). "Appendix A: Format of the RPM File". Maximum RPM: Taking the Red Hat Package Manager to the Limit. Red Hat, Inc. pp. 325–336. ISBN 978-1888172782. Archived from the original on 2016-04-21. Retrieved 2010-11-22.
  7. ^ "Configuring YUM and creating local repositories on IBM AIX". 2018-10-24.
  8. ^ "RPM and Yum are a big deal for IBM i. Here's why". 2018-07-18.
  9. ^ "Package Manager". Retrieved 2020-09-04.
  10. ^ "RPM Guide-RPM - Design Goals". Retrieved 2014-04-14.
  11. ^ "BOGUS Announce". Retrieved 2014-04-14.
  12. ^ "RPM Fusion". rpmfusion.org. Retrieved 2010-11-22.
  13. ^ "An Analysis of RPM Validation Drift" (PDF). USENIX Association. Retrieved 2011-03-15.
  14. ^ "Zypper - MeeGo wiki". Archived from the original on 2013-09-25. Retrieved 2014-04-14.
  15. ^ "FAQs: About the Projects". Ark Linux Official Site. Archived from the original on 2012-02-11. Retrieved 2014-04-14.
  16. ^ "Repair an RPM database safely". Archived from the original on 2019-08-06. Retrieved 2011-11-11.
  17. ^ "Supplemental Packaging Software". Fedora Project. Retrieved 2011-11-11.
  18. ^ "Switch RPMs to zstd compression". Fedora Project (Wiki). Retrieved 2019-06-02.
  19. ^ "[PATCH] Add lzip support". Archived from the original on 2016-03-04. Retrieved 2013-10-24.
  20. ^ "How to package proprietary software". 10 December 2014. Retrieved 2018-07-02.
  21. ^ "Mageia 3 Release Notes: Package management". mageia.org. 2013-05-19. Retrieved 2014-04-14.
  22. ^ Bodnar, Ladislav & Smith, Jesse (2010-11-22). "DistroWatch Weekly". DistroWatch. Retrieved 2010-11-22.
  23. ^ "Forum: Switching to RPMv4". Retrieved 2018-03-03.
  24. ^ "YP Core - Pyro 2.3". Yocto Project. 2017-05-12. Archived from the original on 2017-12-05. Retrieved 2017-12-04.{{cite web}}: CS1 maint: bot: 원래 URL 상태를 알 수 없음(link)()
  25. ^ "[Openembedded-architecture] Changes that switching from smart to dnf will cause". Yocto Project. 2017-02-14. Retrieved 2018-11-04.

외부 링크