irc (Internet Relay Chat server)

[ 戻る | トップページに戻る ]

概要

irc とは IRC (Internet Relay Chat) のサーバープログラムである。 CHOCOA (Windows 用) などの各種 IRC クライアントから接続して おしゃべりおしゃべり。(^^;

URL

ftp://ftp.kyoto.wide.ad.jp/IRC/server/

インストール環境

Plamo Linux 1.4.4 (Kernel 2.2.12 + libc5)
Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)
Slackware 7.0 (Kernel 2.2.17 + glibc 2.1.2)

必要なもの

特になし

バージョン

2.10.3+jp6

インストール手順 (for Plamo 1.4.4)

$ tar xvfz irc2.10.3+jp6.tgz
$ cd irc2.10.3+jp6
$ ./configure
(snip)
checking whether select or poll system call will be used... poll
configure: warning: Aiiie.. This is linux.  poll() is known to be broken for some releases
           (2.0.x with libc6?). You may want to edit setup.h to undefine USE_POLL
checking for signal implementation... using POSIX sigaction
checking for a working non-blocking system... using POSIX O_NONBLOCK
checking for working stdarg... yes
checking for resolver configuration file... /etc/resolv.conf
checking whether this is an alpha/beta release... no
updating cache ./config.cache
creating ./config.status
creating Makefile
creating version.c.SH
creating sums
creating tkconf.h
creating setup.h
Have you read doc/README? (I hope so)
Next cd i686-pc-linux-gnulibc1, edit "config.h" and "Makefile",
run "make all" to build and "make install" to install.

./doc/INSTALL.txt に従って作業する。cd i686-pc-linux-gnulibc1;
setup.h を編集し、#define USE_POLL 1 を #undef に変更。 ...だけど、今回は 2.2.x カーネルだからそのままにする。 config.h で INSTALL.txt 2.1 項にある UNIX 種別を設定...と思ったが、 そんな定義どこにもなーい。飛ばす。とりあえず 2.x 項は他に修正するところなし。 コンパイル実行だ。
$ make

Choose one of the following:
        all            : build everything
        server         : build server programs
                ircd          : build the irc daemon
                iauth         : build the authentication slave
                chkconf       : build the configuration file checker
                ircd-mkpasswd : build ircd-mkpasswd
                ircdwatch     : build ircdwatch
        client          : build the client
        tkserv  : build tkserv

        install        : build and install server and client programs
        install-server : build and install server programs
        install-client : build and install client program
        install-tkserv : build and install tkserv

およ? make all じゃないとダメなのね。
$ make all
(snip)
gcc -o ircdwatch clsupport.o clmatch.o ircdwatch.o
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o clbsd.o ../common/bsd.c
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o cldbuf.o ../common/dbuf.c
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o clpacket.o ../common/packet.c
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o clsend.o ../common/send.c
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o clparse.o ../common/parse.c
gcc -O2 -g -I. -I../irc -I../common -DCLIENT_COMPILE -c -o c_bsd.o ../irc/c_bsd.c
../irc/c_bsd.c: In function `client_loop':
../irc/c_bsd.c:110: `LINES' undeclared (first use this function)
../irc/c_bsd.c:110: (Each undeclared identifier is reported only once
../irc/c_bsd.c:110: for each function it appears in.)
make: *** [c_bsd.o] Error 1

むう。.../i686-pc-linux-gnulibc1/Makefile を以下のように修正する。
C_CFLAGS = -O2 -g -I/usr/include/ncurses -I. -I../irc -I../common
                  ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾追加

また、.../irc2.10.3+jp6/common./os.h に
/*  Curses/Termcap portability problems (client only).
 */

#ifdef CLIENT_COMPILE
#if USE_NCURSES || USE_CURSESX || USE_CURSES
# define DOCURSES
# if USE_CURSESX && HAVE_CURSESX_H
#  include 
# endif
# if (USE_NCURSES || USE_CURSES) && HAVE_CURSES_H
#  if HAVE_NCURSES_H
#   include <ncurses.h>
#  else
#   include <curses.h>
#  endif
# endif
#else
# undef DOCURSES
#endif /* USE_NCURSES || ... */

#include <curses.h>         <--- 追加

再度コンパイル。今度は成功〜。そのままインストール実行。
$ make all
$ su
# make install

ありゃ。バイナリは /usr/local/sbin に入るのか。ま、いいか。
では設定。 .../irc2.10.3+jp6/doc/example.conf を /etc に ircd.conf としてコピー (INSTALL.txt によると .../irc2.10.3+jp6/i686-pc-linux-gnulibc1/config.h で指定した場所に置けとあるが、そんな指定なーい) 。
ircd.conf を編集して ircd を起動。あれ? 何も表示されないし、ps で見ても、 デーモンいない。むー。ircd -f /etc/ircd.conf すると...
# ircd -f /etc/ircd.conf
Usage: ircd [-a] [-b] [-c] [-h servername] [-q] [-o] [-i] [-T tunefile] [-p (strict|on|off)] [-s] [-v]
Server not started

あれ? man ircd を見る限り、-f オプションあるんだけどなぁ。chkconf を動かすと...
initconf(): ircd.conf = /usr/local/etc/ircd.conf

ふむ。mv /etc/ircd.conf /usr/local/etc する (よく見れば、/usr/local/etc/ に example.conf がある) 。ircd を実行。ようやく ircd が起動。特に問題なし。 irchat や CHOCOA からアクセスできる。

インストール手順 (for Slackware 7.0/Plamo 2.2.1)

$ tar xvfz irc2.10.3+jp6.tgz
$ cd irc2.10.3+jp6
$ ./configure
(snip)
checking whether select or poll system call will be used... poll
configure: warning: Aiiie.. This is linux.  poll() is known to be broken for some releases ¥
(2.0.x with libc6?).  You may want to edit setup.h to undefine USE_POLL
checking for signal implementation... using POSIX sigaction
(snip)
$ cd i586-pc-linux-gnu
$ make all
(snip)
gcc -O2 -g -I. -I../ircd -I../common  -c -o res.o ../ircd/res.c
gcc -O2 -g -I. -I../ircd -I../common  -c -o s_auth.o ../ircd/s_auth.c
gcc -O2 -g -I. -I../ircd -I../common  -DIRCDPID_PATH="¥"/usr/local/var/run/ircd.pid¥"" ¥
    -DIAUTH_PATH="¥"/usr/local/sbin/iauth¥"" -DIAUTH="¥"iauth¥"" -c -o s_bsd.o ../ircd/s_bsd.c
../ircd/s_bsd.c: In function `read_message':
../ircd/s_bsd.c:2032: `POLLWRNORM' undeclared (first use in this function)
../ircd/s_bsd.c:2032: (Each undeclared identifier is reported only once
../ircd/s_bsd.c:2032: for each function it appears in.)
make: *** [s_bsd.o] Error 1

むう。Plamo 1.4.4 の場合とちがーう。 調べてみると、POLLWRNORM は /usr/include/asm/poll.h および /usr/include/bits/poll.h に定義されている。 そして ../irc2.10.3+jp6/common/os.h に以下の定義がある。
#if HAVE_SYS_POLL_H
# if linux
/* Linux is just soooo broken */
#  define _GNU_SOURCE 1
# endif
# include 
# if linux && !defined(POLLRDNORM)
/* Linux 2.1.xx supports poll(), header files are not upto date yet */
#  define POLLRDNORM 0x0040
# endif
#endif

../i586-pc-linux-gnu/setup.h に HAVE_SYS_POLL_H は定義されており、 /usr/include/sys/poll.h では /usr/include/bits/poll.h をインクルードしている。 /usr/include/bits/poll.h の中身は以下の通り。
(snip)
#ifdef __USE_XOPEN
/* These values are defined in XPG4.2.  */
# define POLLRDNORM     0x040           /* Normal data may be read.  */
# define POLLRDBAND     0x080           /* Priority data may be read.  */
# define POLLWRNORM     0x100           /* Writing now will not block.  */
# define POLLWRBAND     0x200           /* Priority data may be written.  */
#endif
(snip)

うーむ。POLLWRNORM が有効になっていないのは、__USE_XOPEN が定義されていない から? ../irc2.10.3+jp6/common/os.h を以下のように修正。
#if HAVE_SYS_POLL_H
# if linux
/* Linux is just soooo broken */
#  define _GNU_SOURCE 1
# endif
#define __USE_XOPEN                <--- 追加
# include 
# if linux && !defined(POLLRDNORM)
/* Linux 2.1.xx supports poll(), header files are not upto date yet */
#  define POLLRDNORM 0x0040
# endif
#endif

これで make は通るが...。いいのかな? (^^;
とりあえずは問題なく動作している。
$ make
$ su
# make install
# exit

[ 戻る | トップページに戻る ]