2013-10-17 13 views
5

Bir kullanıcının hesabı altında kurulmuş olan R paketlerine opencpu'dan erişmeye çalışıyorum. O kullanıcı olarak Ar başlattığınızda ben paket yüklü olduğunu görebilirsiniz: Ancakopencpu içinde kullanıcı hesabı altında R paketlerine erişemiyor

> installed.packages() 
      Package  LibPath           
RLIM  "RLIM"  "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0" 
... 
> system('whoami'); 
ali 

, ben opencpu gelen kitaplığı erişmeye çalıştığınızda, ben paketi belirten hatalar bulunamadı olsun:

$ curl -L http://<my.server>/ocpu/user/ali/library/RLIM 
there is no package called 'RLIM' 

In call: 
find.package(pkgname, lib.loc = lib.loc) 
# from same server, to confirm opencpu is running... 
$ curl -L http://<my.server>/ocpu/library 
base 
bitops 
boot 
brew 
... 

Herhangi bir yardım büyük memnuniyetle karşılanacaktır!

Platformu bilgi:

  • Host: Ubuntu 12.04
  • opencpu-sunucu 1.0.4-precise0
  • opencpu-lib: 1.0.4-precise0
  • R versiyonu 3.0.2 (2013 -09-25) - "Frisbee Sailing"

cevap

1

Ev kitaplığınız varsayılan olarak /home/ali/ konumunda değil gibi görünüyor. Bu nedenle, paketlerinize erişmek için bazı ek adımlar gereklidir.

Her şeyden önce, varsayılan güvenlik profili OpenCPU'nun /limdata/'a erişmesine izin vermez. Bunun gerçekten sorun olduğunu doğrulamak için /var/log/kern.log'a bakın ve APPARMOR ve DENIED içeren satırları arayın. Lütfen başlıklı bölümü okuyun. PDF server manual güvenlik profili'u özelleştirme.

, güvenlik profiline ev kütüphane eklemek /etc/apparmor.d/opencpu.d/custom düzenleyebilir ve bu satırları eklemek için:

/limdata/ r, 
/limdata/** mrix, 

Daha sonra yeniden başlatma AppArmor ve opencpu: güvenlik kısıtlamaları dikkatli olmalıdır

sudo service apparmor restart 
sudo service opencpu restart 

. Umarım bunu yapar. dürüst olmak gerekirse, ev dizininin /home dışında bir senaryoyu test etmedim ama eğer R_LIBS_USER ortam değişkeniniz doğru bir şekilde yapılandırılmışsa, çalışmalıdır. Bana izin vermeme izin vermezse

+0

Cevabınız için teşekkür ederiz! Kern.log'da hiçbir DENIED girişi görmedim. Düzenleme /etc/apparmor.d/opencpu.d/custom ve yeniden başlatıcı apparmor ve opencpu sorunu çözmedi. Ancak,/ocpu/kullanıcı kaynağı üzerinde GET yayınladığımda, listelenen tek kullanıcının evinin/evinin altında olduğu kişi olması tuhaftı./Home altında yeni bir kullanıcı ekledim ve kullanıcıların ev kütüphanesini görebiliyorum. R_LIBS_USER'a daha fazla kazmaya ve bulgularımı göndermeye çalışacağım. Yardım için tekrar teşekkürler! –

+0

Sanırım sorunun nedenini biliyorum. Userlibpath.R içindeki userhome() işlevi, etkin kullanıcı kök veya www-data olarak apache işleminin çalıştığı sırada '/ home' döndürür. Yani kullanıcı kök veya www-data "kullanıcı" ali ile aynı işlevi çalıştırırken yanlış "/home/ali/R/x86_64-pc-linux-gnu-library/3.0" döndürür veya kullanıcı verileri olarak döndürür yol: "/limdata/ali/R/x86_64-pc-linux-gnu-library/3.0" –

+0

Evet haklısınız. Eğer kullanıcı ev dir dediğini daha sağlam bir şekilde önermek istiyorsanız, bir çekme isteği gönderin :-) Belki de geçici bir çözüm,/home/ali'den '/ limdata/ali'ye bir sembolik bağlantı yapmak olabilir mi? – Jeroen

İlgili konular