2011-04-06 43 views
15

我刚刚开始使用Ubuntu并希望在R中编程。我成功地从终端安装了最新版本的R(当前为2.12.2)。然后我试图运行下面的命令:在Debian/Ubuntu中安装R Package XML

> install.packages("XML") 
Installing package(s) into ‘/usr/local/lib/R/site-library’ 
(as ‘lib’ is unspecified) 
Warning in install.packages("XML") : 
    'lib = "/usr/local/lib/R/site-library"' is not writable 
Would you like to create a personal library 
'~/R/i686-pc-linux-gnu-library/2.12' 
to install packages into? (y/n) 

我应该创建个人目录或我错过了什么地方了一步,让我写网站库。

在此先感谢。

+8

什么时候开始通过'sudo'或者只是作为一个普通用户的'R'的壳呢?普通用户没有写入'/ usr/local/lib /'的权限,所以如果你首先用'sudo'启动'R',它应该允许写入站点库目录。 – sarnold 2011-04-06 00:25:27

+0

只需按y。 :) – 2011-04-06 05:32:04

+4

最好使用'/ usr/local/lib/R/site-library /'。毕竟,Unix是一个多用户系统。 – 2011-04-06 17:19:24

回答

30

sarnold的评论是非常正确的。在Debian的(并且因此Ubuntu的)封装件,该目录/usr/local/lib/R/site-library/由文件/var/lib/dpkg/info/r-base-core.postinst脚本创建 - 和相关的代码是:

# edd 03 Apr 2003 cf Section 10.1.2 of Debian Policy 
if [ ! -e /usr/local/lib/R ]; then 
    if mkdir /usr/local/lib/R 2>/dev/null; then 
    chown root:staff /usr/local/lib/R 
    chmod 2775 /usr/local/lib/R 
    fi 
fi 
if [ ! -e /usr/local/lib/R/site-library ]; then 
    if mkdir /usr/local/lib/R/site-library 2>/dev/null; then 
    chown root:staff /usr/local/lib/R/site-library 
    chmod 2775 /usr/local/lib/R/site-library 
    fi 
fi 

所以目录由root:staff和的模式2775,或“用户所拥有和组读写,其他只读“。

所以写在那里,你有两个基本的选择:

  1. 始终使用sudo或成为root这是笨拙的。

  2. 将自己加入群组staff。可能有一个用户友好的GUI;我是Unix老派,通过编辑/etc/group/etc/gshadow手动完成 - 之后,你可以直接安装(你需要一个新壳来拥有这些权利,或者只是启动一个新的终端)。你当然也可以选择一个不同的组,或者创建一个,但是你也需要相应地改变目录树/usr/local/lib/R/

希望这会有所帮助。 r-sig-debian列表对于像这样的Debian/Ubuntu问题是一个友好的地方,我推荐它。问题出现在那里。

编辑:另外,(更复杂)封装相当数量是Ubuntu的/ Debian的一部分,因此要获得XML,你可以只是sudo apt-get install r-cran-xml。做一个apt-cache search r-cran看看有什么可用的。

+1

谢谢,巨大的帮助。 – Btibert3 2011-04-08 01:23:38

+6

“sudo adduser用户组”将把现有的USER添加到现有的GROUP。 – neilfws 2012-05-07 08:43:30

+0

选项2.在Ubuntu 14.04上不起作用。 – 2014-08-07 06:33:31

8

最简单的选择是将自己添加到staff用户组。刚刚运行:

sudo adduser <user> staff 

用您的用户名替换<user>

测试在Ubuntu 14.04