Sftpサーバーからファイルをダウンロードする必要があります。残念ながら、Ubuntuのcurlバージョン
7.58.0-2ubuntu3.6 AMD64
はsftp
をサポートしていません。
エラーメッセージが表示される
Protocol "sftp" not supported or disabled in libcurl
ファイルをダウンロードしようとしたとき。したがって、ソースからcurl
を構築して、sftpを許可したいと思います。どうすればそれを達成できますか?
注:サードパーティのソースからソフトウェアをインストールすると、安全上のリスクがあります。次の手順を実行する前に、ソースを信頼していることを確認してください。
まず、 libssh がインストールされている必要があります。
たとえば、tarballが必要です。
https://www.libssh2.org/download/libssh2-1.8.2.tar.gz
Extactとインストール:
cd libssh2-1.8.1
./configure
make
Sudo make install
次に、必ず既存のcurlをアンインストールしてください。
Sudo apt purge curl
Curl libsをアンインストールすることも推奨されていることを読みました。 libcurl3-gnutls
、しかし、失いたくない依存関係がたくさんあることに気付いたので、それを維持しました。アンインストールプロセスには注意してください。
そして3番目に、ソースから build curl
するために、curlプロジェクトのクローンを作成します。
$ git clone https://github.com/curl/curl.git
そのリポジトリには、ビルド方法に関する有用な情報を含む 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がサポートされているプロトコル内に表示されるため、sftpをサポートするcurlが機能しています。
$ 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サーバーからファイルをダウンロードすることを確認できます。
出典:次の方法で必要な手順を見つけました: