如何在 cURL 自定义安装期间修复“对‘SSLv3_client_method’未定义的引用”

如何在 cURL 自定义安装期间修复“对‘SSLv3_client_method’未定义的引用”

我从事一个经常使用 cURL 的项目。最近我们添加了一项新功能,允许在我们的 API 中执行 SFTP 调用。

cURL 默认禁用 SFTP,因此我尝试搜索如何启用它。我发现回答这对我有帮助,但在构建过程中我收到了有关引用的错误SSLv3_client_method

我跑了:

sudo apt-get install build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3

cd curl-*/debian

vim rules #Append "--with-libssh2"

cd ..
sudo dpkg-buildpackage
cd ..

sudo dpkg -i curl_xxxxx.deb
sudo dpkg -i libcurl3_xxxx.deb
sudo dpkg -i libcurl3-gnutls_xxxx.deb

更新后,我的“规则”文件包含:

cd debian/build && dh_auto_configure ${CONFIGURE_ARGS}          \
    --with-ca-path=/etc/ssl/certs --with-libssh2
cd debian/build-gnutls &&  dh_auto_configure ${CONFIGURE_ARGS}  \
    --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
    --without-ssl --with-gnutls --with-libssh2
cd debian/build-nss && dh_auto_configure ${CONFIGURE_ARGS}      \
    --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt     \
    --without-ssl --with-nss --with-libssh2

然后我收到错误:

../lib/.libs/libcurl.so: undefined reference to `SSLv3_client_method'
collect2: error: ld returned 1 exit status
make[4]: *** [curl] Error 1
make[4]: Leaving directory `/home/bee4/curl-7.35.0/debian/build/src'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/bee4/curl-7.35.0/debian/build/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/bee4/curl-7.35.0/debian/build'
dh_auto_build: make -j1 returned exit code 2
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory `/home/bee4/curl-7.35.0'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

我在 OVH 服务器上使用 Ubuntu 14.04。也许我做错了什么?通过 cURL PHP 扩展启用 SFTP 支持是否正确(首先构建正确的 cURL 版本,然后安装 PHP 扩展)。

答案1

我终于摆脱了这个错误!

为此,我需要构建一个libssh2版本并构建一个curl使用该版本的版本。这可能是 Ubuntu 14.04 中捆绑的 curl 7.35.0 的问题(因为我在更正期间使用了 7.46.0)。

因此我下载了一个libssh2源包然后构建它:

./configure
make
make install

我建立了我的curl实例来使用它libssh2

./configure --with-libssh2=/usr/local --disable-shared
make
make install

这样,我就有了一个 curl 7.46(最新稳定版本)的运行实例,它也能够使用 SFTP 和 SCP 协议。

我需要使用该--disable-shared标志来强制对不同的库进行新的编译。如果没有它,SFTP / SCP 将无法启用...也许有人可以在这里给我一些详细信息...

不再有关于丢失的错误SSLv3_client_method,一切正常!

相关内容