2009年9月16日水曜日

ユーザ権限でgemをインストール

gemをインストールするにあたって、ユーザ権限でインストールしている。
ユーザ権限でインストールを行なうと、~/.gem配下にインストールされる。

pure rubyのgemの場合には問題無くインストール出来るが、sqlite3-rubyをイ
ンストールする際に、2点程注意点があるので、その備忘録。

なにも考えず、以下のコマンドだとインストールエラーとなった。

gem install


結論から言うと、以下のコマンドでインストール出来た。

env RB_USER_INSTALL= gem install sqlite3-ruby -- \
--with-sqlite3-include=/usr/local/include \
--with-sqlite3-lib=/usr/local/lib


そもそも、sqlite3-rubyはpure rubyのコードでは無く、C言語のソースをコン
パイルしてOSネイティブのライブラリを作成して、インストールされている。

sqlite3-rubyについては、extconf.rbを実行することで、Makefileを作成して、
コンパイルを実施している。他のOSネイティブのライブラリを用意するgemも、
多くはextconf.rbを使用していると思われるので、同様の手順で実施可能であ
ろう。

ライブラリの指定


対象gem固有のextconf.rbオプションの設定について。

gem install sqlite3-ruby -- \
--with-sqlite3-include=/usr/local/include \
--with-sqlite3-lib=/usr/local/lib


gem installをそのまま指定した場合、sqliteのライブラリを見つけることが
出来なかった。~/.gem/ruby/1.8/gems/sqlite3-ruby-1.2.5/README.txtにやり
かたその物が記載されていたので、それを参考に実施。

gem installの引数に、「--」で区切って、extconf.rbに渡す引数を指定する
のがミソのようだ。

ユーザ権限でインストール


extconf.rbを用いてユーザ権限でインストールする方法について。

env RB_USER_INSTALL= gem install 。。。


FreeBSDのextconf.rbはデフォルトではインストール時に、インストールファ
イルをroot権限に変更しようとする。その為、ユーザ権限でインストールしよ
うとしても、ファイルをroot権限に変更出来ないのでエラーとなる。
環境変数 RB_USER_INSTALL を設定してあげれば、ユーザ権限でインストール
が可能になるので、コマンドラインでenvを用いて指定してあげる。

2009年9月13日日曜日

mv: set flags (was: 00000000): Invalid argument

security run outputエラー


FreeBSDで日々送付されるsecurity run output内に、気になるメッセージ
が。。。

mv: /var/log/setuid.today: set flags (was: 00000000): Invalid argument


どうも、ZFSのバージョンによるが、UFS領域からZFS領域にファイルをmvする
とこのメッセージが発生するようです。

私の環境は、ルートがUFSでそれ以外はZFSという設定で、security run
output内のcheck_diff関数で/tmp(UFS)から/var/log(ZFS)にファイルをコピー
するので、上記のメッセージが出ている。

FreeBSDでは、zfsのバージョンは現在3、zpoolのバージョンは現在13となってい
る。私の環境だと、zfs:1/zpool:6となっていて結構古い。これが原因のよう。

(参照) http://www.mail-archive.com/freebsd-stable@freebsd.org/msg104840.html

とりあえずエラーは出るけど、動いてはいるようなので、無視してます。

zfsやzpoolのバージョンを上げれば問題無いみたいだから、上げるのか吉かと。


このmvはどこで呼ばれている?


mvは/etc/periodic/security/security.functionsのcheck_diff関数で使用さ
れています。
check_diff関数は/etc/periodic/security/配下の各ファイルで使われている
みたい。

2009年9月12日土曜日

bsnmpd

bsnmpdツールのインストール。



net-mgmt/bsnmptoolsをインストールすることで、bsnmpwalkを使えるようになる。

/etc/snmpd.configの編集


方針としては、「trapやwriteを無効」「MIBは可能な限り有効」。

@@ -6,18 +6,18 @@
#
# Set some common variables
#
-location := "Room 200"
-contact := "sysmeister@example.com"
+location := "mobile"
+contact := "秘密"
system := 1 # FreeBSD
-traphost := localhost
-trapport := 162
+# traphost := localhost
+# trapport := 162

# Change this!
-read := "public"
+read := "秘密"
# Uncomment begemotSnmpdCommunityString.0.2 below that sets the community
# string to enable write access.
-write := "geheim"
-trap := "mytrap"
+# write := "geheim"
+# trap := "mytrap"

#
# Configuration
@@ -50,9 +50,9 @@
begemotSnmpdLocalPortType."/var/run/snmpd.sock" = 4

# send traps to the traphost
-begemotTrapSinkStatus.[$(traphost)].$(trapport) = 4
-begemotTrapSinkVersion.[$(traphost)].$(trapport) = 2
-begemotTrapSinkComm.[$(traphost)].$(trapport) = $(trap)
+# begemotTrapSinkStatus.[$(traphost)].$(trapport) = 4
+# begemotTrapSinkVersion.[$(traphost)].$(trapport) = 2
+# begemotTrapSinkComm.[$(traphost)].$(trapport) = $(trap)

sysContact = $(contact)
sysLocation = $(location)
@@ -74,10 +74,10 @@
#
# Netgraph module
#
-#begemotSnmpdModulePath."netgraph" = "/usr/lib/snmp_netgraph.so"
-#
-#%netgraph
-#begemotNgControlNodeName = "snmpd"
+begemotSnmpdModulePath."netgraph" = "/usr/lib/snmp_netgraph.so"
+
+%netgraph
+begemotNgControlNodeName = "snmpd"

#
# pf(4) module
@@ -88,10 +88,10 @@
# Host resources module
# This requires the mibII module.
#
-#begemotSnmpdModulePath."hostres" = "/usr/lib/snmp_hostres.so"
+begemotSnmpdModulePath."hostres" = "/usr/lib/snmp_hostres.so"

#
# Bridge module
# This requires the mibII module.
#
-#begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"
+begemotSnmpdModulePath."bridge" = "/usr/lib/snmp_bridge.so"


bsnmpdの起動。


/etc/rc.confに「bsnmpd_enable="YES"」の行を追加して、

# sudo /etc/rc.d/bsnmpd start

を実行することにより、起動。

bsnmpwalkでの動作確認


OIDを文字列にする為に、「-i」オプションでdefファイルを設定。
絶対パスで指定するのが基本みたいだけど、デフォルトでは
「/usr/share/snmp/defs」を検索してくれるので、ファイル名のみを「-i」で
複数する。

bsnmpwalk -i atm_freebsd.def -i hostres_tree.def -i pf_tree.def -i atm_tree.def -i mibII_tree.def -i tree.def -i bridge_tree.def -i netgraph_tree.def -s ”秘密”@localhost


現在有効なOIDの行数を確認すると、9056行だった。

hrProcessorLoad(1.3.6.1.2.1.25.3.3.1.2)


どうもhrProcessorLoadは上手く取得出来ない様子。
(参考) http://www.mail-archive.com/freebsd-stable@freebsd.org/msg100522.html

ここから特に話は進んでない様子。