rpmパッケージを作る手順
rpmパッケージを作るメリット
インストールと削除がセットになっている
rpm -e パッケージ名でインストールした対象をまとめて削除できて管理が楽
依存性を定義できる
作成手順
rpmではdebianパッケージとはまた違った構成でパッケージを作る パッケージ構成についてはspecファイル1つでよい パッケージを構成するソースコードなどの配置は$HOME/rpmbuild/*配下に配置しなければならない
ソースコード: $HOME/rpmbuild/SOURCES
変更もできるけれど今回はやらなかった
試すならDockerコンテナ内で作業すると楽
$ docker run --rm -it centos:7 bash
code:sh
# rpmbuildを使えるようにする
yum groupinstall -y "Development Tools"
yum install -y kernel-devel kernel-headers
mkdir -p $HOME/rpmbuild/{SOURCES,SPECS}
# ダミーファイルを配置
mkdir samplescript
echo 'echo hello world' > samplescript/samplescript
chmod +x samplescript/samplescript
tar czf samplescript.tar.gz samplescript
mv samplescript.tar.gz $HOME/rpmbuild/SOURCES
# specファイルの作成
vim $HOME/rpmbuild/SPECS/app.spec
# パッケージの作成
rpmbuild -bb $HOME/rpmbuild/SPECS/app.spec
# パッケージの確認
find $HOME/rpmbuild/RPMS -name '*.rpm'
# -> /root/rpmbuild/RPMS/x86_64/samplescript-debuginfo-1.0.0-1.el7.x86_64.rpm
# -> /root/rpmbuild/RPMS/x86_64/samplescript-1.0.0-1.el7.x86_64.rpm
# インストールする
rpm -Uvh $HOME/rpmbuild/RPMS/x86_64/samplescript-1.0.0-1.el7.x86_64.rpm
# インストールされていることを確認する
samplescript
# -> hello world と出力される
# 削除を試す
rpm -e samplescript
samplescript
# -> No such file or directory が出力される
specファイルについて
以下の内容を記述
code:control
Summary: このパッケージに関する概要
Name: samplescript
Version: 1.0.0
Release: 1%{?dist}
Group: Applications
License: MIT
Packager: メンテナの名前
Vendor: ベンダー名
Source: samplescript.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
%description
長い説明がアレば書く。
%prep
rm -rf $RPM_BUILD_ROOT
# tar czf samplescript.tar.gz samplescript で作ったディレクトリ名と合わせる
%setup -n %{name}
%build
%install
# この処理は tar で展開したディレクトリ配下に cd したあとに呼ばれる。(%setup -n %{name} の%{name}以降がcd先になる)
# samplescript.tar.gzを展開すると samplescript ディレクトリが作られる。
# 内部的には cd samplescript された後からここのスクリプトが呼ばれる
# よって、samplescriptからの相対パスでinstall処理を書く必要がある。
mkdir -p %{buildroot}/usr/bin
cp -p samplescript %{buildroot}/usr/bin
%clean
rm -rf $RPM_BUILD_ROOT
%post
%postun
%files
%defattr(-, root, root)
/usr/bin/samplescript
%changelog
debianパッケージを作る手順ではDEBIANディレクトリ配下に配置したファイルがそのままインストールされる方法だったのに対し、こちらでは自分でインストール処理を記述している debianパッケージでも自分でインストール処理を記述してインストールするように書くことも可能
rulesファイルというのを作るやりかた
そのやり方だと面倒だったので、上記手順ではrulesを書かない手順にした
デフォルトで$HOME/rpmbuild配下にファイルが必要というの面倒だな
記述量は多いけれど、仕組みがわかれば割とサクッと作れることがわかった
関連