Как установить 2 разные версии R на Debian?

На нашем сервере 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 из исходного кода, но мои коллеги не очень заинтересовались этой идеей и побудили меня сначала поискать другое решение. Любая информация, которую я пропустил, или кто-то готов показать мне маленький трюк, чтобы сделать это? Если решение является сборкой из исходного кода, я хотел бы услышать о любых подводных камнях или возможных проблемах.

4 ответа

Решение

Как я упоминал в комментариях, это теоретически возможно, так же как некоторые семейства пакетов (Emacs, PostgreSQL, ...) допускают несколько одновременных версий.

Я не могу предложить это прямо сейчас, так как мы используем /usr/{share,lib}/R который конфликтует. Если бы я должен был сделать это /usr/{share,lib}/R-$version а затем использовать dpkg-alternatives чтобы перейти к предпочитаемому по умолчанию, мы могли бы сделать это. Проблема в переходе. Эта функция используется меньшинство пользователей, и получение большинства из них может привести к ошибкам для большинства, пока она стабильна. Кроме того, у меня нет свободного времени (но если кто-то хочет это сделать, пожалуйста, сделайте это).

А пока можно

  1. возможно использовать расширенную функцию dpkg и распаковать в локальный каталог, а не по умолчанию ниже / -- так /opt/R/oldversions/2.12.1 должно быть возможно. R может даже бежать, нужно переопределить $RHOME соответственно.

  2. просто встроить локальные варианты в /usr/local если ты действительно должен

  3. если конкретный пакет CRAN / non-CRAN утверждает, что ему нужна конкретная версия R, уже исправьте этот чертов пакет!;-)

Наконец, это тема для r-sig-debian например, сопровождающий CRAN Майкл и Йоханнес не будут читать эту ветку здесь.

Вы можете установить разные версии ЛЮБОГО программного обеспечения, используя соответствующие флаги компиляции. Когда вы запускаете скрипт конфигурации с помощью --help, вы должны увидеть опцию, чтобы увидеть установочный корень.

Взгляни на

./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 и какие системные библиотеки для вас критичны.

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