Unix/Solaris10

Squirrel Mail 설치 #1: IMAP 설치

ForceCore 2007. 1. 17. 03:15

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

 

을 하면 끝!;;