Как избежать проблем с зависимостями R при обновлении ОС ma c - PullRequest
0 голосов
/ 30 марта 2020

Я кодирую и запускаю несколько приложений на R (включая блестящие), и большинство из них работают на более старых версиях R (например, 3.5.2_2).

Я пишу с ОС Ma c, но Я запускаю некоторые из этих приложений на linux экземплярах или docker контейнерах. Я установил R с помощью homebrew, тогда он был 3.5.2_2 и имел несколько R cpp, fortran, геопространственных (rgdal, ...) и других видов зависимостей для пакетов R. Обычно это работает хорошо (с некоторыми хлопотами вокруг), но регулярно я получаю некоторые проблемы с зависимостями. Последнее, когда я наконец-то осмелился перейти на Ma c OS 10.5 (я все еще был ниже 10.4), и теперь я больше не могу запускать R (например, openblas был обновлен, а R 3.5.2 не может с этим работать). новая версия). Я восстанавливаю Ma c OS 10.14 из резервной копии машины времени, чтобы избежать решения многих проблем, но мне нужно более долгосрочное решение. Точно так же я однажды установил пакет R, который обновил зависимость (я думаю, что это было для mapview :: mapshot), которая заставила R больше не работать, и каждый раз это одна и та же история: восстановление всего с машины времени и забывание о том, что я хотел усовершенствовать. Потому что, когда я пытаюсь разобраться с сообщением об ошибке, каждый шаг к его решению поднимает другие проблемы с зависимостями, поэтому я трачу столько часов, чтобы научиться лучше восстанавливать с помощью машины времени и возвращаться к нормальному кодированию. Но очевидно, что это не может go вечно, и я очень устал от подобных проблем.

Поэтому я ищу долгосрочное решение, которое позволило бы мне лучше изолировать свои зависимости. Я обычно использую packrat для определения своих пакетов R воспроизводимым способом (т. Е. Для возможности повторного создания заданного набора пакетов на другой машине при развертывании), но я хочу что-то, что заботится не только о пакетах R, но и о моем целые библиотеки зависимостей.

Возможным решением будет создание docker экземпляров с помощью RStudio, где я могу определить версию R и различные зависимости и код / ​​тест из этих экземпляров. Для этого я бы смонтировал папку из своей ма c на экземпляр docker и поработал над кодом из этой папки. Но я понимаю, что это будет работать только при наличии RStudio в браузере. И что он скорее предназначен для экземпляра, работающего на каком-либо сервере, и его могут использовать различные пользователи. Или есть другой способ?

Мне также интересно, почему система (будь то через homebrew или некоторые другие типы установок) позволяет обновлять некоторые библиотеки, которые затем приводят к тому, что другие вещи не работают. Разве нет общего обходного пути для подобных вещей?

Поскольку у меня много приложений, мне нужен способ изолировать процесс разработки для каждого (например, иметь возможность использовать разные версии R и R библиотеки пакетов для каждого приложения). В конце концов я могу обновить часть кода для запуска на более поздних версиях R, но это займет время. Я больше не хочу быть таким уязвимым для обновлений ОС и библиотек, но все же смогу плавно разрабатывать мой код.

Есть ли хороший совет, как лучше go об этом? Возможно также другие варианты, чем docker? Если docker, какие рекомендуемые шаги?

Я буду очень заинтересован в том, чтобы услышать об опыте других и, возможно, получить некоторые подсказки по альтернативным решениям.

...