以前、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}_2.suzlab_1
132c132
---
> 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