RPMパッケージマネージャー

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
RPM Package Manager(RPM)
RPM Logo.svg
原作者Erik Troan、Marc Ewing[1] Red Hat
開発者コミュニティとRedHat [2] [3]
初回リリース1997 ; 25年前[1] (1997
安定リリース
4.17.0/2021年9月3日; 6ヶ月前 (2021-09-03
プレビューリリース
4.17.0 RC1/2021年8月20日; 6ヶ月前 (2021-08-20
リポジトリ
で書かれているCPerl [4]
オペレーティング・システムLinuxUnixライク
タイプパッケージ管理システム
ライセンスGPL
Webサイトrpm .org

RPM Package ManagerRPM)(元々はRed Hat Package Manager、現在は再帰的頭字語)は、無料のオープンソース パッケージ管理システムです。[5] RPMという名前は、.rpm ファイル形式とパッケージマネージャープログラム自体を指します。RPMは主にLinuxディストリビューションを対象としていました。ファイル形式は、LinuxStandardBaseのベースラインパッケージ形式です

RPMはRedHatLinuxで使用するために作成されましたが、現在、 Fedora LinuxAlmaLinuxCentOSopenSUSEOpenMandriva、 OracleLinuxなどの多くのLinuxディストリビューションで使用されていますまた、 Novell NetWare(バージョン6.5 SP3以降)、IBMのAIX(バージョン4以降)、[6] IBM i[7]ArcaOSなどの他のオペレーティングシステムにも移植されています[8]

RPMパッケージには、任意のファイルのセットを含めることができます。ほとんどのRPMファイルは、一部のソフトウェアのコンパイル済みバージョンを含む「バイナリRPM」(またはBRPM)です。バイナリパッケージの構築に使用されるソースコードを含む「ソースRPM」(またはSRPM)もあります。これらのファイルヘッダーには、通常の(B)RPMと区別する適切なタグがあり、インストール時に/ usr/srcに抽出されます。SRPMは通常、ファイル拡張子「.src.rpm」(古いDOS FATなどの3つの拡張子文字に制限されたファイルシステムの.spm)を保持します。

歴史

RPMは、1997年にErikTroanとMarcEwingによって[1]pms、、、rppおよびpm経験 に基づいて作成されました。

pm1995年5月にRedHatSoftwareのためにRikFaithとDougHoffmanによって書かれました。その設計と実装pmsは、偽のLinuxディストリビューションのために1993年の秋にFaithとKevinMartinによるパッケージ管理システムに大きく影響されました。の「元のソース+パッチ」パラダイムをpm維持しながら、機能を追加し、実装に存在する任意の制限を排除します。インストールされたパッケージを追跡および検証するための大幅に強化されたデータベースサポートを提供します[4] [9] [10]pmspm

機能

ソフトウェアのインストールとメンテナンスを実行するシステム管理者にとって、手動で構築するのではなくパッケージ管理を使用することには、単純さ、一貫性、これらのプロセスを自動化して非対話型にする機能などの利点があります。rpmはバックエンドデータベースとしてBerkeleyDBを使用しますが、2019年の4.15以降、Berkeley DB–disable-bdbを使用しないrpmパッケージのビルドをサポートしています( )。

RPMの機能は次のとおりです。

  • RPMパッケージは、 GPGおよびMD5で暗号的に検証できます
  • 元のソースアーカイブ(例.tar.gz.tar.bz2)はSRPMに含まれているため、検証が容易になります
  • Deltaアップデート:PatchRPMとDeltaRPMは、パッチファイルと同等のRPMであり、RPMがインストールされたソフトウェアを段階的にアップデートできます。
  • 自動ビルド時依存関係評価。

ローカル操作

パッケージは、特定のディストリビューション(たとえば、Red Hat Enterprise Linux)内から取得することも、他の関係者(たとえば、FedoraLinux用のRPMFusion)によってビルドすることもできます[11]相互に依存するRPM間の循環依存関係(いわゆる「依存関係地獄」)は問題になる可能性があります。[12]このような場合、1つのインストールコマンドで関連するすべてのパッケージを指定する必要があります。

リポジトリ

RPMは、多くの場合、インターネット上の1つ以上のリポジトリに一元的に収集されます。多くの場合、サイトには独自のRPMリポジトリがあり、そのようなインターネットリポジトリのローカルミラーとして機能するか、ローカルで保守されている有用なRPMのコレクションとして機能します。

フロントエンド

RPMのいくつかのフロントエンドは、リポジトリからRPMを取得してインストールするプロセスを容易にし、それらの依存関係を解決するのに役立ちます。これらには以下が含まれます:

ローカルRPMインストールデータベース

パッケージマネージャーの舞台裏で機能しているのは、に保存されているRPMデータベース/var/lib/rpmです。BerkeleyDBをバックエンドとして使用します。Packagesこれは、インストールされているRPMのすべてのメタ情報を含む単一のデータベース( )で構成されています。インデックス作成の目的で複数のデータベースが作成され、データを複製してクエリを高速化します。データベースは、ユーザー(RPMを使用)がパッケージをインストールしたときに変更および作成されたすべてのファイルを追跡するために使用されます。これにより、ユーザーは(RPMを介して)変更を元に戻し、後でパッケージを削除できます。データベースが破損した場合(RPMクライアントが強制終了された場合に発生する可能性がありますrpm --rebuilddbコマンドを使用してインデックスデータベースを再作成できます。[15]

説明

RPM形式は異なるLinuxディストリビューション間で同じですが、詳細な規則とガイドラインはそれらの間で異なる場合があります。

パッケージのファイル名とラベル

RPMは単一のファイルで提供され、通常は次の形式のファイル名で提供されます。

<name>-<version>-<release>.src.rpmソースパッケージの場合、または
<name>-<version>-<release>.<architecture>.rpmバイナリ用。

たとえば、パッケージファイル名libgnomeuimm-2.0-2.0.0_3.i386.rpmでは、<name>is libgnomeuimm<version>is 2.0、is、<release>is 2.0.0_3<architecture>isです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 Linux 10.0)など。
  • パッケージが構築されたアーキテクチャ(i386、i686、x86_64、ppcなど)

パッケージラベルフィールドはファイル名と一致する必要はありません。

ライブラリパッケージ

ライブラリは、バージョンごとに2つの別々のパッケージで配布されます。1つは実行時に使用するためのプリコンパイル済みコードを含み、もう1つはヘッダーなどの関連する開発ファイルを含みます。これらのパッケージには名前フィールドに「-devel」が追加されています。システム管理者は、バイナリパッケージと開発パッケージのバージョンが一致していることを確認する必要があります。

バイナリ形式

形式はバイナリであり、4つのセクションで構成されています。[5]

  • ファイルをRPMファイルとして識別し、いくつかの廃止されたヘッダーを含むリード。
  • 完全性および/または信頼性を確保するために使用できる署名。
  • パッケージ名、バージョン、アーキテクチャ、ファイルリストなどのメタデータを含むヘッダー。
  • ファイルアーカイブ(ペイロード)。通常はcpio形式で、 gzipで圧縮されています。このrpm2cpioツールを使用すると、RPMパッケージをインストールしなくてもcpioファイルを取得できます。[16]
    • Linux Standard Baseではgzipを使用する必要がありますが、Fedora 30パッケージはxz圧縮されており、Fedora31パッケージはzstd圧縮されている可能性があります。[17]最近のバージョンのRPMは、 bzip2lzip[18]またはlzma圧縮も使用できます。
    • RPM 5.0形式は、アーカイブにxarを使用することをサポートしています。

SPECファイル

RPMパッケージを作成するための「レシピ」はスペックファイルです。スペックファイルは「.spec」サフィックスで終わり、パッケージ名、バージョン、RPMリビジョン番号、パッケージのビルド、インストール、およびクリーンアップの手順、および変更ログが含まれています。必要に応じて、単一のRPM仕様ファイルから複数のパッケージを作成できます。RPMパッケージは、rpmbuildツールを使用してRPM仕様ファイルから作成されます。

スペックファイルは通常、ソースコードとともにパッケージ化されたスペックファイルを含むSRPMファイル内に配布されます。

SRPM

一般的なRPMは、直接インストールできるようにコンパイル済みのソフトウェアです。対応するソースコードも配布できます。これはSRPMで行われ、ソフトウェアとその構築方法を説明する「SPEC」ファイルも含まれています。SRPMを使用すると、ユーザーはコード自体をコンパイルしたり、場合によっては変更したりすることもできます。

ソフトウェアパッケージには、プラットフォームに依存しないスクリプトのみを含めることができます。このような場合、開発者はSRPMのみを提供できますが、これはまだインストール可能なRPMです。

NOSRC

これはSRPMの特別バージョンです。「SPEC」ファイルとオプションでパッチが含まれていますが、ソースは含まれていません(通常はライセンスのため)。[19]

フォーク

2010年6月の時点で、開発中のRPMには2つのバージョンがあります。1つはFedoraProjectとRedHatが主導し、もう1つはRPMの前のメンテナーであるRedHatの元従業員が主導する別のグループです。

RPM.org

rpm.orgコミュニティの最初のメジャーコードリビジョンは2007年7月でした。バージョン4.8は2010年1月に、バージョン4.9は2011年3月に、バージョン4.9は2012年5月に、4.11は2013年1月に、4.12は2014年9月に、4.13は2015年7月にリリースされました。

このバージョンは、Fedora LinuxRed Hat Enterprise Linuxおよびその派生物openSUSESUSE Linux EnterpriseUnity LinuxMageia[20] OpenEmbeddedTizenOpenMandriva Lx(以前のMandriva)などのディストリビューションで使用されています。

RPMv5

1999年以来RPMのメンテナーであるJeffJohnsonは、他のいくつかのディストリビューションからの参加者と一緒に開発努力を続けました。RPMバージョン5は2007年5月にリリースされました。

このバージョンは、Wind River Linux(Wind River Linux 10まで)、Rosa Linux、OpenMandriva Lx ( 2011年にrpm5に切り替えたMandriva Linux [21])などのディストリビューションや、他のパッケージを提供するOpenPKGプロジェクトで使用されています。一般的なUNIXプラットフォーム。

OpenMandriva Lxは、4.0リリースでrpm.org [22]に戻ります。[更新が必要]

RPM5の最後の主要ユーザーであるOpenEmbeddedは、RPM5の問題のため、rpm.orgに切り替えました。[23] [24]

も参照してください

参照

  1. ^ abc 「RPMタイムラインrpm.org 2020年6月25日取得
  2. ^ 「RPM-計画、目標など」マックススペバック2011年1月20日取得
  3. ^ 「RPM.orgFAQ」2016年11月5日にオリジナルからアーカイブされまし2013年8月25日取得
  4. ^ a b ベイリー、エドワードC.(2000)。「第1章:パッケージ管理の概要」。最大RPM:Red HatPackageManagerを限界まで引き上げます。Red Hat、Inc. pp。22–25。ISBN 978-18881727822016年9月10日にオリジナルからアーカイブされました2013年8月13日取得
  5. ^ a b ベイリー、エドワードC.(2000)。「付録A:RPMファイルのフォーマット」。最大RPM:Red HatPackageManagerを限界まで引き上げます。Red Hat、Inc. pp。325–336。ISBN 978-18881727822016年4月21日にオリジナルからアーカイブされまし2010年11月22日取得
  6. ^ 「IBMAIXでのYUMの構成とローカルリポジトリーの作成」2018-10-24。
  7. ^ 「RPMとYumはIBMiにとって大きな問題です。理由は次のとおりです」2018-07-18。
  8. ^ 「パッケージマネージャー」2020年9月4日取得
  9. ^ 「RPMガイド-RPM-設計目標」2014年4月14日取得
  10. ^ 「BOGUSアナウンス」2014年4月14日取得
  11. ^ 「RPMFusion」rpmfusion.org 2010年11月22日取得
  12. ^ 「RPM検証ドリフトの分析」(PDF)USENIXAssociation 2011年3月15日取得
  13. ^ 「Zypper-MeeGowiki」2013年9月25日にオリジナルからアーカイブされました2014年4月14日取得
  14. ^ 「FAQ:プロジェクトについて」ArkLinux公式サイト。2012-02-11にオリジナルからアーカイブされました2014年4月14日取得
  15. ^ 「RPMデータベースを安全に修復する」2011年11月11日取得
  16. ^ 「補足の包装ソフトウェア」Fedoraプロジェクト2011年11月11日取得
  17. ^ 「RPMをzstd圧縮に切り替えます」Fedora Project(Wiki)2019年6月2日取得
  18. ^ "[PATCH]lzipサポートを追加"2016-03-04にオリジナルからアーカイブされました2013年10月24日取得
  19. ^ 「プロプライエタリソフトウェアをパッケージ化する方法」2014年12月10日2018年7月2日取得
  20. ^ 「Mageia3リリースノート:パッケージ管理」mageia.org2013-05-19 2014年4月14日取得
  21. ^ Bodnar、Ladislav&Smith、Jesse(2010-11-22)。「DistroWatchWeekly」DistroWatch2010年11月22日取得
  22. ^ 「フォーラム:RPMv4への切り替え」2018年3月3日取得
  23. ^ 「YPコア-パイロ2.3」YoctoProject2017-05-12。2017年12月5日にオリジナルからアーカイブされました2017年12月4日取得{{cite web}}:CS1 maint:bot:元のURLステータスが不明(リンク()
  24. ^ "[Openembedded-architecture]スマートからdnfへの切り替えによって生じる変更"YoctoProject2017-02-14 2018年11月4日取得
  • Schroeder、Jeff(2008-01-30)。「高度なRPMクエリ文字列」www.digitalprognosis.com2011年8月9日にオリジナルからアーカイブされまし2018年3月28日取得

外部リンク