| 原作者 | エリック・トロアン、マーク・ユーイング、[1] レッドハット |
|---|---|
| 開発者 | コミュニティとレッドハット[2] [3] |
| 初回リリース | 1997年[1] |
| 安定リリース | 4.19.1 / 2023年12月12日 |
| リポジトリ |
|
| 書かれた | C、Perl [4] |
| オペレーティング·システム | Linux、Unix系 |
| 利用可能 | 40言語[5] |
| タイプ | パッケージ管理システム |
| ライセンス | ライセンス |
| Webサイト | rpm.org |
RPM パッケージ マネージャー( RPM ) (元々はRed Hat Package Managerでしたが、現在は再帰的な頭字語になっています) は、無料のオープン ソース パッケージ管理システムです。[6] RPM という名前は、.rpm ファイル形式とパッケージ マネージャー プログラム自体を指します。RPM は主にLinux ディストリビューションを対象としており、ファイル形式はLinux Standard Baseのベースライン パッケージ形式です。
RPMはRed Hat Linux用に作成されたものですが、現在ではPCLinuxOS、Fedora Linux、AlmaLinux、CentOS、openSUSE、OpenMandriva、Oracle Linuxなど多くのLinuxディストリビューションで使用されています。また、 Novell NetWare(バージョン6.5 SP3以降)、IBMのAIX(バージョン4以降)、[7] IBM i、[8] ArcaOSなど他のオペレーティングシステムにも移植されています。[9]
RPM パッケージには、任意のファイル セットを含めることができます。ほとんどの RPM ファイルは、ソフトウェアのコンパイル バージョンを含む「バイナリ RPM」(または BRPM) です。バイナリ パッケージの作成に使用されるソース コードを含む「ソース RPM」(または SRPM) もあります。これらのファイルには、通常の (B)RPM と区別するための適切なタグがファイル ヘッダーに含まれており、インストール時に /usr/src に抽出されます。SRPM のファイル拡張子は通常、「.src.rpm」(古い DOS FATなど、拡張子が 3 文字に制限されているファイル システムでは .spm ) です。
歴史
RPMはもともと、、、および経験
に基づいて、1997年にErik TroanとMarc Ewingによって作成されました[1] 。pmsrpppm
pmは、1995 年 5 月に Rik Faith と Doug Hoffman によって Red Hat Software 向けに作成されましたが、その設計と実装は、pms1993 年秋に Faith と Kevin Martin によって Bogus Linux Distribution 向けに開発されたパッケージ管理システムである に大きく影響を受けています。 は、のpm「純粋なソース+ パッチ」パラダイムを維持しpmsながら、機能を追加し、実装に存在する任意の制限を排除しています。 は、pmインストールされたパッケージの追跡と検証のためのデータベース サポートを大幅に強化しています。[4] [10] [11]
特徴
ソフトウェアのインストールとメンテナンスを行うシステム管理者にとって、手動での構築よりもパッケージ管理を使用すると、シンプルさ、一貫性、これらのプロセスを自動化して非対話的にする機能などの利点があります。rpmはバックエンドデータベースとしてBerkeley DBを使用しますが、2019年の4.15以降、Berkeley DBなしでのrpmパッケージの構築をサポートしています(–disable-bdb)。[12]
RPM の機能は次のとおりです。
- RPMパッケージはGPGとMD5で暗号的に検証できる
- SRPMには元のソースアーカイブ(例
.tar.gz:.tar.bz2)が含まれているため、検証が容易になります。 - デルタアップデート:パッチファイルに相当するRPMであるPatchRPMとDeltaRPMは、RPMでインストールされたソフトウェアを段階的にアップデートできます。
- ビルド時の依存関係の自動評価。
ローカルオペレーション
パッケージは、特定のディストリビューション(例えば、Red Hat Enterprise Linux)から提供される場合もあれば、他のパーティによってそのディストリビューション用に構築される場合もあります(例えば、 Fedora Linux用のRPM Fusion)。[13]相互に依存するRPM間の循環依存関係(いわゆる「依存関係地獄」)は問題になることがあります。[14]このような場合、単一のインストールコマンドで関連するすべてのパッケージを指定する必要があります。
リポジトリ
RPM は、インターネット上の 1 つ以上のリポジトリに集中的に収集されることがよくあります。サイトには独自の RPM リポジトリが存在することが多く、これはインターネット リポジトリのローカル ミラーとして機能したり、ローカルで管理されている便利な RPM のコレクションとして機能します。
フロントエンド
RPM のフロントエンドには、リポジトリから RPM を取得してインストールするプロセスを容易にし、依存関係の解決に役立つものがあります。これには次のものが含まれます。
- yum は、Fedora Linux、CentOS 5 以上、Red Hat Enterprise Linux 5 以上、Scientific Linux、Yellow Dog Linux、Oracle Linuxで使用されています。
- DNF は、 Fedora Linux 18 ( 22以降のデフォルト)、Red Hat Enterprise Linux 8、AlmaLinux 8、およびCentOS Linux 8で導入されました。
- Red Hat Enterprise Linux、CentOS 3および4、Oracle Linuxで使用されるup2date
- Mer(およびSailfish OS)、MeeGo、[15] openSUSE、SUSE Linux Enterpriseで使用されているZypper
- Mandriva Linux、ROSA Linux、Mageiaで使用されるurpmi
- apt-rpmは、Ark Linux、 [16] PCLinuxOS、ALT Linuxで使用されているDebianのAdvanced Packaging Tool (APT)の移植版である。
- Unity Linux で使用されるSmart Package Manager は、 Fedora Linuxを含む多くのディストリビューションで利用できます。
rpmquery、(例えば)Red Hat Enterprise Linuxで利用可能なコマンドラインユーティリティlibzypp、Sailfish OS用
ローカル RPM インストール データベース
パッケージ マネージャーの裏で動作しているのは、 に保存されている RPM データベースです/var/lib/rpm。バックエンドとしてBerkeley DB をPackages使用します。インストールされた RPM のすべてのメタ情報を含む単一のデータベース ( ) で構成されています。インデックス作成の目的で複数のデータベースが作成され、データを複製してクエリを高速化します。データベースは、ユーザー (RPM を使用) がパッケージをインストールしたときに変更および作成されたすべてのファイルを追跡するために使用されます。これにより、ユーザーは (RPM 経由で) 変更を元に戻し、後でパッケージを削除できます。データベースが破損した場合 (RPM クライアントが で強制終了された場合に発生する可能性があります)、インデックス データベースは コマンドで再作成できますrpm --rebuilddb。[17]
説明
RPM 形式はさまざまなLinux ディストリビューション間で同じですが、詳細な規則とガイドラインはディストリビューションごとに異なる場合があります。
パッケージファイル名とラベル
RPM は単一のファイルで配信され、通常は次の形式のファイル名が付けられます。
<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)、"rh9" ( Red Hat Linux 9)、"suse100" ( SUSE Linux 10.0) などの文字列を追加することで、パッケージが対象とする特定のディストリビューションを示すためにもよく使用されます。
- パッケージが構築されたアーキテクチャ (i386、i686、x86_64、ppc など)
パッケージ ラベル フィールドはファイル名と一致する必要はありません。
ライブラリのパッケージ
ライブラリは、バージョンごとに 2 つの別々のパッケージで配布されます。1 つには実行時に使用するプリコンパイル済みコードが含まれ、もう 1 つにはヘッダーなどの関連開発ファイルが含まれます。これらのパッケージの名前フィールドには「-devel」が追加されます。システム管理者は、バイナリ パッケージと開発パッケージのバージョンが一致していることを確認する必要があります。
バイナリ形式
フォーマットはバイナリで、4つのセクションで構成されています。[6]
- リードは、ファイルを RPM ファイルとして識別し、いくつかの古いヘッダーが含まれています。
- 署名は、整合性や真正性を保証するために使用できます。
- パッケージ名、バージョン、アーキテクチャ、ファイル リストなどのメタデータを含むヘッダー。
- ファイルアーカイブ(ペイロード)は、通常cpio形式でgzipで圧縮されています。この
rpm2cpioツールを使用すると、RPMパッケージをインストールしなくてもcpioファイルを取得できます。[18]
SPEC ファイル
RPM パッケージを作成するための「レシピ」は、スペック ファイルです。スペック ファイルは「.spec」サフィックスで終わり、パッケージ名、バージョン、RPM リビジョン番号、パッケージの構築、インストール、およびクリーンアップの手順、および変更ログが含まれています。必要に応じて、1 つの RPM スペック ファイルから複数のパッケージを構築できます。RPM パッケージは、rpmbuild ツールを使用して RPM スペック ファイルから作成されます。
スペック ファイルは通常、ソース コードとともにパッケージ化されたスペック ファイルを含む SRPM ファイル内で配布されます。
SRPM
一般的な RPM は、直接インストールできるコンパイル済みのソフトウェアです。対応するソース コードも配布できます。これは SRPM で行われ、ソフトウェアとそのビルド方法を記述した「SPEC」ファイルも含まれています。SRPM では、ユーザーがコード自体をコンパイルしたり、場合によっては変更したりすることもできます。
ソフトウェア パッケージには、プラットフォームに依存しないスクリプトのみが含まれる場合があります。このような場合、開発者は SRPM のみを提供できますが、これは依然としてインストール可能な RPM です。
NOSRC
これはSRPMの特別なバージョンです。これには「SPEC」ファイルとオプションのパッチが含まれていますが、ソースは含まれていません(通常はライセンスのため)。[21]
フォーク
2010 年 6 月現在[アップデート]、開発中の RPM のバージョンは 2 つあります。1 つは Fedora プロジェクトと Red Hat が主導するバージョン、もう 1 つは 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とその派生製品、openSUSE、SUSE Linux Enterprise、Unity Linux、Mageia、[22] OpenEmbedded、Tizen、OpenMandriva Lx(旧Mandriva )などのディストリビューションで使用されています。
RPM v5 (廃止)
1999 年から RPM のメンテナーを務めている Jeff Johnson は、他のディストリビューションの参加者とともに開発作業を続けました。RPM バージョン 5 は 2007 年 5 月にリリースされました。
このバージョンは、 Wind River Linux(Wind River Linux 10まで)、Rosa Linux、OpenMandriva Lx ( 2011年にrpm5に切り替えた旧Mandriva Linux [23] )などのディストリビューションで使用されていたほか、他の一般的なUNIXプラットフォーム用のパッケージを提供する OpenPKGプロジェクトでも使用されていました。
OpenMandriva Lxは4.0リリースでrpm.org [24]に戻りました。 [更新が必要]
RPM5の最後の主要ユーザーであったOpenEmbeddedは、RPM5の問題によりrpm.orgに戻った。[25] [26]
参照
- Autopackage — 「補完的な」パッケージ管理システム
- Delta ISO — RPM パッケージ マネージャー ファイルを含む ISO イメージ
- dpkg — Debian およびその派生製品で使用されるパッケージ管理システム
- RPM ベースの Linux ディストリビューションの一覧
- pkg-config — ソースコードからソフトウェアをコンパイルするためにライブラリを照会する
参考文献
- ^ 「RPM -- 計画、目標など」。Max Spevack。2012年10月6日時点のオリジナルよりアーカイブ。2011年1月20日閲覧。
- ^ 「RPM.org FAQ」。2016年11月5日時点のオリジナルよりアーカイブ。2013年8月25日閲覧。
- ^ ab Bailey, Edward C. (2000)。「第 1 章: パッケージ管理入門」。Maximum RPM: Red Hat パッケージ マネージャーの限界に挑戦。Red Hat, Inc. pp. 22–25。ISBN 978-1888172782. 2016年9月10日時点のオリジナルよりアーカイブ。2013年8月13日閲覧。
- ^ “po/LINGUAS”. GitHub. 2022-04-23. 2022-04-23時点のオリジナルよりアーカイブ。 2022-04-23に取得。
- ^ ab Bailey, Edward C. (2000). 「付録 A: RPM ファイルの形式」。 Maximum RPM: Red Hat パッケージ マネージャーの限界に挑戦。 Red Hat, Inc. pp. 325–336。ISBN 978-1888172782. 2016年4月21日時点のオリジナルよりアーカイブ。2010年11月22日閲覧。
- ^ 「IBM AIX での YUM の構成とローカル リポジトリの作成」 2018 年 10 月 24 日。2020 年 10 月 3 日にオリジナルからアーカイブ。2020年 9 月 3 日に取得。
- ^ 「RPM と Yum は IBM i にとって大きな意味を持ちます。その理由はここにあります」。2018 年 7 月 18 日。2019 年 6 月 29 日時点のオリジナルよりアーカイブ。2020年 9 月 3 日閲覧。
- ^ 「パッケージマネージャー」。2016年3月25日時点のオリジナルよりアーカイブ。2020年9月4日閲覧。
- ^ 「RPM ガイド - RPM - 設計目標」。2014 年 3 月 21 日時点のオリジナルよりアーカイブ。2014 年 4 月 14 日閲覧。
- ^ “BOGUS Announce”. 2013年11月4日時点のオリジナルよりアーカイブ。2014年4月14日閲覧。
- ^ 「rpm4 は Berkeley DB なしで rpm をビルドするためのサポートでした (–disable-bdb)」。FreeBSD フォーラム。2020 年 1 月 29 日。2024 年 2 月 23 日のオリジナルからアーカイブ。2023年 9 月 18 日に取得。
- ^ 「RPM Fusion」。rpmfusion.org。2019年2月11日時点のオリジナルよりアーカイブ。2010年11月22日閲覧。
- ^ 「RPM 検証ドリフトの分析」(PDF)。USENIX 協会。2011年 7 月 28 日のオリジナルからアーカイブ(PDF) 。2011 年 3 月 15 日に取得。
- ^ 「Zypper - MeeGo wiki」。2013年9月25日時点のオリジナルよりアーカイブ。2014年4月14日閲覧。
- ^ 「FAQ: プロジェクトについて」。Ark Linux 公式サイト。2012 年 2 月 11 日時点のオリジナルよりアーカイブ。2014年 4 月 14 日閲覧。
- ^ 「RPM データベースを安全に修復する」。2019 年 8 月 6 日時点のオリジナルよりアーカイブ。2011年 11 月 11 日閲覧。
- ^ 「Supplemental Packaging Software」。Fedora プロジェクト。2016 年 3 月 10 日時点のオリジナルよりアーカイブ。2011 年 11 月 11 日閲覧。
- ^ 「RPM を zstd 圧縮に切り替える」Fedora プロジェクト(Wiki)。2019 年 6 月 2 日時点のオリジナルよりアーカイブ。2019年 6 月 2 日閲覧。
- ^ 「[PATCH] lzip サポートを追加」。2016 年 3 月 4 日時点のオリジナルよりアーカイブ。2013年 10 月 24 日閲覧。
- ^ 「プロプライエタリソフトウェアをパッケージ化する方法」。2014年12月10日。2018年7月2日時点のオリジナルよりアーカイブ。2018年7月2日閲覧。
- ^ 「Mageia 3 リリースノート: パッケージ管理」。mageia.org。2013年 5 月 19 日。2014 年 2 月 7 日にオリジナルからアーカイブ。2014年 4 月 14 日に取得。
- ^ Bodnar, Ladislav & Smith, Jesse (2010-11-22). 「DistroWatch Weekly」. DistroWatch . 2018-06-23時点のオリジナルよりアーカイブ。 2010-11-22に閲覧。
- ^ 「フォーラム: RPMv4 への切り替え」。2022 年 1 月 14 日時点のオリジナルよりアーカイブ。2018 年 3 月 3 日閲覧。
- ^ 「YP Core - Pyro 2.3」。Yocto Project。2017年5月12日。2017年12月5日時点のオリジナルよりアーカイブ。2017年12月4日閲覧。
{{cite web}}: CS1 maint: bot: 元の URL ステータス不明 (リンク)() - ^ 「[Openembedded-architecture] smart から dnf への切り替えによって発生する変更」Yocto Project . 2017-02-14. 2018-11-05 にオリジナルからアーカイブ。2018-11-04に取得。
- Schroeder, Jeff (2008-01-30). 「高度な RPM クエリ文字列」www.digitalprognosis.com。 2011-08-09 にオリジナルからアーカイブ。2018-03-28に取得。
外部リンク
- RPM.org プロジェクトのホームページ
- RPM および DPKG コマンドリファレンス 2016-10-28 にWayback Machineでアーカイブされました
- RPM の物語 アーカイブ: 2013-02-01、archive.todayにMatt Frye が投稿、Red Hat Magazine にアーカイブ: 2007-09-29、Wayback Machineにアーカイブ
- RPM パッケージを作成する方法
- RPM のビルドとパッチ適用に関するビデオチュートリアル
- RPM ノート - RPM を簡単に構築する方法
- RPM によるソフトウェアのパッケージ化、パート 1: パッケージの構築と配布
- Linux 入門: RPM と YUM パッケージ管理
