Как установить 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
чтобы перейти к предпочитаемому по умолчанию, мы могли бы сделать это. Проблема в переходе. Эта функция используется меньшинство пользователей, и получение большинства из них может привести к ошибкам для большинства, пока она стабильна. Кроме того, у меня нет свободного времени (но если кто-то хочет это сделать, пожалуйста, сделайте это).
А пока можно
возможно использовать расширенную функцию
dpkg
и распаковать в локальный каталог, а не по умолчанию ниже/
-- так/opt/R/oldversions/2.12.1
должно быть возможно. R может даже бежать, нужно переопределить$RHOME
соответственно.просто встроить локальные варианты в
/usr/local
если ты действительно долженесли конкретный пакет 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 и какие системные библиотеки для вас критичны.