Я должен загрузить файлы с sftp сервера. К сожалению, вихревая версия в Ubuntu
7.58.0-2ubuntu3.6 amd64
не поддерживает sftp
.
Я получаю сообщение об ошибке
Protocol "sftp" not supported or disabled in libcurl
при попытке загрузить файл. Я поэтому хочу создать curl
из источника для разрешения sftp. Как я достигаю этого?
Примечание: Программное обеспечение Installing из независимого источника является риском для безопасности. Удостоверьтесь, что Вы доверяете источникам прежде, чем выполнить эти шаги.
Во-первых, Вам будет нужен установленный libssh.
Вам будет нужен tarball, например.
https://www.libssh2.org/download/libssh2-1.8.2.tar.gz
Экс-такт и установка это через:
cd libssh2-1.8.1
./configure
make
sudo make install
Во-вторых, удостоверьтесь, что удалили свое существующее завихрение:
sudo apt purge curl
Я считал, что также рекомендуется удалить завихрение, освобождает, например. libcurl3-gnutls
, НО я заметил, что это имеет много зависимостей, которые я не хотел терять, таким образом, я сохранил его. Так будьте осторожны относительно процесса удаления.
И в-третьих, для создания curl
из источников клонируйте вихревой проект:
$ git clone https://github.com/curl/curl.git
Тот репозиторий содержит a GIT-INFO
файл с полезной информацией о том, как создать его и может быть полезно взглянуть в него, поскольку процесс может измениться в будущем.
То, что работало на меня, должно было создать его через:
./buildconf
./configure
./configure --disable-libcurl-option --disable-shared --with-libssh2=/usr/local
make
sudo make install
(curl
удаление поддержек через sudo make uninstall
. Полезный, если Вы имеющий проблемы или что испытать различные флаги.)
Я не пользовался совместно использованными библиотеками, поскольку я заметил, что завихрение имело проблемы при нахождении определенных вихревых собственных команд и отказавший при попытке выполнить его, например, Я видел ошибки как:
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 -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 серверов.
Источники: Я нашел о необходимых шагах через: