0
0

More than 5 years have passed since last update.

RPM パッケージの作り方

Last updated at Posted at 2019-02-23

概要

RPM パッケージの作成方法についてまとめます。

手順

環境構築

sudo yum install -y rpmdevtools yum-utils
rpmdev-setuptree

以下のように、rpm パッケージを作成する上で必要な環境が整います(便利!)

[vagrant@localhost sample-rpm-pkg]$ ls -l ~/rpmbuild/
insgesamt 0
drwxrwxr-x 2 vagrant vagrant 6 23. Feb 14:08 BUILD
drwxrwxr-x 2 vagrant vagrant 6 23. Feb 14:08 RPMS
drwxrwxr-x 2 vagrant vagrant 6 23. Feb 14:08 SOURCES
drwxrwxr-x 2 vagrant vagrant 6 23. Feb 14:08 SPECS
drwxrwxr-x 2 vagrant vagrant 6 23. Feb 14:08 SRPMS

ディレクトリ構成

今回は次のようなディレクトリ構成としました。

[vagrant@localhost vagrant]$ tree sample-rpm-pkg/
sample-rpm-pkg/
|-- Makefile
|-- bin
|   `-- sample-rpm-pkg.sh
`-- sample-rpm-pkg.spec

以下に説明を加えます。

bin/sample-rpm-pkg.sh

rpm パッケージに含めるファイル。
今回はrpm パッケージインストール時に、このshell ファイルがインストールされるように作成します。

[vagrant@localhost sample-rpm-pkg]$ cat bin/sample-rpm-pkg.sh
#!/bin/sh

echo "sample-rpm-pkg"

spec ファイル

rpm パッケージを作る上での設定を記載するファイルとなります。

[vagrant@localhost sample-rpm-pkg]$ cat sample-rpm-pkg.spec
Name:       sample-rpm-pkg
Version:    1%{?dist}
Release:    1
Summary:    Sample RPM package
License:    FIXME

BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot

%description
Sample Rpm Package

%prep
rm -rf $RPM_BUILD_ROOT

%build

%install
mkdir -p %{buildroot}/usr/bin/
install -m 755 /usr/bin/sample-rpm-pkg.sh %{buildroot}/usr/bin/sample-rpm-pkg.sh

%files
/usr/bin/sample-rpm-pkg.sh

%changelog
# let skip this for now

それぞれの意味については、以下に詳しく書かれています。
https://vinelinux.org/docs/vine6/making-rpm/make-spec.html

簡単にやっていることをまとめると、
- %install で必要なファイルを%{buildroot} 以下に全て詰め込む
- %files で、rpm パッケージとして含むファイルを指定

Makefile

こちらは必須ではないですが、make タスクとしてまとめておくと便利なので作成しました。

[vagrant@localhost sample-rpm-pkg]$ cat Makefile
setup:
    sudo yum install -y rpmdevtools yum-utils
    rpmdev-setuptree

install:
    sudo install -m 755 bin/sample-rpm-pkg.sh /usr/bin/sample-rpm-pkg.sh

package:
    rpmbuild -bb *.spec --define "dist .el7"

package を作成

[vagrant@localhost sample-rpm-pkg]$ make install && make package
sudo install -m 755 bin/sample-rpm-pkg.sh /usr/bin/sample-rpm-pkg.sh
rpmbuild -bb *.spec --define "dist .el7"
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.mYmJqo
+ umask 022
+ cd /home/vagrant/rpmbuild/BUILD
+ rm -rf /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
+ exit 0
実行中(%build): /bin/sh -e /var/tmp/rpm-tmp.YtZZLS
+ umask 022
+ cd /home/vagrant/rpmbuild/BUILD
+ exit 0
実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.wpX99m
+ umask 022
+ cd /home/vagrant/rpmbuild/BUILD
+ '[' /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64 '!=' / ']'
+ rm -rf /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
++ dirname /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
+ mkdir -p /home/vagrant/rpmbuild/BUILDROOT
+ mkdir /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
+ mkdir -p /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64/usr/bin/
+ install -m 755 /usr/bin/sample-rpm-pkg.sh /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64/usr/bin/sample-rpm-pkg.sh
+ '[' '%{buildarch}' = noarch ']'
+ QA_CHECK_RPATHS=1
+ case "${QA_CHECK_RPATHS:-}" in
+ /usr/lib/rpm/check-rpaths
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
ファイルの処理中: sample-rpm-pkg-1.el7-1.x86_64
Provides: sample-rpm-pkg = 1.el7-1 sample-rpm-pkg(x86-64) = 1.el7-1
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/sh
パッケージに含まれないファイルの検査中: /usr/lib/rpm/check-files /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
書き込み完了: /home/vagrant/rpmbuild/RPMS/x86_64/sample-rpm-pkg-1.el7-1.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.xFVE1m
+ umask 022
+ cd /home/vagrant/rpmbuild/BUILD
+ /usr/bin/rm -rf /home/vagrant/rpmbuild/BUILDROOT/sample-rpm-pkg-1.el7-1.x86_64
+ exit 0

これで、以下にrpm パッケージが作成できました。

[vagrant@localhost sample-rpm-pkg]$ clear
[vagrant@localhost sample-rpm-pkg]$ ls /home/vagrant/rpmbuild/RPMS/x86_64/sample-rpm-pkg-1.el7-1.x86_64.rpm
/home/vagrant/rpmbuild/RPMS/x86_64/sample-rpm-pkg-1.el7-1.x86_64.rpm
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0