Go to TOP Page
Google:


□オフィシャル・サイト


○source はこのアタリからダウンしてくらはい。

http://www.ircnet.jp/

ってなトコかなっ??
今回は、 irc2.10.3p7+hemp2+jp6 をダウンしてきまつた。
あ、ちなみに、 solaris 10 で動かそうとしていまつ。
それと、build 中のエラー回避の為、 source を書きかえていたりしまつ。
それが原因で bug るかもしれないけど、くれぐれも

自己責任で。
つまり、そーゆーことでつ。



□configure しましょう


○アーカイブをデコードすると、

アーカイブ緩めれば、 ./irc2.10.3p7+hemp2+jp6 ってディレクトリができてるよねっ?
カレントにして、おもむろに configure しましょう。

configure が終わると、./irc2.10.3p7+hemp2+jp6/sparc-sun-solaris2.10 とかってディレクトリが作られていて、


表示されるメッセージ
Have you read doc/README? (I hope so)
Next cd sparc-sun-solaris2.10, edit "config.h" and "Makefile",
run "make all" to build and "make install" to install.

こんなメッセージが表示されまつ。
素直に指示に従いましょう。(#^_^#;)
必要に応じて ./sparc-sun-solaris2.10/config.h を編集しなくっちゃいけないんだけど・・・
良く解らないのでそのまんまっす。
んで、 make を始めたいトコロでつが、エラーが出て build できません。
テコ入れすべきとこわ、3 箇所。

でつ。

○m4 の lib を call できるようにしてをく。

./sparc-sun-solaris2.10/Makefile をテコ入れしまつ。
vi で開いてもらって・・・
45 行目付近にあるハヅの LIBS に m4 の設定をしまつ。

m4 lib 設定
テコ入れ前 テコ入れ後
LIBS = -lnsl -lsocket -lcrypt LIBS = -lnsl -lsocket -lcrypt -lm

LIBS ぢゃなくても、 LDFLAGS アタリでもおk だと思いまつ。
ちなみに、 m4 設定しなかった場合、ld がこのゃぅなエラーメッセージが出しまつ。


表示されるエラーメッセージ
Building version.c...
gcc -O2 -g -I. -I../ircd -I../common -c -o version.o version.c
gcc -R/usr/local/lib -o ircd bsd.o dbuf.o packet.o send.o match.o parse.o support.o version.o channel.o class.o hash.o ircd.o list.o res.o s_auth.o s_bsd.o s_conf.o s_debug.o s_err.o s_id.o s_misc.o s_numeric.o s_serv.o s_service.o s_user.o s_zip.o whowas.o res_init.o res_comp.o res_mkquery.o -lz -lnsl -lsocket -lcrypt
Undefined first referenced
symbol in file
pow ircd.o
sqrt hash.o
__switch_gethostbyname s_bsd.o
ld: fatal: Symbol referencing errors. No output written to ircd
collect2: ld returned 1 exit status
make: *** [ircd] Error 1

"pow" が見つからなくてダメなよーでつ。


○../ircd/channel.c:3260: error: label at end of compound statement 対策

compile していくと、../ircd/channel.c の 3260 行付近のステートメントが間違ってるって叱られるけど・・・
表示されるエラーは・・・・


表示されるエラーメッセージ
gcc -O2 -g -I. -I../ircd -I../common -c -o bsd.o ../common/bsd.c
gcc -O2 -g -I. -I../ircd -I../common -c -o dbuf.o ../common/dbuf.c
gcc -O2 -g -I. -I../ircd -I../common -c -o packet.o ../common/packet.c
gcc -O2 -g -I. -I../ircd -I../common -DFNAME_USERLOG="\"/usr/local/var/log/ircd/users\"" -DFNAME_CONNLOG="\"/usr/local/var/log/ircd/rejects\"" -c -o send.o ../common/send.c
gcc -O2 -g -I. -I../ircd -I../common -c -o match.o ../common/match.c
gcc -O2 -g -I. -I../ircd -I../common -c -o parse.o ../common/parse.c
gcc -O2 -g -I. -I../ircd -I../common -c -o support.o ../common/support.c
gcc -O2 -g -I. -I../ircd -I../common -c -o channel.o ../ircd/channel.c
../ircd/channel.c: In function `free_channel':
../ircd/channel.c:2152: warning: use of cast expressions as lvalues is deprecated
../ircd/channel.c: In function `m_list':
../ircd/channel.c:3260: error: label at end of compound statement
make: *** [channel.o] Error 1
example@hoge%

エラーは 3260 行って表示でつが、手直しするべきは、 3249 行付近。
channel.c を見てみると・・・・


../ircd/channel.c の 3260 行付近
手直し前 手直し後
end_of_list:
#ifdef LIST_ALIS_NOTE
end_of_list:
;
#ifdef LIST_ALIS_NOTE

ごらんの通り、セミコロン入れたダケ(^^;)


○gethostbyname を solaris10 に合うようにしてをく。

ld がエラーを吐き出しまつ。
エラーメッセージはこんなかんぢ。


表示されるエラーメッセージ
Building version.c...
gcc -O2 -g -I. -I../ircd -I../common -c -o version.o version.c
gcc -R/usr/local/lib -o ircd bsd.o dbuf.o packet.o send.o match.o parse.o support.o version.o channel.o class.o hash.o ircd.o list.o res.o s_auth.o s_bsd.o s_conf.o s_debug.o s_err.o s_id.o s_misc.o s_numeric.o s_serv.o s_service.o s_user.o s_zip.o whowas.o res_init.o res_comp.o res_mkquery.o -lz -lnsl -lsocket -lcrypt
Undefined first referenced
symbol in file
__switch_gethostbyname s_bsd.o
ld: fatal: Symbol referencing errors. No output written to ircd
collect2: ld returned 1 exit status
make: *** [ircd] Error 1

__switch_gethostbyname が見つからないそーな('・ω・`)ショボーン。
比較的古い solaris 2.x と新し目の solaris2.x では gethostbyname の仕様が違うようでつ。

詳しい方、
フォロー求ム

なので、 solaris2.3 以降の仕様に合うようにしてやれば良いモヨウ。
テコ入れすべきは、./sparc-sun-solaris2.10/setup.h の 120〜125 行目付近でつ。
vi で開いてもらって・・・・


./solaris2.10/setup.h の 120〜125 行付近
手直し前 手直し後
/* Define if the operating system is Solaris 2.x (SunOS 5.x). */
#define SOLARIS_2 1

/* Define if the operating system is Solaris 2.3 (SunOS 5.3). */
/* #undef SOLARIS_2_3 */
/* Define if the operating system is Solaris 2.x (SunOS 5.x). */
/* #define SOLARIS_2 1 */

/* Define if the operating system is Solaris 2.3 (SunOS 5.3). */
#define SOLARIS_2_3 1

#define SOLARIS_2 1 をコメントにして、 #undef されてた SOLARIS_2_3 を復活させまつた。
末尾の "1" も忘れないでね。
んで、いよいよ make です。

gethostbyname の warninng がいっぱいでるけど見逃して(^^;)
もっと良い方法をご存知でしたら、

教えてくらさい。

install が終われば、 /usr/local/sbin/ircd が install されているハヅ。
あとは、環境設定。



□コンフィギュレーションファイルの設定


○ふつーにインストールしていれば、

/usr/local/etc/example.conf って ファイルがコンフィギュレーション ファイルのサンプルです。
そいつ を /usr/local/etc/ircd.conf ってファイルネームで cp してくらはい。

○M コマンド

M:サーバネーム:サーバの IP アドレス:ロケーション:ポート
一例: M:irc.hoge.jp::hoge Inc, Shinjyuku,Tokyo:6667


○「サーバネーム」

IRCD サーバの FQDN か ホストネームを書くようです。
「サーバネーム」 に FQDN を設定した場合は、「サーバの IP アドレス」を省略できるようです。
ホストネームを書いた場合は、「サーバの IP アドレス」を記述しないとダメなよーです。
この設定が、 IRC でのサーバネームになります。


○「サーバの IP アドレス」

IRCD を稼働させるマシンの IP アドレスを書いて下さい。
「サーバネーム」 を FQDN で記述していれば省略可能です。


○「ロケーション」

IRCD サーバを設置している大まかな地名を記述しておけば良いと思います。


○「ポート」

このポートの設定は、他の IRCD サーバから来る UDP-ping の為に記述するようです。
他の(外部の)サーバは、このポートに自動接続するように設定しなくてはいけません。
通常は、デフォルトの6667 とかで良いと思います。


○A コマンド

A コマンドは、 IRCD サーバの管理者の情報を書いておきます。

A:admin の名前とか場所:admin の mailアドレス:備考::
一例: A:hoge-hoge - hoge Inc, Shinjyuku,Tokyo:hoge@hoge.local.jp:hogehoge::


○「admin の名前とか場所」

管理者の名前と IRCD サーバを設置している地名とかを書きます。


○「admin の mail アドレス」

は、そのまんま、admin のメールアドレスを書いてくらさい。


○「備考」

お好きなことを書いて下さい。


○P コマンド

P コマンドは IRCD サーバのポート情報を書いておきます。

P:サーバのIPアドレス:*:IPアドレスのマスク:ポート:I-NETドメイン利用時
または、
P:ソケットのディレクトリ:*:*:ポート:UNIXドメイン利用時

○P コマンド一例


P コマンド一例
P::::6667:
P:192.168.126.127:::6661:
P:::192.167.*.*:6662:
P:::202.219.0.0:6663:
P:/tmp/ircd:*:*:6664:

ってな感じのようです。


○「サーバのIPアドレス」

他の IRCD サーバの IP アドレスを記述します。
"0" と "*" がワイルド カードに使えます。
空欄にしておくと、サーバ全ての IP アドレスを指定したことになります。


○「IPアドレスのマスク」

接続要求のあった他の IRCD サーバの IP アドレスによって、接続を許可 / 不許可を決定できます。
ワイルドカードを使用した場合、ワイルドカードの条件に一致する場合に許可されるようです。


□起動スクリプト


○S99ircd

/etc/rc3.d/S99ircd /etc/init.d/ircd とでもしておいてくらさい。


S99ircd の一例
#!/bin/sh
#
# ircd
# LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:
PATH=/usr/bin:/usr/local/bini:.:
export LD_LIBRARY_PATH PATH

if [ ! -f /usr/local/etc/ircd.conf ]; then
    echo "ircd not install.\n"
    exit 0
fi
case "$1" in
start)
    su nobody -c "/usr/local/sbin/ircd"
    echo "ircd stat....\n"
    ;;
stop)
    echo "Stopped ircd daemon.\n"
    pkill -9 ircd
    ;;
*)
    echo "Usage: $0 { start | stop }"
    ;;
esac
exit 0

root で動かしておくのが不安なかんぢがするので、nobody にしていまつ。
必要に応じて書き換えて使ってくらさい。





go back    next
Copyright(c) ORATORIO-TANGRAM.com 2001-2007 All Rights Reserved.
Total:counter