Packrat::restore() для системных зависимостей

Я разрабатывал блестящее приложение на компьютере с Windows в Rstudio. Теперь мне нужно разработать его на машине с Linux, а позже нужно будет развернуть его на сервере. Из-за необходимости запускать приложение на разных платформах я искал какое-то приложение для управления средой, чтобы мне не приходилось вручную настраивать и переустанавливать необходимые пакеты.

Я пытался использовать Packrat для этой цели. Я сделал снимок на своем компьютере с Windows, скопировал и вставил проект в свою Ubuntu, снова открыл проект в RStudio, установил Packrat, и восстановление пакетов запустилось автоматически. Затем я столкнулся с проблемой, что некоторые пакеты, требующие системных зависимостей, не были установлены автоматически, например. ргдал и джкр. Поэтому мне пришлось вручную устанавливать эти системные зависимости вручную в терминале (это заняло у меня некоторое время, потому что их было около 10, требующих дополнительных системных зависимостей).

Мне интересно, есть ли более простой способ просто автоматически справиться с этим. Позже мне нужно будет работать с системным администратором, чтобы развернуть приложение на сервере. Мне интересно, есть ли у Packrat возможность автоматической установки системных зависимостей на машине/сервере Linux. Если кто-то уже сталкивался с этой проблемой или у кого-то есть другие варианты, пожалуйста, дайте мне знать!

Благодарю вас!


person Andy Liang    schedule 23.09.2020    source источник


Ответы (1)


Здравствуйте и добро пожаловать в StackOverflow.

Вы столкнулись с вопросом, который на самом деле намного решить сложнее, чем вы можете подумать сначала: развертывание сложных зависимостей пакетов R в разных операционных системах — действительно сложная и, по правде говоря, нерешенная проблема!

Конечно, вы можете использовать packrat и renv для зависимостей пакета R и моментальных снимков определенных версий. Но это ничего не делает для зависимостей системного уровня, которые просто принимаются как данность. Так что нет, чтобы просто перейти на другую коробку и сказать абракадабру. Извиняюсь!

Ближе всего к исправлению этой проблемы мы все, возможно, подошли к Docker, где вы можете создать переносимую единицу выполнения, которую можно развернуть везде, где работает Docker: Windows, macOS, различные варианты Linux, ... как это кодирует все.

person Dirk Eddelbuettel    schedule 23.09.2020
comment
Спасибо, Дирк. Я предполагаю, что тогда путь будет использовать Docker. - person Andy Liang; 24.09.2020
comment
Да, это также немного зависит от того, что именно вы хотите сделать — например, одна из причин, по которой Shiny стал настолько популярным, заключается в том, что он убрал из него R: коллегам/пользователям/клиентам просто нужен веб-браузер. Точно так же API, работающие по сети, нуждаются только в сети, но тогда вам нужен сервер. И так далее. Пакет R уже является довольно портативным устройством, так что это тоже выбор. - person Dirk Eddelbuettel; 24.09.2020