k0pernikus Asked: 2019-03-27 01:46:33 +0800 CST2019-03-27 01:46:33 +0800 CST 2019-03-27 01:46:33 +0800 CST 如何从源代码构建最新的 curl 以允许通过 sftp 下载文件? 772 我需要从 sftp 服务器下载文件。不幸的是,Ubuntu 中的 curl 版本 7.58.0-2ubuntu3.6 amd64 不支持sftp。 我收到错误消息 Protocol "sftp" not supported or disabled in libcurl 尝试下载文件时。因此,我想curl从源代码构建以允许 sftp。我该如何做到这一点? compiling sftp make 18.04 curl 1 个回答 Voted Best Answer k0pernikus 2019-03-27T01:46:33+08:002019-03-27T01:46:33+08:00 注意:从第三方来源安装软件存在安全风险。在执行这些步骤之前,请确保您信任来源。 首先,您需要安装libssh。 你需要一个压缩包,例如 https://www.libssh2.org/download/libssh2-1.8.2.tar.gz 通过以下方式提取并安装它: cd libssh2-1.8.1 ./configure make sudo make install 其次,确保卸载现有的 curl: sudo apt purge curl 我读过还建议卸载 curl 库,例如libcurl3-gnutls,但是我注意到它有很多我不想丢失的依赖项,所以我保留了它。所以要小心卸载过程。 第三,为了从源代码构建curl,克隆 curl 项目: $ git clone https://github.com/curl/curl.git 我用提交哈希编译它,b8f760319668548d93ab0c023633293514d8137如果你对当前有问题,请记住这一点master。 该存储库包含一个GIT-INFO文件,其中包含有关如何构建它的有用信息,并且查看它可能很有用,因为该过程将来可能会发生变化。 对我有用的是通过以下方式构建它: ./buildconf ./configure ./configure --disable-libcurl-option --disable-shared --with-libssh2=/usr/local make sudo make install (curl支持通过 卸载sudo make uninstall。如果您遇到问题或尝试不同的标志时很有用。) 我没有使用共享库,因为我注意到 curl 在查找某些 curl 自己的命令时遇到问题,并且在尝试运行它时失败,例如,我看到如下错误: curl: symbol lookup error: curl: undefined symbol: curl_url_cleanup curl: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory 然而,通过上述方法,我现在有了一个支持 sftp 的工作 curl,因为 sftp 出现在支持的协议中: $ curl -V curl 7.64.1-DEV (x86_64-pc-linux-gnu) libcurl/7.64.1-DEV OpenSSL/1.1.0g zlib/1.2.11 libssh2/1.8.1 Release-Date: [unreleased] Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: AsynchDNS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL TLS-SRP UnixSockets 我可以确认它从 sftp 服务器下载文件。 资料来源:我通过以下方式找到了必要的步骤: https://curl.haxx.se/docs/install.html http://andrewberls.com/blog/post/adding-sftp-support-to-curl http://d.hatena.ne.jp/shammer/20161110/p1
注意:从第三方来源安装软件存在安全风险。在执行这些步骤之前,请确保您信任来源。
首先,您需要安装libssh。
你需要一个压缩包,例如
通过以下方式提取并安装它:
其次,确保卸载现有的 curl:
我读过还建议卸载 curl 库,例如
libcurl3-gnutls
,但是我注意到它有很多我不想丢失的依赖项,所以我保留了它。所以要小心卸载过程。第三,为了从源代码构建
curl
,克隆 curl 项目:我用提交哈希编译它,
b8f760319668548d93ab0c023633293514d8137
如果你对当前有问题,请记住这一点master
。该存储库包含一个
GIT-INFO
文件,其中包含有关如何构建它的有用信息,并且查看它可能很有用,因为该过程将来可能会发生变化。对我有用的是通过以下方式构建它:
(
curl
支持通过 卸载sudo make uninstall
。如果您遇到问题或尝试不同的标志时很有用。)我没有使用共享库,因为我注意到 curl 在查找某些 curl 自己的命令时遇到问题,并且在尝试运行它时失败,例如,我看到如下错误:
然而,通过上述方法,我现在有了一个支持 sftp 的工作 curl,因为 sftp 出现在支持的协议中:
我可以确认它从 sftp 服务器下载文件。
资料来源:我通过以下方式找到了必要的步骤: