#r #ubuntu #package-managers #packrat #renv
#r #ubuntu #менеджеры пакетов #packrat #renv
Вопрос:
Я разрабатывал блестящее приложение на компьютере с Windows в Rstudio. Теперь мне нужно разработать его на компьютере с Linux, а позже потребуется развернуть его на сервере. Из-за необходимости запускать приложение на разных платформах я искал какое-нибудь приложение для управления средой, чтобы мне не приходилось настраивать и переустанавливать необходимые пакеты вручную.
Я пытался использовать Packrat для этой цели. Я сделал снимок на своем компьютере с Windows, скопировал и вставил проект в свою Ubuntu, повторно открыл проект в RStudio, установил Packrat, и восстановление пакетов запустилось автоматически. Затем я столкнулся с проблемой, заключающейся в том, что некоторые пакеты, требующие системных зависимостей, не были установлены автоматически, например, rgdal и jqr. Поэтому мне пришлось вручную устанавливать эти системные зависимости вручную в терминале (мне потребовалось некоторое время, потому что их было около 10, что требовало дополнительных системных зависимостей).
Мне интересно, есть ли более простой способ просто автоматически справиться с этим. Позже мне нужно будет поработать с системным администратором для развертывания приложения на сервере. Мне интересно, имеет ли Packrat возможность автоматической установки системных зависимостей на компьютере / сервере Linux. Если кто-нибудь сталкивался с этой проблемой раньше или у него есть другие лучшие варианты, пожалуйста, дайте мне знать!
Спасибо!
Ответ №1:
Здравствуйте и добро пожаловать в StackOverflow.
Вы сталкиваетесь с вопросом, который на самом деле гораздо сложнее решить, чем вы можете подумать на первый взгляд — развертывание сложных зависимостей пакетов R в разных операционных системах — действительно сложная и, по правде говоря, нерешаемая проблема!
Вы, конечно, можете использовать packrat
and renv
для зависимостей пакетов R и моментальных снимков определенных версий. Но это ничего не делает для зависимостей системного уровня, которые просто воспринимаются как «заданные». Так что нет, чтобы просто перенести в другое поле и сказать «абракадабра». Извините!
Самым близким, что мы все могли исправить, может быть Docker, где вы можете создать переносимый модуль выполнения, который может быть развернут везде, где запускается Docker: Windows, macOS, разные версии Linux, … поскольку он кодирует все.
Комментарии:
1. Спасибо, Дирк. Я предполагаю, что тогда будет использоваться Docker.
2. Да, это также немного зависит от того, что именно вы хотите сделать — например, одна из причин, по которой Shiny стал настолько популярным, заключается в том, что он «извлекает R из этого»: коллегам / пользователям / клиентам просто нужен веб-браузер. Аналогично API-интерфейсам, работающим по сети, требуется только подключение к сети, но затем вам нужен сервер. И так далее, и так далее. Пакет R уже является довольно портативной «единицей», так что это тоже выбор.