我正在运行 Ubuntu 16.04。我正在尝试安装 R 包tcltk
。当我运行时install.packages('tcltk')
,出现以下错误:
Installing package into ‘/home/esander/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
--- Please select a CRAN mirror for use in this session ---
Error: .onLoad failed in loadNamespace() for 'tcltk', details:
call: fun(libname, pkgname)
error: Can't find a usable init.tcl in the following directories:
/opt/anaconda1anaconda2anaconda3/lib/tcl8.5 ./lib/tcl8.5 ./lib/tcl8.5 ./library ./library ./tcl8.5.18/library ./tcl8.5.18/library
我的第一个想法是卸载并重新安装tcl
。我这样做了,现在如果我运行sudo apt-get install tcl
,它会说它是最新版本(8.6.0+9)。好的,所以看起来 R 正在奇怪的地方寻找 tcl(并且正在寻找 tcl 8.5),所以我想找到路径并以某种方式将 R 链接到它。但是当我运行时whereis tcl
,我得到:
tcl:
显然 Ubuntu 找不到安装路径。我尝试以蛮力方式找到它,运行find / -name tcl 2> /dev/null
,结果得到:
/usr/share/ruby-rouge/demos/tcl
/usr/share/doc/tcl
/home/esander/anaconda3/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
/home/esander/anaconda3/pkgs/notebook-4.2.1-py35_0/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
/home/esander/.conda/envs/my_root/lib/python3.5/site-packages/notebook/static/components/codemirror/mode/tcl
这些位置看起来像是文档,或者是特定于 ipython 笔记本的内容。我不完全理解这一点,但显然存在某种链接/安装问题。我如何找到tcl
或安装它以便出现正常的安装路径?
答案1
我也为同样的问题绞尽脑汁。显然我将其设置~/anaconda3
为工作目录,并且成功了!可能是因为./lib/tcl8.5/init.tcl
现在在路径上。
答案2
通常,在安装第三方程序/软件包之前,您应该检查标准存储库(universe、multiverse 等)的可用性,或类似的东西。对于我的 Ubuntu 20.04 系统,可能是 r-cran-tcltk2。
如果您确实安装了“外部”程序,它可能不会安装到 Ubuntu 期望安装可执行文件和库的位置。处理此问题的标准方法是将位置添加到可执行文件的 PATH 变量中,将库的位置添加到 LD_LIBRARY_PATH 中。然后导出 LD_LIBRARY_PATH,以使其可用于后续命令。PATH 已导出。添加新位置可能位于现有环境变量的开头或结尾。将它们添加到开头可能会覆盖系统程序,但这可能正是您想要的——例如当您想要一个与系统提供的编译器版本不同的特定编译器版本时。
PATH=~/anaconda3/bin:${PATH}
export LD_LIBRARY_PATH=~/anaconda3/lib/tcl8.5:${LD_LIBRARY_PATH}