Amazon Linux用 hiredis/cjose/mod_auth_openidc RPMパッケージの作り方

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは植木和樹@上越妙高オフィスです。Amazon Linux向けにRPMを作ったので、その作り方をまとめました。

先日ApacheでAuth0認証を行なうための mod_auth_openidc を紹介しました。ただAmazon Linux向けのrpmファイルがなかったので、ソースからビルドしていました。

これだと後々の管理が手間なので、ちゃんとrpmファイルにしておきたいなと思い、十数年ぶりにSPECファイルと格闘しながらRPMを作ってみました。

バージョン

  • Amazon Linux 2015.09, 2016.09 それぞれでビルドできることを確認しています。
  • hiredis ... 0.13.3
  • cjose ... 0.4.1
  • mod_auth_openidc ... 2.1.5

SPECファイル

gist にアップしました。SPECファイルを書くのに慣れてないのでおかしな点があればご指摘ください。 mod_auth_openidc RPM spec files for Amazon Linux · GitHub

SPECファイルは下記をベースとしました。cjoseはSPECファイルの修正なしでビルドできました。

  • hiredis ... https://searchcode.com/codesearch/raw/18392723/
  • cjose ... https://raw.githubusercontent.com/zandbelt/mod-auth-openidc-dist/master/centos/cjose.spec.inc
  • mod_auth_openidc ... http://pkgs.fedoraproject.org/cgit/rpms/mod_auth_openidc.git/plain/mod_auth_openidc.spec

ビルド方法

前準備

前回のブログにも書いたビルドに必要なパッケージをインストールしておきます。

$ sudo yum install autoconf automake gcc httpd24 httpd24-devel libcurl-devel openssl-devel pcre-devel -y
$ sudo yum install --enablerepo=epel jansson jansson-devel -y

さらに今回はrpmbuildでRPMファイルを作るのでこれらもインストールします。

$ sudo yum install rpm-build check-devel

rpmをビルドするのに必要なディレクトリを作成します。

mkdir -p $HOME/rpm/{BUILD,SRPMS,SPECS,SOURCES,RPMS}
echo "%_topdir $HOME/rpm" > ~/.rpmmacros

SPECファイルの準備

gistにアップしたSPECファイルをビルドするAmazon Linuxにダウンロードしておいてください。

$ curl -LO https://gist.github.com/anonymous/6cc8ce58c3472b6bd26ddefc92983c0d/archive/1631b296c15a33b4995147415132d2ebb583336d.zip
$ unzip unzip 1631b296c15a33b4995147415132d2ebb583336d.zip.zip
$ mv 1631b296c15a33b4995147415132d2ebb583336d/*.spec ~/rpm/SPECS/

hiredis

hiredisのexamplesコンパイル時に要求するヘッダーファイルをインストールします。

$ sudo yum install libevent-devel glib2-devel -y
$ sudo yum install libev-devel -y --enablerepo=epel 

ソースファイルをダウンロードしてビルドします。

$ curl -Lo ~/rpm/SOURCES/hiredis-v0.13.3.zip https://github.com/redis/hiredis/archive/v0.13.3.zip
$ rpmbuild -bb ~/rpm/SPECS/hiredis.spec

rpmファイルができたらインストールします。

$ sudo rpm -ivh rpm/RPMS/x86_64/hiredis-*

cjose

ソースファイルをダウンロードしてビルドします。バージョンに <strong>0.4.1</strong> を指定してビルドしてください。

$ curl -Lo $HOME/rpm/SOURCES/cjose-0.4.1.tar.gz https://github.com/pingidentity/mod_auth_openidc/releases/download/v2.1.3/cjose-0.4.1.tar.gz
$ rpmbuild -bb $HOME/rpm/SPECS/cjose.spec --define 'release 0.4.1'

rpmファイルができたらインストールします。

$ sudo rpm -ivh rpm/RPMS/x86_64/cjose-0.4.1-1.amzn1.x86_64.rpm

mod_auth_openidc

ソースファイルをダウンロードしてビルドします。<strong>_with-hiredis</strong>のフラグをたててhiredis付きでコンパイルします。

$ curl -Lo $HOME/rpm/SOURCES/mod_auth_openidc-2.1.5.tar.gz https://github.com/pingidentity/mod_auth_openidc/archive/v2.1.5.tar.gz
$ rpmbuild -bb $HOME/rpm/SPECS/mod_auth_openidc.spec --define '_with-hiredis 1'

rpmファイルができたらインストールします。

$ sudo rpm -ivh rpm/RPMS/x86_64/mod_auth_openidc-2.1.5-2.amzn1.x86_64.rpm

なお mod_auth_openidc では下記のファイルがインストールされます。

$ rpm -qpl rpm/RPMS/x86_64/mod_auth_openidc-2.1.5-2.amzn1.x86_64.rpm
/etc/httpd/conf.d/auth_openidc.conf
/etc/httpd/conf.modules.d/10-auth_openidc.conf
/usr/lib64/httpd/modules/mod_auth_openidc.so
/usr/share/doc/mod_auth_openidc-2.1.5
/usr/share/doc/mod_auth_openidc-2.1.5/AUTHORS
/usr/share/doc/mod_auth_openidc-2.1.5/ChangeLog
/usr/share/doc/mod_auth_openidc-2.1.5/DISCLAIMER
/usr/share/doc/mod_auth_openidc-2.1.5/README.md
/usr/share/licenses/mod_auth_openidc-2.1.5
/usr/share/licenses/mod_auth_openidc-2.1.5/LICENSE.txt
/var/cache/httpd/mod_auth_openidc
/var/cache/httpd/mod_auth_openidc/cache
/var/cache/httpd/mod_auth_openidc/metadata

まとめ

今回はRPMの作成方法についての備忘録でした。

Amazon LinuxのリポジトリにはCentOS/Ubuntuほどたくさんのパッケージは揃っていません。しかし野良ビルドすると、あとあと環境変更をする時に大変になります。またrpmを作っておけば複数台のサーバーにインストールする時にも簡単に展開できて便利です。

一手間かけてもrpmを作って管理するようにしたいですね。