Доступ к SFTP через Curl в Rstudio

Я пытаюсь использовать библиотеку RCurl для доступа к сайту SFTP для загрузки файлов на MacOS под управлением Monterrey v12.4. Как и в других случаях, когда RCurl вызывает библиотеки curl, SFTP не включается.

После Поддержка SFTP для curl на OSX Я установил curl с помощью openssl, используя homebrew. Я удалил библиотеки curl и Rcurl в RStudio.

В окне терминала запуск curl -v показывает, что sftp доступен. В RStudio запуск «system ('what curl')» показывает, что sftp доступен.

Однако, когда я пытаюсь получить файл через SFTP с помощью библиотеки RCurl, я получаю сообщение:

Error in function (type, msg, asError = TRUE) : 
Protocol "sftp" not supported or disabled in libcurl

Я подумал, может быть, PATH был установлен неправильно. Я добавил следующую строку в свой файл .Renviron.

PATH=/opt/homebrew/opt/curl/bin:$PATH

На данном этапе мне непонятно, почему sftp не поддерживается при попытке доступа к файлу на SFTP-сайте при использовании библиотеки RCurl.

Что еще я могу сделать, чтобы попытаться диагностировать, почему это происходит?

Вы установили пакет RCurl из исходного кода? Или вы установили прекомпилированные двоичные файлы. Может быть, если вы попробуете install.packages("RCurl", type = "source"), это будет использовать ваш системный завиток. Я думаю, что это установлено во время компиляции.

MrFlick 15.11.2022 15:05
curl::curl_version() покажет вашу поддержку R libcurl. Сравните это с curl -V. curl:::R_curl_version покажет библиотеку
Ric Villalba 15.11.2022 15:08

@RicVillalba. Вывод curl::curl_version отличается от 'curl -V'. Первый показывает curl v7.79.1 и не поддерживает SFTP. Последний показывает curl v7.86.0 с поддержкой SFTP. Я хотел, чтобы изменение PATH в .Renviron устранило эту проблему. Но, видимо, этого не произошло.

JFD 15.11.2022 16:03

@MrFlick, я пытался установить из исходного кода. Он завершается с ошибкой, указывающей, что сценарий установки не может найти sed и expr. Сначала я должен решить эту проблему.

JFD 15.11.2022 16:07

@MrFlick проблема с установкой была исправлена. Библиотеки curl и Rcurl были установлены из исходников. К сожалению, это не решает проблему. R по-прежнему использует старую версию библиотеки curl, которая не поддерживает SFTP.

JFD 16.11.2022 03:22

Я подтвердил свой PATH. Первая запись в $PATH — это /opt/homebrew/opt/curl/bin, где находится исполняемый файл v7.86.0 с поддержкой SFTP. Насколько я понимаю, R должен найти это. Но вывод curl::curl_version() по-прежнему показывает более старую версию.

JFD 16.11.2022 03:28

Теперь я установил последнюю версию R (4.2.2), RStudio (2022.07.2 Build 576), удалил curl и RCurl и переустановил из исходного кода, но проблема остается нерешенной. Результаты curl::curl_version() показывают версию curl 7.82.0. "system('curl -V') показывает версию curl 7.82.0. Запуск "curl -V" в окне терминала показывает версию curl 7.86.0 с SFTP. Моя переменная env PATH в настоящее время включает каталог, в котором находится curl версии 7.86.0. Приветствуются любые рекомендации по следующим шагам.

JFD 23.11.2022 19:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение. В посте Поддержка SFTP для curl на OSX

есть код для включения поддержки SFTP в curl на MacOS.

Я прогнал три строчки:

PATH <- Sys.getenv("PATH")
version <- '7.86.0'
Sys.setenv(PATH = paste0("/opt/homebrew/Cellar/curl/", version, "/bin:", PATH))

и SFTP включен в RCurl.

запуск «echo $PATH» с терминала показывает «/opt/homebrew/opt/curl/bin» в пути. Я предположил, что это означает, что используется завиток с поддержкой OpenSSL, но это не так. Очевидно, ПУТЬ R отличается от ПУТИ MacOS.

Мой следующий шаг — добавить эту строку в мой файл .Rprofile, чтобы она включалась каждый раз, когда я запускаю R.

Другие вопросы по теме