2011年4月15日金曜日

CentOS5にcairoインストールでハマる

どうも、俺@ハマってばっかりです。

CentOS5にrrdtoolをソースからインストールする場合、色んなパッケージも一緒にインストールする必要があります。
yumで一発インストールすればすべて解決なので、そんな便利な物使えない時ってありますよね。。。いや、なくてもソースからconfigureオプション指定してキチっとインストールしたい場合ありますよね。

rrdtoolをインストールする際にはざっと
・zlib
・libpng
・freetype-2
・fontconfig
・libpango
・libcairo
・libpixman
が必要になります。他にもgdとかも必要かな。

今日はその中のcairoをインストールする際にハマったのでメモメモ。
./configureコマンドで
configure: error: pixman >= 0.10.0 is required
と出てしまい、「こりゃpixmanってやつインストしなあかんねんな」と思いpixmanをググって探します。
pixman-0.20.2あったので
# wget http://cairographics.org/releases/pixman-0.20.2.tar.gz
 # tar zxvf pixman-0.20.2.tar.gz
 # cd pixman-0.20.2
 # ./configure
 # make
 # make install
でインストしました。
# ls /usr/local/lib
libpixman-1.a
libpixman-1.la
libpixman-1.so
libpixman-1.so.0
libpixman-1.so.0.20.2
ちゃんとインストされてます。
# cd /path/to/cairo
 # ./configure
configure: error: pixman >= 0.10.0 is required
あれれ!?また同じエラーが、、

pixmanライブラリを認識していないでは?と思い
# vim /etc/ld.so.conf
------------------------------
/usr/local/lib

# ldconfig
としてもダメ。
# ./configure --libdir=/usr/local/lib
としてもダメ。



そんな時は
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/lib/pkgconfig
としてみてください。
きっと解決するはず。
詳しくはman pkg-configに。


以上でぇぇえぇす。

2011年4月13日水曜日

CentOS4.3にnode.jsをインストールする

どうも、俺@お仕事中です。
忘れないうちにメモメモします。

CentOS4.3にnode.js(0.4.2)をインストールした時少しハマりました。
まずは本体をDL。
# wget 'http://nodejs.org/dist/node-v0.4.2.tar.gz'
次に解凍しいつものやつ。
# tar zxvf node-v0.4.2.tar.gz
# cd node-v0.4.2
# ./configure
まずここでズッコけました。

Pythonのバージョンが2.4以上でないとconfigureできないようです。
# python -V
Python 2.3.4
ズッコケた場合は、各々の環境に合わせてインストールされているPythonのバージョンを上げてください。
僕の環境では古いバイナリをアンインストールし、新しいバージョンのものをソースから再インストールしました。
# python -V
Python 2.7
次にmake。
# ./configure 
# make
ここでまたズッコけました。
/mnt/src/node-v0.4.2/deps/v8/src/platform-linux.cc:587: error: `PR_SET_NAME' was not declared in this scope
/mnt/src/node-v0.4.2/deps/v8/src/platform-linux.cc:587: warning: unused variable 'PR_SET_NAME'
scons: *** [obj/release/platform-linux.o] Error 1
scons: building terminated because of errors.
Waf: Leaving directory `/mnt/src/node-v0.4.2/build'
Build failed:  -> task failed (err #2): 
        {task: libv8.a SConstruct -> libv8.a}
make: *** [program] エラー 1
この 'PR_SET_NAME' というのが問題らしいのですが、この記述があるものをコメントアウトしちゃいます。
# grep -r 'PR_SET_NAME' *
deps/v8/src/platform-linux.cc://  prctl(PR_SET_NAME, thread->name(), 0, 0, 0);
src/platform_linux.cc://  prctl(PR_SET_NAME, process_title);
2ファイル出てきたので両方とも該当行をコメントアウトします。
これでインストールはスムーズにいくはずです。
# make
# make install
おわり!


以上でぇぇぇぇえぇぇぇぇえぇす。

2011年4月1日金曜日

iptablesでipマスカレード設定

どうも、俺@週末です。

iptablesを使ってipマスカレードの設定めもめも。
ローカル回線しかないLinuxサーバでもきちんとデフォルトゲートウェイの設定をしてあげれば、ローカルサーバからグローバルのデータを取得することは出来ます。

・グローバルサーバ(192.168.0.10:ゲートウェイとなる)ローカル回線とグローバル回線
・ローカルサーバ(192.168.0.11) ローカル回線のみ
とします。

まずグローバル側の設定から始めましょう。
// グローバルサーバ
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
普通はこんな感じ。
// グローバルサーバ
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -s 192.168.0.0/24
# iptables -L -t nat
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@ss79 cadox]# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  192.168.1.0/24       anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ふむふむ、ちゃんと設定されている。
次に転送設定。
// グローバルサーバ
# iptables -P FORWARD ACCEPT
# service iptables save
かなりザックリですが。。
// グローバルサーバ やり方は色々ありますが、、
# vim /etc/sysctl.conf
----------------------------------
net.ipv4.ip_forward = 1

# sysctl -p
または
// グローバルサーバ
echo 1 > /proc/sys/net/ipv4/ip_forward
など。。

次にローカルサーバ側でデフォルトゲートウェイの設定を行います。
// ローカルサーバ
# route add default gw 192.168.0.10
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
xxx.xxx.xx.xx   *               255.255.0.0     U     0      0        0 eth1
default         192.168.0.10    0.0.0.0         UG    0      0        0 eth1 // ←できてる
再起動しても設定がリセットされないように
// ローカルサーバ
# vim /etc/sysconfig/network
----------------------------
GATEWAY=192.168.0.10 # ←追加
これでOK!

以上でぇぇぇえっぇぇす。