RPMをつくる

SRPMからRPMを作る方法のメモです。RPMでインストールすると、アプリの管理が楽でいいですよね。

サーバにアプリをインストールするときに、「RPMじゃなきゃインストールしないよっ」とかサーバ管理者から言われちゃう時に。

以下はvimSRPMからRPMを作るときの例です。

ツールの準備

まず、RPM作成に必要なツールyumでインストールする。

 $ su
 # yum grouplist
 # yum groupinstall "Development Tools"
 # yum groupinstall "Development Libraries"
 # yum install rpm-build
 # yum install yum-utils
 # yum install gcc autoconf

SRPMの準備

SRPM*1をソースリポジトリからダウンロードする。

参考:ITmedia LinuxTips「SRPMって何?」

SRPMyumでインストールするために、yumリポジトリ情報を追加する
 $ su
 # touch /etc/yum.repos.d/CentOS-Source.repos
 # vim /etc/yum.repos.d/CentOS-Source.repos
 
 //以下の内容をCentOS-Source.reposに書いて保存
 //---ここから---
 # CentOS-Source.repo
 
 [base-source]
 name=CentOS-$releasever - Base Source
 baseurl=http://ftp2.riken.jp/Linux/centos/5.3/os/SRPMS/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 
 #released updates
 [updates-source]
 name=CentOS-$releasever - Updates Source
 baseurl=http://ftp2.riken.jp/Linux/centos/5.3/updates/SRPMS/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

 [extras-source]
 name=CentOS-$releasever - Extras Source
 baseurl=http://ftp2.riken.jp/Linux/centos/5.3/extras/SRPMS/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 
 #additional packages that extend functionality of existing packages
 [centosplus-source]
 name=CentOS-$releasever - Plus Source
 baseurl=http://ftp2.riken.jp/Linux/centos/5.3/centosplus/SRPMS/
 gpgcheck=1
 enabled=0
 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
 
 //---ここまで---

[保存して終了]

ビルド用ディレクトリと rpmマクロ定義ファイルを作成

適当な場所にビルド用ディレクトリとマクロ定義ファイルを作る。作業は一般ユーザでやること。

 $ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}   
   //ディレクトリを作る
 
 $ echo "%_topdir $HOME/rpm" >> ~/.rpmmacros
   //マクロを定義。先に作ったディレクトリ ~/rpm 以下にRPMがインストールされるようにする。
SRPMをダウンロード

yumdownloaderを使ってSRPMをダウンロードする。

 $ su
 # yumdownloader --enablerepo=base-source --source vim
  //SRPMダウンロード用リポジトリを有効にして、vimのソースをダウンロード
SRPMをインストール

ダウンロードしたSRPMをインストールする。

 //vimのSRPMをインストールする場合の例
 
 # rpm -ivh vim-7.0.109-3.el5.3.src.rpm
  //インストール
 
 # rm vim-7.0.109-3.el5.3.src.rpm
  //src.rpmファイルは不要になるので削除しておく

SPECファイルの編集

~/rpm/SPECS/<アプリ名>.spec を編集する。

  • 編集する箇所
    • 編集する箇所は用途によって異なる。たとえば、コンパイルオプションを書き換えるなら「%configure〜」と書いてある部分を書き換える。
    • 編集をしたら「%changelog」と書いてある場所の下に変更日付、変更者名、変更内容を書き込む。

ビルドする

 $ rpmbuild -ba --target i686 --define 'dist .el5' ~/rpm/SPECS/<アプリ名>.spec
                      //↑環境に合わせてアーキテクチャを記入
 
 $ ls ~/rpm/RPMS/<アーキテクチャ>
 
 // vimのRPMを作ったときの出力例
 $ ls ~/rpm/RPM/i686/
 
 vim-X11-7.0.109-4.el5.4z.i686.rpm    vim-enhanced-7.0.109-4.el5.4z.i686.rpm
 vim-common-7.0.109-4.el5.4z.i686.rpm  vim-minimal-7.0.109-4.el5.4z.i686.rpm
 vim-debuginfo-7.0.109-4.el5.4z.i686.rpm

RPMをインストールする

RPMコマンドを実行すると、アプリをインストールできる。

 $ su
 # rpm -ivh <RPMファイル名>.rpm

*1:RPMを作成可能なソースパッケージ。ソースコード、パッチ、specファイルなどのRPM作成に必要なファイル一式が含まれている。