Squirrel Mail을 받고 INSTALL파일을 보니 IMAP이 필요하다고 되어있다.
imap데몬이 많지만, cyrus imap을 골랐다. cyrus의 auth모듈을 그대로 사용할 수 있으니까.
http://cyrusimap.web.cmu.edu/downloads.html#imap
여기서 소스를 받아 압축 해제.
$ CC=gcc ./configure \
--with-dblib=berkeley \
--with-bdb-libdir=/usr/local/BerkeleyDB/lib \
--with-bdb-incdir=/usr/local/BerkeleyDB/include \
--with-openssl=/usr/local/ssl \
--with-saslauthd=/var/run/saslauthd \
--with-sasl=/usr/local/lib
$ make depend
$ make all
그런데! make all단계에서 컴파일이 되지 않는다.
gcc -L/usr/local/ssl/lib -R/usr/local/ssl/lib -L/usr/local/BerkeleyDB/lib -R/usr/local/BerkeleyDB/lib -o master master.o masterconf.o cyrusMasterMIB.o ../lib/lock_fcntl.o ../lib/libcyrus_min.a -R../lib -L/usr/sfw/lib -lnetsnmpagent -lnetsnmpmibs -lnetsnmphelpers -lnetsnmp -ldl -lkvm -lz -lpkcs11 -lkstat -lelf -lm -ldl -lnsl -lsocket -ladm -lresolv -lresolv -lsocket -lnsl -L/usr/local/BerkeleyDB/lib -R/usr/local/BerkeleyDB/lib -ldb-4.2 -lssl -lcrypto ../et/libcom_err.a
Undefined first referenced
symbol in file
netsnmp_enable_subagent master.o
ld: fatal: Symbol referencing errors. No output written to master
collect2: ld returned 1 exit status
이런 에러가 뜸.
http://comments.gmane.org/gmane.mail.imap.cyrus/14503
이 글을 보니... 이거 외엔 같은 상황을 발견할 수 없었다. (OS는 다르지만)
snmp를 재컴파일 -_-?!
그건 너무 무지막지하다 ;ㅁ;
--------------
따라하지 마시오. snmp를 컴파일하고 설치 하다 말았음.
따라하지 않아도 컴파일이 된다면 따라하지 않아야 함 -_-;
$ export PATH=/usr/sbin:/usr/local/bin:/usr/ccs/bin:/usr/bin
$ ./configure --with-cc=gcc
중간에 몇 가지 질문을 하는데 적당히 대답해준다. 어려운 질문은 아님. 시스템의 위치를 묻고 administrator메일을 묻는다.
$ make
# make install
이면 됨.
configure도, make도 오래 걸릴 것이다 -ㅠ-
snmpconf를 이용하여 설정도 해준다.
설정이 너무 많아서 힘들군.
에... 여기까지 하고 stop -_-;; 방법한 썬의 서비스들을 다시 살렸다 ㅠㅠ;;
--------------------
에러가 바뀌어 있었다.
Writing Makefile for Cyrus::IMAP
cc -c -I../../lib -I/usr/local/lib/include -I/usr/local/ssl/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO -xO3 -xspace -xildoff -DVERSION=\"1.00\" -DXS_VERSION=\"1.00\" -KPIC "-I/usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE" -DPERL_POLLUTE IMAP.c
cc: unrecognized option `-KPIC'
cc: language ildoff not recognized
cc: IMAP.c: linker input file unused because linking not done
Running Mkbootstrap for Cyrus::IMAP ()
chmod 644 IMAP.bs
rm -f blib/arch/auto/Cyrus/IMAP/IMAP.so
LD_RUN_PATH="/usr/local/BerkeleyDB/lib:/lib:/usr/local/ssl/lib" cc -G IMAP.o -o blib/arch/auto/Cyrus/IMAP/IMAP.so ../../lib/libcyrus.a ../../lib/libcyrus_min.a -L/usr/local/BerkeleyDB/lib -R/usr/local/BerkeleyDB/lib -ldb-4.2 -L/usr/local/ssl/lib -L/usr/local/ssl/lib -R/usr/local/ssl/lib -lrt -lssl -lcrypto
cc: IMAP.o: No such file or directory
*** Error code 1
make: Fatal error: Command failed for target `blib/arch/auto/Cyrus/IMAP/IMAP.so'
Current working directory /export/home/ssanzing/src/cyrus-imapd-2.2.12/perl/imap
*** Error code 1
The following command caused the error:
for d in imap sieve; \
do \
(cd $d; echo "### Making" all "in" `pwd`; \
if [ -f Makefile.PL ]; then \
LIB_RT="-lrt" \
BDB_LIB="-L/usr/local/BerkeleyDB/lib -R/usr/local/BerkeleyDB/lib -ldb-4.2" BDB_INC="-I/usr/local/BerkeleyDB/include" \
OPENSSL_LIB="-L/usr/local/ssl/lib -L/usr/local/ssl/lib -R/usr/local/ssl/lib" OPENSSL_INC="-I/usr/local/ssl/include" \
SASL_LIB="-L/usr/local/lib/lib -R/usr/local/lib/lib -lsasl2" SASL_INC="-I/usr/local/lib/include" CC="/usr/local/bin/gcc" \
perl Makefile.PL PREFIX=/usr/local; \
fi; \
make DESTDIR= all) || exit 1; \
done
make: Fatal error: Command failed for target `all'
Current working directory /export/home/ssanzing/src/cyrus-imapd-2.2.12/perl
*** Error code 1
The following command caused the error:
for d in man et lib sieve master imap imtest perl timsieved notifyd; \
do \
(cd $d; echo "### Making" all "in" `pwd`; \
make DESTDIR= all) || exit 1; \
done
make: Fatal error: Command failed for target `all'
이런 에러가 나는데 도저히 해결되지 않는군... -_-;;
소스코드에 버그가 있기 때문이다 (!)
gmake를 해보면 버그가 있는데, 그 위치는 perl/imap이다.
perl/imap의 Makefile을 보자.
이 파일이 잘못되었으나 고칠 수 없다.
Makefile.PL에서 자동 생성된 파일이라 고쳐도 원상태가 되기 때문이다.
perl/imap/Makefile.PL을 아래와 같이 수정함.
WriteMakefile(
'NAME' => 'Cyrus::IMAP',
'ABSTRACT' => 'Cyrus administrative interface',
'VERSION_FROM' => 'IMAP.pm', # finds $VERSION
'macro' => {'IMCLIENT_LIBS' => ''}, # hack
'clean' => {'FILES' => 'libcyrperl.a cyradm'},
'OBJECT' => 'IMAP.o',
'MYEXTLIB' => '../../lib/libcyrus.a ../../lib/libcyrus_min.a',
'LIBS' => ["$BDB_LIB $SASL_LIB $OPENSSL_LIB $LIB_RT -lssl -lcrypto"],
'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING'
'INC' => "-I../../lib $SASL_INC $OPENSSL_INC",
'EXE_FILES' => [cyradm],
'CC' => "gcc",
'CCCDLFLAGS' => "-fPIC",
'OPTIMIZE' => "-O3",
);
굵은 부분이 새로 추가된 부분이다. 나머지는 그대로이다.
perl/sieve/managesieve/Makefile.PL도 마찬가지로 고쳐주면 컴파일 성공!
하여간에... 이 문제는 뭐랑 맞닿아있는고 하니, SUN에 기본장착되어 나온 cc의 문제이다.
http://blog.naver.com/ssanzing2/140032491035
전에는 perlgcc를 써서 컴파일 하여 해결하였으나, 이번 글에서는 좀 다른 방법으로 수정해야만 했다.
http://www.sunmanagers.org/pipermail/sunmanagers/2004-September/032887.html
이 글에서 해결의 실마리를 얻을 수 있었다.
계속 진행하자.
컴파일이 완료되었으니
# make install
을 하면 끝!;;