Cadaver (A command-line WebDAV client)

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

概要

Cadaver とは、CUI な WebDAV クライアント。

URL

http://www.webdav.org/cadaver/

インストール環境

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

必要なもの

特になし

バージョン

0.18.0

インストール手順

$ tar xvfz cadaver-0.18.0.tar.gz
$ cd cadaver-0.18.0
$ ./configure --with-ssl
(snip)
  Internationalization:  Not built
(snip)

うーむ。configure に Internationalization なんて設定ないのだが、 どこで設定するのだろう。謎。とりあえずコンパイルに進む。
$ make
(snip)
make[1]: Leaving directory `/usr/local/src/cadaver-0.18.0/libneon'
gcc  -o cadaver src/cadaver.o src/common.o src/commands.o src/ls.o src/cmdline.o src/options.o \
     lib/basename.o lib/dirname.o lib/rpmatch.o lib/yesno.o lib/glob.o lib/getpass.o  \
     ./expat/xmltok/xmltok.o ./expat/xmltok/xmlrole.o ./expat/xmlparse/xmlparse.o \
     ./expat/xmlparse/hashtable.o -lreadline  -lcurses -L/usr/local/ssl/lib -lssl -lcrypto \
     -lreadline  -lcurses -Llibneon -lneon
libneon/libneon.a(ne_socket.o): In function `sock_init':
/usr/local/src/cadaver-0.18.0/libneon/ne_socket.c:203: undefined reference to `SSL_load_error_strings'
(snip)
/usr/local/src/cadaver-0.18.0/libneon/ne_socket.c:914: undefined reference to `SSL_CTX_check_private_key'
collect2: ld returned 1 exit status
make: *** [cadaver] Error 1

ありゃ? なんで undefined ?? ちゃんと /usr/local/ssl/lib/libssl.a に 定義されているし、コンパイルオプションにも問題ないように見えるのだが...。

ああ、分かった。リンク順序の問題か。 -lssl -lneon の順でライブラリが指定してあるにも関わらず、実際には -lneon で SSL ライブラリを呼び出しているものだから、-lssl が無視されちゃってるのね。
という訳で Makefile を以下のように修正。
LIBS = -lreadline -lcurses -L/usr/local/ssl/lib -lssl -lcrypto -lreadline \
       -lcurses -Llibneon -lneon -lssl
                                 ~~~~~ 追加

再コンパイル。
$ make
for d in libneon ; do (cd $d; make); done
make[1]: Entering directory `/usr/local/src/cadaver-0.18.0/libneon'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/usr/local/src/cadaver-0.18.0/libneon'
gcc  -o cadaver src/cadaver.o src/common.o src/commands.o src/ls.o src/cmdline.o src/options.o lib/basename.o lib/dirname.o lib/rpmatch.o lib/yesno.o lib/glob.o lib/getpass.o  ./expat/xmltok/xmltok.o ./expat/xmltok/xmlrole.o ./expat/xmlparse/xmlparse.o ./expat/xmlparse/hashtable.o -lreadline  -lcurses -L/usr/local/ssl/lib -lssl -lcrypto -lreadline  -lcurses -Llibneon -lneon -lssl
libneon/libneon.a(ne_socket.o): In function `sock_peek':
/usr/local/src/cadaver-0.18.0/libneon/ne_socket.c:301: undefined reference to `ERR_get_error'

むむ。今度はどのライブラリ〜??
libcrypto.a か。libssl.a とペアにしないとダメなのね。 再度、Makefile を以下のように修正。
LIBS = -lreadline -lcurses -L/usr/local/ssl/lib -lssl -lcrypto -lreadline \
       -lcurses -Llibneon -lneon -lssl -lcrypto
                                 ~~~~~~~~~~~~~~ 追加

これで問題なし。後はコンパイル/インストールしておしまい。
$ make
$ su
# make install
# exit

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