Я установил curl-7.27.0, и он работает нормально, но когда он не работает, запустите команду ниже, чтобы узнать, работает ли она сейчас, но она показала, что:
root @ ubuntu: ~ / curl-7.27.0 # curl -V
curl 7.21.6 (i686-pc-linux-gnu) libcurl / 7.21.6 OpenSSL / 1.0.0e zlib / 1.2.3.4 libidn / 1.22 librtmp / 2.3
Протоколы: файл dict ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Особенности: GSS-согласование IDN IPv6 Largefile NTLM SSL libz
Сначала вы должны скомпилировать curl
с поддержкой sftp.
Загрузите и распакуйте источник curl. После этого:
sudo apt-get install build-essential debhelper libssh2-1-dev sudo apt-get source libcurl3 sudo apt-get build-dep libcurl3 cd curl-x.xx.x/debian nano rules
найдите и замените «--without-libssh2» на «--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
Обновите команды соответствующими версиями ofcourse. Более подробная информация здесь .
Если вы не можете найти --without-libssh2
для замены на --with-libssh2
, вы можете найти --without-ssl
и , добавьте --with-libssh2
, протестировано с помощью curl Version 7.35.0 на Ubuntu 14.04.2
Индивидуальный ответ от Frantique:
Загрузите и распакуйте источник скручивания. После этого:
sudo apt-get install build-essential debhelper libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3
cd curl-*/debian
nano rules
Найдите --without-ssl
и добавьте --with-libssh2
, в моем случае это выглядит так:
До
cd debian/build && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-path=/etc/ssl/certs
cd debian/build-gnutls && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
--without-ssl --with-gnutls
cd debian/build-nss && dh_auto_configure ${CONFIGURE_ARGS} \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
--without-ssl --with-nss
После
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
Теперь соберите пакеты:
cd ..
sudo dpkg-buildpackage
cd ..
sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3_*.deb
sudo dpkg -i libcurl3-gnutls_*.deb
Вот еще один хороший урок для вашей проблемы.
Подробнее об ответе Франтика.
Ответ Frantique работал для меня - однако, когда я попытался обновить свою систему, мой менеджер пакетов захотел вернуть установку обратно в curl без sftp / scp.
Чтобы избежать переустановки curl с помощью sftp / scp после каждого обновления:
sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls
Используйте apt-mark, если вы используете apt.
Прочтите эту страницу , если хотите получить больше информации о предотвращении обновления определенного пакета.
Обратите внимание, что в конечном итоге некоторые будущие обновления могут не продвинуться, пока вы не уберете удержание.
Если случайно вы используете PHP и вам нужен sftp в curl - вам следует проверить phpseclib , который может быть намного проще в установке и обслуживании.
Вот как собрать curl с поддержкой libssl для Ubuntu 18.04. LTS:
sudo apt-get install build-essential debhelper libssh-dev
sudo apt-get source curl
sudo apt-get build-dep curl
cd curl-*
Загрузите патч и исправьте debian/rules
:
wget https://bugs.launchpad.net/ubuntu/+source/curl/+bug/311029/+attachment/5234644/+files/ubuntu_libssl.patch
sudo patch debian/rules < /ubuntu_libssl.patch
или альтернативный заменить в файле [ 116]:
CONFIGURE_ARGS += --without-libssh2`
с
CONFIGURE_ARGS += --with-libssh2
Затем соберите и установите пакеты:
sudo dpkg-buildpackage -uc -us
# -us Do not sign the source package.
# -uc Do not sign the .changes file.
cd ..
sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3-*.deb
sudo dpkg -i libcurl3-gnutls_*.deb
sudo apt-mark hold curl
sudo apt-mark hold libcurl3
sudo apt-mark hold libcurl3-gnutls
# sudo apt-mark unhold <package-name>
Надежда, которая кому-нибудь поможет. [ 1114]