2009年5月19日火曜日

vimインストールで'os_unix.c:45:30 error: selinux/selinux.h: No such file or directory'というエラーが出る

どうも俺です。
僕は新しいサーバが到着したらまず行うのがログインシェルの設定です。
次にvimのインストール(ソース)なのですが、make でこけまくったのでメモします。

OSはCentOS5.3。vimは7.2です。

まずソースをダウンロード
# wget 'ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2'
# wget 'ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz'
# wget 'ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz'
します。
次に解凍
# tar jxvf vim-7.2.tar.bz2
# tar zxvf vim-7.2-lang.tar.gz
# tar zxvf vim-7.2-extra.tar.gz
します。
次に僕はいつもパッチを当てます(※当てなくても良いと思う)
# cd vim72
# mkdir patches
# cd patches
# curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.[001-182]'
... ここでパッチファイルをDLするのをしばし待つ ...
# cd ..
# cat patches/7.2.* | patch -p0
# ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big
# make && make install
なのですが、今回ここのmakeでずっこけました。
エラー内容は
os_unix.c:45:30: error: selinux/selinux.h: No such file or directory
os_unix.c: In function 'mch_copy_sec':
os_unix.c:2620: warning: implicit declaration of function 'is_selinux_enabled'
os_unix.c:2624: error: 'security_context_t' undeclared (first use in this function)
os_unix.c:2624: error: (Each undeclared identifier is reported only once
os_unix.c:2624: error: for each function it appears in.)....
というエラー文言がズラズラと、、。

「ん~面倒くさい、、、」となりました。
一応os_unix.cファイルなど眺めて見たものの長すぎるため5分で終了。
どうもselinux関連のエラーっぽいので、再度configureオプションを確かめる。
# ./configure --help | less
とすると
  --disable-selinux       Don't check for SELinux support.
「ん!」らしきオプションがあるじゃないか!
というわけでこのオプションを付けてmakeすればインストールできました。

深い原因調査はまた今度、または偉い人に聞いてみてください( ´艸`)

2009年5月12日火曜日

linuxで操作ログを残すscriptコマンド

あまり使わないかもしれませんが、ユーザの実行したコマンドの履歴は
$ history
で確認することが可能です。
これでも十分ですが、もう一つ
$ script log_filename.log
とすることで、log_filename.logにログを残すことが可能です。

ロギングを終了する場合は、
$ exit
または
$ Ctrl + D
で終了します。

2009年5月9日土曜日

svn(subversion)でtracが文字化け

subversionので利用されるtracはデフォルトでutf8で表示されます。
プログラムソースをsjisやeuc-jpで書いた場合、tracを表示すると文字化けが起こります。
これを解決するには
$ svn propset svn:mime 'text/plain; charset=euc-jp' *.php ←euc-jpの場合
$ svn commit -m "commit"
でOKです。

svnのコマンドの
$ svn proplist svn:mime xxx.php
とやればxxx.phpに設定されているプロパティを確認することができます。(-vオプションで詳細も表示)

2009年5月8日金曜日

iptablesで"ip_conntrack"エラーが出る場合

iptablesはパケットフィルタリングを行う便利な機能です。
設定したパケットを追跡するために
/proc/net/ip_conntrack
というファイルへパケット情報を記録、追跡します。

これがたまに大規模なシステムになると
# vim /var/log/messages
ip_conntrack: maximum limit of xxxx entries exceeded
というメッセージが表示される場合があります。

原因は、iptablesで追跡するパケットの上限数を超えてしまっているからです。
その上限数は
/proc/sys/net/ipv4/ip_conntrack_max
に書かれているのですが、システムで自動的に設定されています。

対処法は
# echo '100000' > /proc/sys/net/ipv4/ip_conntrack_max
と上限数を上げてあげるか、または
# vim /etc/sysctl.conf
net.ipv4.ip_conntrack_max = 100000
# sysctl -p
のようにしてあげるか、で大丈夫です。

/proc/sys/net/ipv4/ip_conntrack_maxの上限値は、搭載メモリーに依存するらしいので、増やしすぎには注意が必要です。

追跡中のip_conntrackの数を調べるには
# cat /proc/net/ip_conntrack | wc -l
で分かります。

大規模システムにもなると、外部システムとの連携などでptablesの監視パケットの数が膨大になるので注意が必要ですね。