Как установить 2 разные версии R на Debian?
-
27-10-2019 - |
Вопрос
На нашем сервере установлена версия R 2.12.1, следующая инструкциям на http://cran.r-project.org/bin/linux/debian/ , используя apt-get install
и т.д. и т.п.
В силу обстоятельств старая машина lenny не была обновлена до нового стабильного debian, и, похоже, это произойдет не скоро.Поскольку некоторые исследования здесь зависят от последней версии VGAM, нам нужен R 2.14.0, установленный в debian.Но для того, чтобы сохранить старый код запущенным, мы не можем просто удалить R 2.12.1 (установка VGAM 0.8.4 в этой версии приводит к ошибкам).
Итак, нам нужно установить 2 R-версии.Из того немногого, что я понял, если мы просто используем apt-get upgrade
старая версия будет заменена новой.Я просмотрел кучу документации, но не могу найти оптимальный способ сделать это.
Единственное, что я мог себе сейчас представить, это попытаться собрать последнюю версию R из исходных текстов, но мои коллеги были не очень в восторге от этой идеи и побудили меня сначала поискать другое решение.Есть какая-нибудь информация, которую я пропустил, или кто-нибудь хочет показать мне маленький трюк, чтобы это сделать?Если создание из исходного кода является решением, я хотел бы услышать о любых подводных камнях или возможных проблемах.
Решение
Как я упоминал в комментариях, это теоретически возможно точно так же, как некоторые семейства пакетов (Emacs, PostgreSQL, ...) допускают несколько одновременных версий.
Я не могу предложить это прямо сейчас, поскольку мы используем /usr/{share,lib}/R
которые противоречат друг другу.Если бы я должен был это сделать /usr/{share,lib}/R-$version
а затем используйте dpkg-alternatives
чтобы переключиться на предпочтительный вариант по умолчанию, мы, возможно, могли бы это сделать.Проблема заключается в переходе.Эта функция используется меньшинством пользователей, доступ к ней может привести к ошибкам для большинства, пока она не станет стабильной.Кроме того, у меня нет свободного времени (но если кто-то еще хочет это сделать, пожалуйста, сделайте это).
В то же время, вы можете
возможно, использовать расширенную функцию
dpkg
и распакуйте в локальный каталог, а не в каталог по умолчанию, приведенный ниже/
-- итак/opt/R/oldversions/2.12.1
это должно быть возможно.R мог бы даже запуститься, вам нужно переопределить$RHOME
соответственно.просто встроите локальные варианты в
/usr/local
если вы в самом деле долженесли конкретный пакет CRAN / не-CRAN утверждает, что ему нужна определенная версия R, исправьте этот чертов пакет уже сейчас!;-)
Наконец, это тема для r-sig-debian
например, сопровождающие CRAN Майкл и Йоханнес не будут читать эту тему здесь.
Другие советы
Вы можете устанавливать различные версии ЛЮБОГО программного обеспечения, используя соответствующие флаги компиляции.Когда вы запустите сценарий настройки с помощью --help, вы должны увидеть опцию для просмотра программы установки root.
Взгляните на
./configure --help
...
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
таким образом, вы могли бы установить R-2.14 для:
/usr/local/R/2.14
и вы могли бы установить R-2.12 для:
/usr/local/R/2.12
когда вы запустите сценарий настройки, выполните:
./configure --prefix=/usr/local/R/2.14
и так далее.
Я думаю, что если нет репозитория debian, предоставляющего несколько версий, трудно поддерживать бесперебойную работу двух версий R без компиляции R из исходного кода.
Что я часто делаю, так это устанавливаю R в моем домашнем каталоге, поскольку наш институт не дает нам привилегий root.Чтобы установить исходную версию R по всей системе, вы могли бы установить ее в отдельный каталог (например/opt/R2.14) и использовать:
./configure --prefix=/opt/R2.14/
Последним шагом является создание символической ссылки на двоичный файл R:
ln -s /opt/R2.14/bin/R /usr/bin/R2.14
Затем пользователи могут запустить две версии R (R и R2.14).Надеюсь, это поможет!
Это правда, что создать R из исходного кода очень-очень просто (даже я могу это сделать!), если вы знаете следующую команду для запуска первой :
apt-get build-dep r-base
в противном случае вы можете получить ошибки отсутствующего типа библиотеки из make
.Спасибо Дирку, который опубликовал этот драгоценный камень в прошлом.Я не видел этого в руководстве, README или FAQ.
Тогда это просто :
./configure
make
Я полагаю, тогда это могло бы послужить вам поводом для размышлений:использует ли R статические или динамические системные библиотеки?Может ли самодельный R ссылаться на библиотеки, отличные от предварительно упакованного двоичного R?(Я не знаю).Насколько вы углубитесь в это, зависит от того, насколько важно ваше приложение R, я полагаю, и какие системные библиотеки важны для вас.