logo header
logo header
logo header
logo header
  • 2016.10.28
  • インフラ技術ブログ

RPMパッケージを作ってみよう④SPECファイルから自作する方法

rpm logo

札幌は一度雪が積もり、すっかり冬将軍の勢力が強くなってきました。風邪をこじらせて抗生物質のお世話になっているkirksenchoです、こんにちは。

さて、連載4回目の「RPMパッケージを作ってみよう」シリーズ。前回はRPMパッケージを作成する為の環境構築について書いてみました。

▼前回の記事

RPMパッケージを作ってみよう③パッケージ作成環境構築

今回は、SPECファイルをゼロから書いて、RPMパッケージを作成する方法について書いてみたいと思います。

そもそもSPECファイルとは?

前回の記事で、ビルドに必要なファイルの一つという事を記載していましたが、改めてSPECファイルとはなんぞや?というところを説明してみたいと思います。

一言で言うと、RPMパッケージを作る上でのレシピが書かれているテキストファイルです。

rpmbuildコマンドに、そのSPECファイルを与える事で、どんなRPMパッケージをどうやって作成するのか?の詳細な設定や流れを指定することができます。
これが無いと、rpmbuildは何をどうやって作れば良いのか分かりませんので、非常に重要なファイルという事になります。
SPECファイルには様々な情報を記載しますが、以下に詳細を説明していきたいと思います。

SPECファイルに含まれる情報について

SPECファイルには、大きく分類して、以下の情報に分かれます。

1.パッケージについての情報
2.パッケージをインストールする為の処理内容
3.パッケージに含まれるファイルリスト
4.パッケージの変更履歴

それぞれ大事な意味を持っており、rpmのコマンドで各種情報を表示させたり、変更履歴を表示させたりするコマンド実行時にも利用されます。

SPECファイルの記載例

以下にファイルを指定場所にインストールする簡単なパッケージを作成できるSPECファイルの例を記載します。

これだけ見ても、なかなかピンと来ないと思いますので、以下に各部分に分けた説明を記載します。

パッケージの基本情報部分について

パッケージをインストールする処理部分について

パッケージに含まれるファイルリスト部について

パッケージの変更履歴部について

ビルド実行

前回の説明にも記載しましたが、完成したspecファイルを引数にして、rpmbuildコマンドを実行すると、RPMパッケージが所定のディレクトリに作成されます。

おわりに

4回に渡って、RPMパッケージについての記事を連載させていただきましたが、今回で一旦終わりたいと思います。

今回のSPECファイルは一番簡単な部類で、LinuxカーネルのパッケージのSPECファイル等を見ると、ビルド処理の部分もあり、非常に複雑になっています。

興味の有る方は、カーネルのSPECファイルを見たり、自分でカスタムカーネルパッケージをビルドしたりしてみると、面白いと思いますので、チャレンジしてみてください。

参考サイト

日本語の情報サイトは少なく、且つしばらく更新されておりませんが、以下を参考にさせて頂きました。

https://linuxjf.osdn.jp/JFdocs/archive/RPM-BUILD-HOWTO.html
https://vinelinux.org/docs/vine6/making-rpm/vine-making-rpm.html
http://www.02.246.ne.jp/~torutk/linux/centos5/rpmpackagebuild.html

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!