ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
要点
- RPM(.rpm)は、Red Hat 系(RHEL、Fedora、CentOS Stream、Rocky Linux、AlmaLinux、openSUSE など)で標準のバイナリパッケージ形式。
- 名称は元々 "Red Hat Package Manager" の略だったが、現在は再帰的に "RPM Package Manager" とされる。
- 内部はカスタムヘッダ +
cpioアーカイブ。ビルドにはspecファイルが必要で、ソース RPM(.src.rpm)からバイナリ RPM を再現できる。 - 低レベル操作は
rpm、依存解決込みの上位ツールはdnf(旧yum)/zypper。
概要
RPM は 1997 年に Red Hat Linux 2.0 で導入され、以降 Linux のエンタープライズ領域における事実上の標準として広く普及した。DEB と並ぶ「Linux 二大パッケージ形式」の一翼を担う存在で、特に商用ディストリ(RHEL、SLES など)のサポート対象範囲を決める根拠となっている。
DEB がテキストメタデータとシェルスクリプト中心の設計なのに対し、RPM は強くスキーマ化されたバイナリヘッダを持ち、トランザクション処理や GPG 署名検証、ファイル単位の SHA256 検証などをパッケージマネージャ側に組み込んでいる点が特徴である。
内部構造
RPM ファイルは 4 つのセクションから構成される。
- Lead — 96 バイトの固定長ヘッダ(古い RPM との互換用、現在ほぼ識別用途のみ)
- Signature — GPG 署名や SHA-256 ハッシュなど、整合性確認のためのブロック
- Header — パッケージ名・バージョン・依存・提供・スクリプトなど、すべてのメタデータが「タグ ID + 型 + 値」形式で並ぶバイナリ表現
- Payload — 実体ファイル群。
cpioアーカイブをgzip/xz/zstdで圧縮したもの
ビルドの起点となる spec ファイルは、ソースをどう取得し、どうコンパイルし、どこへインストールし、どんなメタデータを付けるかを宣言的に記述する。最小例は次のような形になる。
Name: hello
Version: 2.10
Release: 1%{?dist}
Summary: GNU Hello
License: GPLv3+
URL: https://www.gnu.org/software/hello/
Source0: %{name}-%{version}.tar.gz
BuildRequires: gcc, make
%description
The GNU Hello program produces a familiar, friendly greeting.
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%{_bindir}/hello
%{_mandir}/man1/hello.1*
「.src.rpm」と呼ばれるソース RPM は、spec とソース tarball、パッチを一つにまとめたもので、これがあれば同一バイナリ RPM を再生成できる(再現可能ビルドの基礎)。
主な用途
- エンタープライズ Linux のパッケージ管理 — RHEL の数万 RPM が
dnfを介して提供される。 - 商用ソフトの配布 — Oracle Instant Client、IBM 製品、各種商用エージェントは RPM 配布が一般的。
- ベンダーリポジトリ — EPEL、RPM Fusion、Remi、Microsoft、Docker、HashiCorp などが独自リポジトリを公開している。
- 社内パッケージ運用 —
createrepo_cでメタデータを生成し、HTTP/S3 上に置けば社内 yum/dnf リポジトリになる。
関連形式との比較
- vs DEB — DEB は
ar+ tar、メタデータはテキスト。RPM は cpio + バイナリヘッダ、署名やトランザクションが標準。dnf 側はトランザクション履歴(dnf history)でロールバック可能。 - vs AppImage — AppImage はシステムに統合しないポータブル形式。RPM は OS と依存を共有する正攻法のインストール手段。
- vs Flatpak — Flatpak はランタイム + サンドボックス前提。RPM はシステム本体への配置で、よりカーネル/glibc 結合度が高い。
- vs MSI — どちらも宣言的なインストール定義(spec / Windows Installer データベース)を持つが、RPM は spec ファイルがテキスト、MSI は MSI データベース(実体は アーカイブに近い構造)。
コマンド・ツール
rpm -ivh package.rpm— インストール(i=install、v=verbose、h=hash 進捗)rpm -Uvh package.rpm— アップグレード(既存があれば置き換え、なければインストール)rpm -e <name>— 削除rpm -qa— インストール済み一覧rpm -qi <name>— 詳細情報rpm -ql <name>— 含まれるファイル一覧rpm -qf /path/to/file— ファイルの所属パッケージ逆引きrpm -V <name>— インストール後の改変チェック(SHA256・パーミッション・所有者など)rpm --checksig package.rpm— GPG 署名検証dnf install / update / remove / history— 依存解決とトランザクション履歴管理rpmbuild -ba foo.spec— spec から RPM をビルドmock/koji— クリーンな chroot 内での公式ビルド環境
注意点
- GPG 鍵のインポートと検証を必ず行う。野良 RPM をルート権限でインストールするのは EXE の出所不明実行と同等に危険。
- ディストリビューションとメジャーバージョン依存が強い。RHEL 8 用 RPM を RHEL 7 に入れると glibc / Python のバージョン違いで動かない。
- 古い
--force/--nodepsは最後の手段。依存を強引にねじ込むとrpmデータベース(/var/lib/rpm)が壊れる事故が起きやすい。 - RPM データベース破損時は
rpm --rebuilddbで再構築する。バックアップを取ってから実施するのが望ましい。 - ファイル名規約は
<name>-<version>-<release>.<arch>.rpm。DEB がアンダースコア区切りなのに対し RPM はハイフン区切り。間違えやすい。
関連リンク
- 実行ファイル・パッケージ(親カテゴリ)
- ファイル拡張子とは(概論)
- DEB(.deb)(Debian 系の対抗形式)
- AppImage(.appimage)(Linux ポータブル配布)
- MSI(.msi)(Windows Installer パッケージ)
- DMG(.dmg)(macOS 配布イメージ)
- アーカイブ・圧縮形式(payload は cpio + xz/zstd)
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?