2014-09-06 6 views
0

Я звоню из Perl-CGI, используяНе удается загрузить библиотеку R на сервере с помощью команды Rscript

my $call = qx(Rscript tcga_analysis.R $bg_name $ctr_name $set $user);

, когда я использую Rscript myRscript.R с UNIX на сервере это работает, но с Perl я не могу похоже, могут загрузить любой пакет. Я получаю следующее сообщение об ошибке (из журнала Apache):

Error in library(gplots) : there is no package called 'gplots'

с использованием .libPaths():

> .libPaths() 
[1] "/home/sbattaglia/R/x86_64-redhat-linux-gnu-library/3.1" 
[2] "/usr/lib64/R/library" 
[3] "/usr/share/R/library" 

, которая показывает свою личную библиотеку в домашней папке.

Я попытался с помощью

library(gplots, lib.loc="/home/sbattaglia/R/x86_64-redhat-linux-gnu-library/3.1") 

, но я получаю lib.loc error о том, что нет библиотеки деревьев там. Я даже создал файл .Rprofile в рабочем каталоге, содержащем путь к библиотеке, но не успел. Я также попытался добавить pos=1, но без успеха ...

однако, если я открываю R и называть library(gplots) работает

Мне нужно, чтобы он рабочий вызова Rscript из Perl, потому что это часть трубопровода анализа, который использует веб-интерфейс -> perl-cgi -> R для анализа некоторых данных!

спасибо :)

+2

Является ли скрипт cgi другим пользователем, возможно, apache? Возможно, проблема с разрешением. – flodel

+0

Я являюсь владельцем папки var/www/html, содержащей как R, так и perl cgi-скрипты. – TriRook

+0

Это разрешения библиотек R, которые кажутся проблемой. Попробуйте 'chmod -R a + r/home/sbattaglia/R/x86_64-redhat-linux-gnu-library/3.1', т. Е. Сделать все доступным для всех. – flodel

ответ

0

Я буду пост ответ, который пришел в чате с @floded.

В основном библиотеки были в папке на сервере, которые не были видны Apache. Я повторно загрузил пакеты, в которых были нужны файлы .R и .cgi, library(gplots, lib.loc="correctPathToLibrary") и он работал :)

 Смежные вопросы

  • Нет связанных вопросов^_^