Everybuddy (A chat program for X)

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

概要

Everybuddy とは、AIM, ICQ, MSN, Yahoo, Jabber をサポートした、 統合インスタントメッセージング・クライアント。

URL

http://www.everybuddy.com/ (Official Site)
http://www16.u-page.so-net.ne.jp/xb4/katsumi/os/linux/im/everybuddy.html (日本語化パッチ)

インストール環境

Plamo Linux 2.2.1 (Kernel 2.2.19 + glibc 2.2)
Slackware 7.0 (Kernel 2.2.14 + glibc 2.1.2)

必要なもの

libiconv (Slackware 7.0 の場合)

バージョン

0.2.1beta6

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

$ tar xvfz everybuddy-0.2.1beta6.tar.gz
$ cd everybuddy-0.2.1beta6
$ gzip -dc everybuddy-20010915-JA.patch.gz | patch -p1
$ ./configure --with-gnome --enable-panel --enable-japanese
$ make
$ su
# make install
# exit

ただし...実行すると Segmentation Falt で落ちる。 が、もう一度実行すると、ちゃんと起動する。(^^;
# 詳しくは Slackware の場合を参照。

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

$ tar xvfz everybuddy-0.2.1beta6.tar.gz
$ cd everybuddy-0.2.1beta6
$ gzip -dc everybuddy-20010915-JA.patch.gz | patch -p1
$ ./configure --with-gnome --enable-panel --enable-japanese
$ make
(snip)
gcc -DPACKAGE=\"everybuddy\" -DVERSION=\"0.2.1beta6\" -DUNIX=1 -DSTDC_HEADERS=1 -DHAVE_SYS_WAIT_H=1 \
    -DHAVE_PATHS_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SGTTY_H=1 -DHAVE_MALLOC_H=1 -DHAVE_SYS_IOCTL_H=1 \
    -DHAVE_SYS_FILE_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_CDEFS_H=1 \
    -DHAVE_FCNTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETOPT_H=1 -DHAVE_ICONV_H=1 \
    -DHAVE_GETOPT_LONG=1 -DHAVE_GETOPT=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_STRCHR=1 \
    -DHAVE_MEMCPY=1 -DHAVE_SOCKET=1 -DHAVE_STRDUP=1 -DHAVE_STRSTR=1 -DHAVE_ATEXIT=1 \
    -DHAVE_STRSEP=1 -DHAVE_GETHOSTBYNAME2=1 -DHAVE_STRTOK_R=1 -DHAVE_PUTENV=1 -DHAVE_STRCHR=1 \
    -DHAVE_MEMCPY=1 -DHAVE_MEMMOVE=1 -DHAVE_WAITPID=1 -DHAVE_GETLOGIN=1 -DHAVE_STRERROR=1 \
    -DHAVE_RANDOM=1 -DHAVE_LRAND48=1 -DHAVE_GETHOSTID=1 -DHAVE_GETSID=1 -DHAVE_GETPGID=1 \
    -DHAVE_X11_SM_SMLIB_H=1 -DHAVE_LIBSM=1 -DUSE_APPLET=1 -DUSE_GNOME=1 -DHAVE_MIT_SAVER_EXTENSION=1 \
    -DHAVE_SNPRINTF=1 -DHAVE_LIBNSL=1 -DHAVE_LIBSOCKET=1  -I. -I. -I/usr/X11R6/include \
    -I/usr/lib/glib/include -g -O2 -I/usr/local/include -I/opt/include -I../ -D_REENTRANT \
    -Wall -g -DESD_SOUND -I/usr/X11R6/include -I/usr/lib/glib/include -I/usr/include \
    -DNEED_GNOMESUPPORT_H -I/usr/lib/gnome-libs/include -I/usr/lib/glib/include \
    -I/usr/X11R6/include -DJAPANESE -I../src -I../libproxy -I.. -I/usr/lib/glib/include \
    -I/usr/X11R6/include -I/usr/lib/glib/include -c msn_commands.c
msn_commands.c: In function `SetProtocol':
msn_commands.c:112: warning: int format, long int arg (arg 4)
msn_commands.c: In function `GetServerPolicyInfo':
msn_commands.c:157: warning: implicit declaration of function `isdigit'
msn_commands.c: In function `HandleMessage':
msn_commands.c:633: `CODESET' undeclared (first use in this function)
msn_commands.c:633: (Each undeclared identifier is reported only once
msn_commands.c:633: for each function it appears in.)
msn_commands.c: In function `SendMessage':
msn_commands.c:740: `CODESET' undeclared (first use in this function)
msn_commands.c: At top level:
msn_commands.c:455: warning: `StrToUtf8' defined but not used
msn_commands.c:484: warning: `Utf8ToStr' defined but not used
make[1]: *** [msn_commands.o] Error 1
make[1]: Leaving directory `/usr/local/src/everybuddy-0.2.1beta6/libmsn'
make: *** [all-recursive] Error 1

うーむ。うまくいった Plamo と比較してみると、/usr/include/langinfo.h の CODESET 回りの定義が違っているのが原因らしい。 glibc のアップデートが必要ってこと!?

それは面倒なので (^^; 逃げる。 /usr/include/langinfo.h の該当部分は以下の通り。
  _NL_CTYPE_WIDTH,
  _NL_CTYPE_MB_CUR_MAX,
  _NL_CTYPE_CODESET_NAME,
#ifdef __USE_XOPEN
  CODESET = _NL_CTYPE_CODESET_NAME,
#endif
  _NL_NUM_LC_CTYPE,

この先を追ってみた結果、 __USE_XOPEN を定義すればいい ---> /usr/include/features.h をインクルード & _GNU_SOURCE を定義すればいい、 という訳で、./libmsn/msn_command.c を以下のように修正する。
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#define _GNU_SOURCE         <--- 追加
#include <features.h>       <--- 追加

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

では、再コンパイル
$ make
(snip)
gcc -g -O2 -I/usr/local/include -I/opt/include -I../ -D_REENTRANT -Wall -g -DESD_SOUND \
    -I/usr/X11R6/include -I/usr/lib/glib/include -I/usr/include -DNEED_GNOMESUPPORT_H \
    -I/usr/lib/gnome-libs/include -I/usr/lib/glib/include -I/usr/X11R6/include -DJAPANESE \
    -I.. -I../libproxy -I../libfaim -I../libjabber/include/jabber -I../libjabber/include \
    -I../libxode/include -I../zephyr/h -o everybuddy main.o contactlist.o editcontacts.o \
    service.o icq.o status.o account.o aim-toc.o info_window.o chat_window.o util.o \
    add_contact_window.o edit_contact_window.o add_unknown_account.o sound.o about.o \
    dialog.o prefs.o yahoo.o away_window.o browser.o message_parse.o progress_window.o \
    chat_room.o account_scanner.o account_parser.tab.o contact_scanner.o contact_parser.tab.o \
    value_pair.o msn.o jabber.o edit_group_window.o importicq.o importlicq.o log_window.o \
    gtkspell.o trigger.o console_session.o gtk_eb_html.o gtksctext.o input_list.o zephyr_mod.o \
    irc.o -lpthread -L../libmsn -lmsn -L../libyahoo -lyahoo -L../libproxy -lproxy -L../libtoc \
    -ltoc -L../libicq -licq -L../libjabber -lEBjabber -ljabber -L../libxode -lxode -L../zephyr \
    -lzephyr -L/usr/lib -lesd -laudiofile -lm -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic \
    -lgmodule -lglib -ldl -lXext -lX11 -lm -rdynamic -L/usr/lib -L/usr/X11R6/lib -rdynamic \
    -lpanel_applet -lgnorba -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lgnomeui -lart_lgpl \
    -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -lXext -lX11 -lgnome -lgnomesupport -lesd \
    -laudiofile -lm -ldb -lglib -ldl -rdynamic -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk \
    -lgdk -lgmodule -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -lm -ldb -lglib -ldl -lXss
chat_window.o: In function `recode_if_needed':
/usr/local/src/everybuddy-0.2.1beta6/src/chat_window.c:111: undefined reference to `libiconv_open'
/usr/local/src/everybuddy-0.2.1beta6/src/chat_window.c:125: undefined reference to `libiconv'
/usr/local/src/everybuddy-0.2.1beta6/src/chat_window.c:177: undefined reference to `libiconv_close'
../libmsn/libmsn.a(msn_commands.o): In function `MsnConvertMessage':
/usr/local/src/everybuddy-0.2.1beta6/libmsn/msn_commands.c:532: undefined reference to `libiconv_open'
/usr/local/src/everybuddy-0.2.1beta6/libmsn/msn_commands.c:542: undefined reference to `libiconv'
/usr/local/src/everybuddy-0.2.1beta6/libmsn/msn_commands.c:587: undefined reference to `libiconv_close'
collect2: ld returned 1 exit status
make[1]: *** [everybuddy] Error 1
make[1]: Leaving directory `/usr/local/src/everybuddy-0.2.1beta6/src'
make: *** [all-recursive] Error 1

iconv_open は /usr/local/lib/libiconv_plug.so or /usr/lib/libc.a に含まれる。 また、libiconv_open は /usr/local/lib/libiconv.so に含まれる。 って事で、./src/Makefile を以下のように修正。
EB_LDADD = -liconv
          ~~~~~~~~ 追加

これでようやくコンパイルは通る。
$ make
$ su
# make install
# exit

では、everybuddy を起動。
Cant open old account file: そのようなファイルやディレクトリはありません
Can't open contact file(/home/fuka/.everybuddy/contacts) for reading: そのようなファイルやディレクトリはありません
length_contact_window=16

Gtk-WARNING **: invalid cast from (NULL) pointer to `GtkEntry'

Gtk-CRITICAL **: file gtkentry.c: line 490 (gtk_entry_get_text): assertion `entry != NULL' failed.

この時、画面には以下のようなダイアログが表示される。
Application "everybuddy"(process 16321) has crashed
due to a fatal error.
(セグメンテーション違反です)

が、不思議な事に、もう一度起動すると、動く〜。

以下、簡単に MSN の設定方法を。
「EveryBuddy アカウント編集 ダイアログ」 (初回は自動的に開く、もしくはメニューの「ツール」-「アカウント編集」を選択) で以下の情報を入力し、Add ボタンを押す。
メニューの「ツール」-「設定」を選択。 「接続」タブで「MSN」タブを選択。 「会話時の文字コードを変換する」にチェックを入れる。 また、「ローカル文字コード」欄には EUC-JP を入力、「相手側文字コード」欄には UTF-8 を入力する。

自動でコンタクトリストを取得できないらしいので、 メニューの「ツール」-「連絡先追加」を選択。 適宜、通信したい相手の情報を入力する。

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