Eu preciso baixar arquivos de um servidor sftp. Infelizmente, a versão curl no Ubuntu
7.58.0-2ubuntu3.6 amd64
não suporta sftp
.
Eu recebo a mensagem de erro
Protocol "sftp" not supported or disabled in libcurl
ao tentar baixar um arquivo. Portanto, quero construir a curl
partir da fonte para permitir o sftp. Como faço para conseguir isso?
Nota: A instalação de software de uma fonte de terceiros é um risco de segurança. Certifique-se de confiar nas fontes antes de seguir estas etapas.
Primeiro, você precisará do libssh instalado.
Você precisará de um tarball, por exemplo
Extraia e instale-o via:
Em segundo lugar, certifique-se de desinstalar o curl existente:
Li que também é recomendado desinstalar as curl libs, por exemplo
libcurl3-gnutls
, MAS percebi que tem muitas dependências que não queria perder, então mantive. Portanto, tenha cuidado com o processo de desinstalação.E terceiro, para compilar
curl
a partir do sources , clone o projeto curl:Eu o compilei com commit hash
b8f760319668548d93ab0c023633293514d8137
, por favor, tenha isso em mente se você tiver problemas com o arquivomaster
.Esse repositório contém um
GIT-INFO
arquivo com informações úteis sobre como construí-lo e pode ser útil dar uma olhada nele, pois o processo pode mudar no futuro.O que funcionou para mim foi construí-lo via:
(
curl
suporta a desinstalação viasudo make uninstall
. Útil se você tiver problemas ou o que experimentar em diferentes sinalizadores.)Não usei bibliotecas compartilhadas porque notei que o curl estava tendo problemas para encontrar certos comandos do próprio curl e falhava ao tentar executá-lo, por exemplo, vi erros como:
No entanto, com a abordagem mencionada acima, agora tenho um curl compatível com sftp, pois o sftp aparece nos protocolos suportados:
e posso confirmar que ele baixa arquivos de servidores sftp.
Fontes: descobri as etapas necessárias por meio de: