Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第1章 RPM のパッケージ化の使用

次のセクションでは、RPM パッケージ化の概念とその主な利点を説明します。

1.1. RPM のパッケージ化の概要

RPM Package Manager (RPM) は、RHEL、CentOS、および Fedora で実行できるパッケージ管理システムです。RPM を使用することで、上記のオペレーティングシステム用に作成したソフトウェアを配布、管理、および更新できます。

1.2. RPM の利点

RPM パッケージ管理システムは、従来のアーカイブファイルでのソフトウェア配布に比べて、いくつかの利点があります。

RPM を使用すると、以下が可能になります。

  • Yum、PackageKit などの標準パッケージ管理ツールを使用した、パッケージのインストール、再インストール、削除、アップグレード、および検証。
  • インストール済みのパッケージのデータベースを使用した、パッケージのクエリーおよび検証。
  • メタデータを使用した、パッケージ、インストール手順、その他のパッケージパラメーターの記述。
  • ソフトウェアソース、パッチ、完全なビルド命令の、ソースパッケージおよびバイナリーパッケージへのパッケージ化。
  • Yum リポジトリーへのパッケージの追加。
  • GNU Privacy Guard (GPG) 署名鍵を使用した、パッケージへのデジタル署名。

1.3. 最初の RPM パッケージ作成

RPM パッケージの作成は複雑になる可能性があります。以下では、複数のことをスキップし、簡素化した完全で利用できる RPM Spec ファイルです。

Name:       hello-world
Version:    1
Release:    1
Summary:    Most simple RPM package
License:    FIXME

%description
This is my first RPM package, which does nothing.

%prep
# we have no source, so nothing here

%build
cat > hello-world.sh <<EOF
#!/usr/bin/bash
echo Hello world
EOF

%install
mkdir -p %{buildroot}/usr/bin/
install -m 755 hello-world.sh %{buildroot}/usr/bin/hello-world.sh

%files
/usr/bin/hello-world.sh

%changelog
# let's skip this for now

このファイルを hello-world.spec として保存します。

ここで、以下のコマンドを使用します。

$ rpmdev-setuptree
$ rpmbuild -ba hello-world.spec

コマンド rpmdev-setuptree は、複数の作業ディレクトリーを作成します。これらのディレクトリーは $HOME に永続的に格納されているため、このコマンドを再び使用する必要はありません。

コマンド rpmbuild は、実際の rpm パッケージを作成します。このコマンドの出力は、以下のようになります。

... [SNIP]
Wrote: /home/<username>/rpmbuild/SRPMS/hello-world-1-1.src.rpm
Wrote: /home/<username>/rpmbuild/RPMS/x86_64/hello-world-1-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.wgaJzv
+ umask 022
+ cd /home/<username>/rpmbuild/BUILD
+ /usr/bin/rm -rf /home/<username>/rpmbuild/BUILDROOT/hello-world-1-1.x86_64
+ exit 0

/home/<username> /rpmbuild/RPMS/x86_64/hello-world-1-1.x86_64.rpm ファイルは最初の RPM パッケージです。これはシステムにインストールしてテストできます。