Як включити підтримку SFTP в курсі cURL?


15

Я встановив 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
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

Як увімкнути протокол SFTP?

Відповіді:


15

curlСпершу вам потрібно скомпілювати підтримку sftp.

Завантажте та розпакуйте джерело завивки. Після того:

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

cd curl-x.xx.x / debian

нано-правила

знайти і замінити "--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

Оновіть команди, відповідно, версіями. Більше інформації тут .


Я пережив це, коли переглянув це, як завжди виникає невелика проблема, з якою я стикаюся в цьому. те, що ви там згадували, є в цьому посиланні . <br/> ** 1) як коли-небудь я не міг знайти каталог curl-x.xx.x / debian ніде навіть після вилучення джерела curl? <br/> 2) Чи можливо, що я не маю уявлення, яке є правильним джерелом? як коли-небудь джерело, яке я завантажую, знаходиться у цьому джерелі
завитка

Я все ж хотів би подякувати вам за принаймні спробу вирішити цю проблему і просити вас ознайомитись з двома питаннями, про які я згадував тут. мати gr8 час.
Хриш

Ось що я зібрав сьогодні на основі відповіді Франтики
Мат Шаффер

6

Якщо ви не можете знайти його --without-libssh2на заміну, --with-libssh2можете шукати --without-sslта додавати --with-libssh2 , протестований з curl версії 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

Ось ще один хороший посібник для вашої проблеми.

Більше інформації про відповідь Франтики.


5

Відповідь Франтіка працювала на мене - проте, коли я намагався оновити свою систему, мій менеджер пакунків хотів повернути інсталяцію назад до завитка, що не має sftp / scp.

Щоб уникнути необхідності перевстановлення curl за допомогою sftp / scp після кожного оновлення:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Використовуйте apt-позначку, якщо ви використовуєте apt.

Прочитайте цю сторінку, якщо хочете отримати більше інформації про запобігання оновлень певного пакету.

Зауважте, що з часом деякі майбутні оновлення можуть не вдатися доти, доки ви не усунете затримку.

Якщо випадково ви користуєтеся PHP і вам потрібен sftp в curl - вам слід перевірити phpseclib, який може бути набагато простіше в установці та обслуговуванні.


Чи слід також «завити», чи це не потрібно?
Девід Олівер

1

Ось як створити 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
  • Або альтернативно замініть у файлі debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    з

    CONFIGURE_ARGS += --with-libssh2
    

Потім складіть і встановіть пакети:

sudo dpkg-buildpackage -uc -us -b
# -us Do not sign the source package.
# -uc Do not sign the .changes file.
# -b Do not try to apply changes to the unpacked upstream

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>

Сподіваюся, що хтось допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.