![]() |
ってなトコかなっ??
今回は、 irc2.10.3p7+hemp2+jp6 をダウンしてきまつた。
あ、ちなみに、 solaris 10 で動かそうとしていまつ。
それと、build 中のエラー回避の為、 source を書きかえていたりしまつ。
それが原因で bug るかもしれないけど、くれぐれも
アーカイブ緩めれば、 ./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 箇所。
でつ。
./sparc-sun-solaris2.10/Makefile をテコ入れしまつ。
vi で開いてもらって・・・
45 行目付近にあるハヅの LIBS に m4 の設定をしまつ。
テコ入れ前 | テコ入れ後 |
---|---|
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" が見つからなくてダメなよーでつ。
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 を見てみると・・・・
手直し前 | 手直し後 |
---|---|
end_of_list: #ifdef LIST_ALIS_NOTE |
end_of_list: ; #ifdef LIST_ALIS_NOTE |
ごらんの通り、セミコロン入れたダケ(^^;)
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 で開いてもらって・・・・
手直し前 | 手直し後 |
---|---|
/* 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:サーバネーム:サーバの IP アドレス:ロケーション:ポート
一例: M:irc.hoge.jp::hoge Inc, Shinjyuku,Tokyo:6667
IRCD サーバの FQDN か ホストネームを書くようです。
「サーバネーム」 に FQDN を設定した場合は、「サーバの IP アドレス」を省略できるようです。
ホストネームを書いた場合は、「サーバの IP アドレス」を記述しないとダメなよーです。
この設定が、 IRC でのサーバネームになります。
IRCD を稼働させるマシンの IP アドレスを書いて下さい。
「サーバネーム」 を FQDN で記述していれば省略可能です。
IRCD サーバを設置している大まかな地名を記述しておけば良いと思います。
このポートの設定は、他の IRCD サーバから来る UDP-ping の為に記述するようです。
他の(外部の)サーバは、このポートに自動接続するように設定しなくてはいけません。
通常は、デフォルトの6667 とかで良いと思います。
A コマンドは、 IRCD サーバの管理者の情報を書いておきます。
A:admin の名前とか場所:admin の mailアドレス:備考::
一例: A:hoge-hoge - hoge Inc, Shinjyuku,Tokyo:hoge@hoge.local.jp:hogehoge::
管理者の名前と IRCD サーバを設置している地名とかを書きます。
は、そのまんま、admin のメールアドレスを書いてくらさい。
お好きなことを書いて下さい。
P コマンドは IRCD サーバのポート情報を書いておきます。
P:サーバのIPアドレス:*:IPアドレスのマスク:ポート:I-NETドメイン利用時
または、
P:ソケットのディレクトリ:*:*:ポート:UNIXドメイン利用時
P::::6667: P:192.168.126.127:::6661: P:::192.167.*.*:6662: P:::202.219.0.0:6663: P:/tmp/ircd:*:*:6664: |
ってな感じのようです。
他の IRCD サーバの IP アドレスを記述します。
"0" と "*" がワイルド カードに使えます。
空欄にしておくと、サーバ全ての IP アドレスを指定したことになります。
接続要求のあった他の IRCD サーバの IP アドレスによって、接続を許可 / 不許可を決定できます。
ワイルドカードを使用した場合、ワイルドカードの条件に一致する場合に許可されるようです。
/etc/rc3.d/S99ircd /etc/init.d/ircd とでもしておいてくらさい。
#!/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 にしていまつ。
必要に応じて書き換えて使ってくらさい。