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