2013年1月12日土曜日

"jq"のRPM化(CentOS 6.3)

スズキです。

以前、下記でPython版のAWSコマンドラインツールを紹介しましたが
Python版AWSコマンドラインツールをCentOS6で使ってみた
デフォルトでの出力だJSON形式となっていました。
# aws --region=ap-northeast-1 ec2 describe-instances
{
    ...
}

一見、JSONでの出力は扱いづらそうに見えますが、下記の"jq"と呼ばれるプログラムを
利用することで、逆に簡単に出力を調整することができるようになります。

http://stedolan.github.com/jq/


基本的にはソースからビルドしてインストールするのですが、せっかくなので、
下記のようにSPECファイルを作成してRPMからインストールしてみました。

suz-lab-centos-ami/share/rpmbuild/SPECS/jq.spec at master
%define version 1.2

Summary: Command-line JSON processor
Name   : jq
Version: %{version}
Release: 0%{?dist}.suzlab_1
Source0: jq-%{version}.tar.gz
URL    : https://github.com/stedolan/jq
License: BSD
Group  : Applications/System

%description
jq is a command-line JSON processor

%prep

%setup

%build
echo "Building in: \"$(pwd)\""
make

%install
echo "Installing to: \"${RPM_BUILD_ROOT}\""
install -d -m 0755 ${RPM_BUILD_ROOT}/usr/bin
install -m 0755 jq ${RPM_BUILD_ROOT}/usr/bin

%clean
rm -rf ${RPM_BUILD_ROOT}

%files
%defattr(-,root,root)
%{_bindir}/jq

%changelog
* Sat Jan 12 2013 Hiroyasu Suzuki <suzuki@suz-lab.com> - 1.2-0_1
- Initial Release

%pre

%post

RPM作成前の準備


ビルドに必要なパッケージをインストールします。
# yum -y install make flex bison gcc
...

SPECファイルの取得
# cd /opt/suz-lab/
# rm -rf var/log/syslog/all.log
# git pull
...
※今回は"SUZ-LAB AMI"上での作業なので"git pull"してます。

RPM作成時の設定ファイルの作成
# cat .rpmmacros 
%_topdir /opt/suz-lab/share/rpmbuild

RPMの作成


ソースファイルの準備
# cd /opt/suz-lab/share/rpmbuild/SOURCES/
...
# curl -OL https://github.com/stedolan/jq/archive/jq-1.2.tar.gz
...
# tar xvzf jq-1.2.tar.gz 
jq-jq-1.2/
...
# mv jq-jq-1.2 jq-1.2
# tar cvzf jq-1.2.tar.gz jq-1.2
※展開時のディレクトリがjq-1.2となるようにしています。

いつもの"rpmbuild -ba"です。
 # cd /opt/suz-lab/share/rpmbuild/SPECS/
 # rpmbuild -ba jq.spec 
...

RPMのインストールと確認


いつもの"rpm -Uvh"です。
# cd /opt/suz-lab/share/rpmbuild/RPMS/x86_64
# rpm -Uvh jq-1.2-0.el6.suzlab_1.x86_64.rpm
...

"jq"を使って、最初のコマンド(EC2情報を取得)からインスタンスIDのみ抜き出してみます。
# aws --region=ap-northeast-1 ec2 describe-instances \
> | jq ' .reservationSet | .[] | .instancesSet | .[]  | .instanceId '
"i-aaaaaaaa"
"i-bbbbbbbb"
"i-cccccccc"
"i-dddddddd"

"SUZ-LAB Repository"に入れたいなー...
--------
http://www.suz-lab.com

0 コメント: