在Debian / Ubuntu中安装R包XML

16

我刚开始使用Ubuntu并想编写R程序。我已经成功地从终端安装了最新版本的R(当前版本为2.12.2)。然后我尝试运行以下命令:

> 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 shell?普通用户没有权限写入/usr/local/lib/,因此如果你先使用sudo启动R,则可以允许写入站点库目录。 - sarnold
4
最好使用/usr/local/lib/R/site-library/。毕竟,Unix是多用户系统。 - Dirk Eddelbuettel
谢谢 @sarnold,“sudo R” 对我有用。 - Femi Oni
2个回答

35

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来完成这个步骤——之后你就可以直接安装(好吧,你需要一个新的shell才能拥有这些权限,或者只需启动一个新的终端)。当然,您也可以选择不同的组,或创建一个新组,但这样您还需要相应地改变/usr/local/lib/R/中的目录树。
希望这有所帮助。r-sig-debian列表是Debian / Ubuntu问题的友好场所,我推荐它。此类问题以前曾在那里提出过。
另外,相当数量的(更复杂的)软件包是Ubuntu / Debian的一部分,因此要获得XML,您可以直接运行sudo apt-get install r-cran-xml。运行apt-cache search r-cran以查看可用选项。

6
"sudo adduser USER GROUP" 会将已存在的用户加入到已存在的组中。 - neilfws
选项2在Ubuntu 14.04上无法正常工作。 - Luís de Sousa
没错,你只需要注销并重新登录即可。 - John Manak

8
最简单的方法是将自己加入staff用户组。只需执行以下命令即可:
sudo adduser <user> staff

请使用您的用户名替换 <user>

在 Ubuntu 14.04 中测试通过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接