วิธีเปิดใช้งานการสนับสนุน 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 debhelper build-Essential ติดตั้งบิลด์ libssh2-1-dev
sudo apt-get source libcurl3
sudo apt-get build-dep libcurl3

cd curl-x.xx.x / debian

กฎนาโน

ค้นหาและแทนที่ "--without-libssh2" ด้วย "--with-libssh2"

ซีดี ..

sudo dpkg-buildpackage

ซีดี ..

sudo dpkg -i curl_xxxxx.deb
sudo dpkg -i libcurl3_xxxx.deb
sudo dpkg -i libcurl3-gnutls_xxxx.deb

อัพเดตคำสั่งด้วยเวอร์ชันที่เพียงพอของหลักสูตร ข้อมูลเพิ่มเติมที่นี่


ฉันได้ผ่านเรื่องนั้นเมื่อฉันทำ Google มันมีปัญหาเล็ก ๆ ที่ฉันเผชิญอยู่ สิ่งที่คุณได้ทำไว้ที่นี่ในลิงค์นี้ <br/> ** 1) ฉันไม่สามารถหาไดเรกทอรีหรือไฟล์ curl-x.xx.x / debian ได้ทุกที่แม้หลังจากแยกแหล่งข้อมูล curl แล้วหรือยัง <br/> 2) เป็นไปได้ไหมที่ฉันไม่มีความคิดว่าเป็นแหล่งที่ถูกต้องหรือไม่ แหล่งที่มาที่ฉันดาวน์โหลดอยู่ในCurl Source
เท่าไหร่

ถึงกระนั้นฉันขอขอบคุณที่พยายามแก้ปัญหาอย่างน้อยและขอให้คุณตรวจสอบ 2 ประเด็นที่ฉันได้กล่าวถึงที่นี่ มีเวลา gr8
Hrish

นี่คือสิ่งที่ฉันรวบรวมในวันนี้ตามคำตอบของFrantique
Mat Schaffer

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

นี่คืออีกหนึ่งบทช่วยสอนที่ดีสำหรับปัญหาของคุณ

ข้อมูลเพิ่มเติมเกี่ยวกับคำตอบของ Frantique


5

คำตอบของ Frantique ใช้งานได้สำหรับฉัน - แต่เมื่อฉันพยายามอัพเกรดระบบของฉันผู้จัดการแพ็คเกจของฉันต้องการเปลี่ยนการติดตั้งกลับเป็น curl ที่ไม่มี sftp / scp

วิธีหลีกเลี่ยงการติดตั้ง curl ด้วย sftp / scp ใหม่ทุกครั้งหลังการอัพเกรด:

sudo aptitude hold libcurl3
sudo aptitude hold libcurl3-gnutls

ใช้ apt-mark ถ้าคุณใช้ apt

อ่านหน้านี้หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับการป้องกันการอัพเดทของแพ็คเกจเฉพาะ

โปรดทราบว่าในที่สุดการอัปเกรดในอนาคตอาจไม่สามารถดำเนินต่อไปได้จนกว่าคุณจะยกเลิกการระงับ

ถ้าโดยบังเอิญคุณใช้ PHP และต้องการ sftp เป็น curl คุณควรตรวจสอบphpseclibซึ่งอาจจะง่ายกว่าในการติดตั้งและบำรุงรักษา


ควรจะ 'ขด' ด้วยหรือไม่ไม่จำเป็น?
David Oliver

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-*

ดาวน์โหลด Patch และแก้ไข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>

หวังว่าจะช่วยใครซักคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.