R-пакет rJava загружается только при запуске R с помощью sudo
Я запускаю R 3.0.2 на Ubuntu 14.04.1. Я установил пакет rJava, но я могу заставить его работать только в R/RStudio, если я запускаю его с помощью sudo. Если я нажму на панель запуска приложения или просто введите R в командной строке, я получаю следующую ошибку при загрузке библиотеки rJava:
> library(rJava)
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or director
Error: package or namespace load failed for ‘rJava’
Однако, если я набираю 'sudo rstudio' или 'sudo R' в терминале, rJava загружает без проблем. Кто-нибудь знает, что я делаю неправильно?
Возможно, связанная с этим проблема: я установил rJava, введя
sudo apt-get install r-cran-rjava
в командной строке; установка нормального пути:
apt-get install r-cran-rjava
не работал у меня, а также не выполнял установку из R (без запуска его с использованием sudo). Когда я попытался установить этот путь, я столкнулся с той же проблемой, что и в этом вопросе.
Ответы
Ответ 1
Файл /usr/lib/R/site-library/rJava/libs/rJava.so
, вероятно, не читается никаким пользователем, кроме root. Вы можете проверить это с помощью:
ls -l /usr/lib/R/site-library/rJava/libs/rJava.so
Если вывод rw-------
или rw-rw----
, тогда простые пользователи не смогут его прочитать. Вы можете исправить это с помощью команды chmod
:
chmod -R a+rX /usr/lib/R/site-library/rJava/
Ответ 2
Перед запуском R необходимо отключить переменную окружения JAVA_HOME:
unset JAVA_HOME
Ответ 3
Увидела эту проблему при работе с Rscript. Судо работал, Rscript как пользователь этого не делал. Я сначала сделал chmod -R a + rX, как предположил damienfrancois, но это не сработало. Затем я попытался отключить JAVA_HOME, как предложил Гон. Это сработало (или, возможно, в сочетании с chmod).
Ответ 4
Я попробовал решение, перечисленное здесь, безрезультатно. Что работало над Ubuntu 14.04, было создание мягкой ссылки на libjvm.so в /usr/lib.
ln -s /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so /usr/lib