Bagaimana cara mengaktifkan Dukungan SFTP di cURL?


15

Saya telah menginstal curl-7.27.0 dan berfungsi dengan baik. Namun, ketika saya berlari curl -V, saya mendapatkan:

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

Bagaimana cara mengaktifkan protokol SFTP?

Jawaban:


15

Anda harus mengkompilasi curldengan dukungan sftp terlebih dahulu.

Unduh dan buka paket sumber curl. Setelah itu:

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

aturan nano

temukan dan ganti "--without-libssh2" dengan "--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

Perbarui perintah dengan versi yang memadai, tentu saja. Info lebih lanjut di sini .


Saya telah mengalaminya ketika saya meng-Google-nya, bagaimana pun ada masalah kecil yang saya hadapi dalam hal itu. apa yang telah Anda sebutkan di sana ada di tautan ini . <br/> ** 1) bagaimana mungkin saya tidak dapat menemukan direktori atau file curl-x.xx.x / debian di mana saja bahkan setelah mengekstraksi sumber curl? <br/> 2) Mungkinkah saya tidak memiliki ide yang merupakan sumber yang tepat? Bagaimana pun sumber yang saya unduh ada di Sumber Curl
Hrish

Tetap saya ingin mengucapkan terima kasih untuk setidaknya mencoba menyelesaikan masalah ini dan meminta Anda untuk memeriksa 2 masalah yang telah saya sebutkan di sini. punya waktu gr8.
Jam

Inilah yang saya kumpulkan hari ini berdasarkan jawaban Frantique
Mat Schaffer

6

Jika Anda tidak dapat menemukan --without-libssh2untuk mengganti dengan --with-libssh2Anda dapat mencari --without-ssldan menambahkan --with-libssh2 , diuji dengan curl Versi 7.35.0 pada Ubuntu 14.04.2

Jawaban khusus dari Frantique:

Unduh dan buka paket sumber curl. Setelah itu:

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

Temukan --without-ssldan tambahkan --with-libssh2, dalam kasus saya, tampilannya seperti ini:

Sebelum

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

Setelah

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

Sekarang bangun paket:

cd ..
sudo dpkg-buildpackage
cd ..

sudo dpkg -i curl_*.deb
sudo dpkg -i libcurl3_*.deb
sudo dpkg -i libcurl3-gnutls_*.deb

Berikut ini adalah tutorial bagus untuk masalah Anda.

Info lebih lanjut tentang jawaban Frantique.


5

Jawaban Frantique bekerja untuk saya - namun ketika saya mencoba untuk meningkatkan sistem saya, manajer paket saya ingin mengembalikan instalasi kembali ke ikal yang tidak memiliki sftp / scp.

Untuk menghindari keharusan menginstal ulang curl dengan sftp / scp setelah setiap pembaruan:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

Gunakan apt-mark jika Anda menggunakan apt.

Baca halaman ini jika Anda ingin info lebih lanjut tentang cara mencegah pembaruan dari paket tertentu.

Perhatikan bahwa pada akhirnya beberapa peningkatan di masa mendatang mungkin tidak dapat maju sampai Anda menghapus penangguhan.

Jika kebetulan Anda menggunakan PHP dan perlu sftp di curl - Anda harus memeriksa phpseclib yang mungkin lebih mudah untuk diinstal dan dipelihara.


Haruskah 'keriting' juga diadakan, atau ini tidak perlu?
David Oliver

1

Berikut ini cara membuat ikal dengan dukungan libssl untuk 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-*

Unduh Patch dan tempel 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
  • Atau ganti alternativ dalam file debian/rules:

    CONFIGURE_ARGS += --without-libssh2` 
    

    dengan

    CONFIGURE_ARGS += --with-libssh2
    

Kemudian buat dan instal paket:

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>

Semoga itu bisa membantu seseorang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.