share facebook facebook2 twitter menu hatena pocket slack

2013.02.14 THU

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

鈴木 宏康

WRITTEN BY鈴木 宏康

以前、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

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。