Как установить 2 разные версии R на Debian? - PullRequest
11 голосов
/ 01 декабря 2011

На нашем сервере 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 ]

7 голосов
/ 01 декабря 2011

Вы можете установить разные версии ЛЮБОГО программного обеспечения, используя соответствующие флаги компиляции.Когда вы запускаете скрипт configure с параметром --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

и т. Д.

4 голосов
/ 01 декабря 2011

Как я уже упоминал в комментариях, это теоретически возможно, так же как некоторые семейства пакетов (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 Майкл и Йоханнес не будут читать эту ветку здесь.

3 голосов
/ 01 декабря 2011

Я думаю, что если нет репозитория Debian, который предоставляет несколько версий, трудно поддерживать плавную работу двух версий R без компиляции R. Исходный кодdir как наш институт не дает нам привилегий 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).Надеюсь, это поможет!

0 голосов
/ 01 декабря 2011

Это правда, что сборка R из исходного кода очень проста (даже я могу это сделать!), Если вы знаете следующую команду для первого запуска:

apt-get build-dep r-base

в противном случае вы можете получить недостающую библиотекуошибки типа от make.Спасибо Дирку, опубликовавшему этот драгоценный камень в прошлом.Я не видел этого в руководстве, README или FAQ.

Тогда это просто:

./configure
make

Полагаю, тогда это может быть вашим соображением: использует ли R статический илидинамические системные библиотеки?Может ли самодельный R ссылаться на другие библиотеки, чем на предварительно упакованный двоичный R?(Я не знаю).Насколько вы в этом разбираетесь, зависит от того, насколько критично ваше приложение R и какие системные библиотеки для вас критичны.

...