RPM パッケージの作り方
概要
RPM パッケージの作成方法についてまとめます。
手順
環境構築
sudo yum install -y rpmdevtools yum-utils
rpmdev-setuptree
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
Author And Source
この問題について(RPM パッケージの作り方), 我々は、より多くの情報をここで見つけました https://qiita.com/YuHori/items/24f3e83b7d74fbefe749著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .