以前、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 コメント:
コメントを投稿