2012年12月30日日曜日

HistoryをSyslogに出力BashのRPMを作ってみた(CentOS6)

スズキです。

以前、BashのHistoryをSyslogに出力する方法を紹介しました。
BashのHistoryをSyslogに出力(CentOS6)
この時はBashをソースからコンパイルし、バイナリは"/usr/local/bin/bash"に配置され、
パッケージ(yum)で入れた"/bin/bash"と二つ存在する状態になっていました。

今回はパッケージ(yum)で入れた"bin/bash"をアップデートする形になように、
上記のBashをRPMとして作成してみました。

準備(必要パッケージのインストールをSRPMのインストール)


ビルドに必要なパッケージとBashのソースRPMをインストールします。
# yum -y install rpm-build texinfo bison ncurses-devel autoconf gettext gcc make
# cd /root/
# rpm -Uvh http://vault.centos.org/6.3/os/Source/SPackages/bash-4.1.2-9.el6_2.src.rpm
# cd rpmbuild/SPECS/

SPECファイルの編集


リリースバージョン(Release)と"make"のオプション(-DSYSLOG_HISTORY)を調整します。
# diff bash.spec.org bash.spec
8c8
< Release: 9%{?dist}
---
> Release: 9%{?dist}_2.suzlab_1
132c132
< make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS`"
---
> make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS` -DSYSLOG_HISTORY"
上記のBashをソースからビルドしなおした記事では、ソース(config-top.h)を直接
編集してましたが、make(gcc)のオプションをつけることで、実はソースをいじらなくても
可能でした...

SPECファイルからRPMの作成しインストール

"bash"と"bash-doc"というRPMパッケージが作成されます。
# rpmbuild -ba bash.spec
# cd ../RPMS/x86_64/
# ls -1
bash-4.1.2-9.el6_2.suzlab_1.x86_64.rpm
bash-doc-4.1.2-9.el6_2.suzlab_1.x86_64.rpm
# rpm -Uvh bash-4.1.2-9.el6_2.suzlab_1.x86_64.rpm 

ログインしなおして"/var/log/message"の確認

無事、Historyが出力されました!
# tail /var/log/messages
...
Dec 30 15:49:40 ip-10-200-32-9 -bash: HISTORY: PID=20513 UID=0 tail /var/log/messages

次は"Direct Hosting & Cache Distribution"パターンで作成したRPMを
"yum"リポジトリとして公開です。
--------
http://www.suz-lab.com

0 コメント: