ubuntu14.04lts Amazon EC2 に Sendmail 8.14.4 と BerkeleyDB.4.1 のソースインストールがあります。私が知っている限り、インストールが正常にコンパイルされたことがわかります。ソースがインストールされた状態で、コマンドを使用して/usr/sbin/sendmail
新しいバージョンにコピーします。sendmail
cp
しかし、ファイルが見つかりませんsendmail
(下記参照)。実行ファイルがありません。
root@ip-192-168-10-152:/usr/local/sendmail/sendmail-8.14.4/obj.Linux.3.13.0-24-generic.x86_64/sendmail# ll sendmail*
lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.0.dist -> ../../sendmail/sendmail.0
lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.8 -> ../../sendmail/sendmail.8
lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.h -> ../../sendmail/sendmail.h
間違ってコンパイルされたのでしょうか?なぜ?
==========The environment set at compile ==============
root@ip-192-168-10-152:/usr/local/sendmail/sendmail-8.14.4/devtools/Site# cat site.config.m4
APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.1/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.1/lib')
APPENDDEF(`confLIBS', `-ldb -lpthread')
==========================================================
編集#1
sendmail バイナリを除くすべてのバイナリが正常にコンパイルされたとします。
root@ip-192-168-10-172:/usr/local/sendmail/sendmail-8.14.9/sendmail# ./makesendmail
Configuration: pfx=, os=Linux, rel=3.2.0-58-virtual, rbase=3, rroot=3.2, arch=x86_64, sfx=, variant=optimized
Making in /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/sendmail
cc -o sendmail -L/usr/local/BerkeleyDB.4.1/lib main.o alias.o arpadate.o bf.o collect.o conf.o control.o convtime.o daemon.o deliver.o domain.o envelope.o err.o headers.o macro.o map.o mci.o milter.o mime.o parseaddr.o queue.o ratectrl.o readcf.o recipient.o sasl.o savemail.o sfsasl.o shmticklib.o sm_resolve.o srvrsmtp.o stab.o stats.o sysexits.o timers.o tls.o trace.o udb.o usersmtp.o util.o version.o /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/libsmutil/libsmutil.a /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/libsm/libsm.a -ldb -ldl -ldb -lpthread
domain.o: In function `getmxrr':
domain.c:(.text+0x1f0): undefined reference to `__res_search'
domain.c:(.text+0x200): undefined reference to `__res_query'
domain.c:(.text+0x2a5): undefined reference to `__dn_skipname'
domain.c:(.text+0x4f4): undefined reference to `__dn_expand'
domain.c:(.text+0x5be): undefined reference to `__dn_expand'
domain.o: In function `dns_getcanonname':
domain.c:(.text+0x1017): undefined reference to `__res_querydomain'
domain.c:(.text+0x10ab): undefined reference to `__dn_skipname'
domain.c:(.text+0x1213): undefined reference to `__dn_expand'
domain.c:(.text+0x12a1): undefined reference to `__dn_expand'
sm_resolve.o: In function `dns_lookup_int':
sm_resolve.c:(.text+0x21d): undefined reference to `__res_search'
sm_resolve.c:(.text+0x313): undefined reference to `__dn_expand'
sm_resolve.c:(.text+0x42e): undefined reference to `__dn_expand'
sm_resolve.c:(.text+0x598): undefined reference to `__dn_expand'
sm_resolve.c:(.text+0x6d8): undefined reference to `__dn_expand'
sm_resolve.c:(.text+0x799): undefined reference to `__dn_expand'
sm_resolve.c:(.text+0x99f): undefined reference to `__res_search'
collect2: ld returned 1 exit status
make: *** [sendmail] Error 1
答え1
make
警告またはエラーがあるかどうかをビルドするときは、出力を再確認してください。現在バイナリがないとsendmail
正しくビルドされません。また、ソースツリーで使用法を見つけてくださいsendmail
。find
通常、バイナリは別のディレクトリに配置されます。
$ find . -type f | grep sendmail$
コンパイルの問題
最近の編集によると、これらの2行はコンパイルが失敗したことを示しています。
collect2: ld returned 1 exit status
make: *** [sendmail] Error 1
生成されたバイナリを見つけることを心配する前に、これらのエラーが発生する理由を特定する必要がありますsendmail
。まだ存在しないので見つかりません。