5

我已经通过brew. 对于一个项目,我需要 R 库geoR中的一个函数,该函数又依赖于tcl-tk. 我也通过 brew: 安装了这个brew install tcl-tk。但是,尝试安装geoR仍然会导致以下错误 - 我没有得到。重新安装 R/RStudio 没有帮助。也没有重新启动我的 Mac。哦,尝试geoR从 CRAN 下载的二进制文件安装也无济于事……最后,尝试tcl-tk从 R 网站安装软件包也不能解决这个问题。

我也在GitHub 上发布了这个brew——但也许其他人访问了 StackOverflow 的领域。

我的brew状态

brew config
HOMEBREW_VERSION: 1.5.2
ORIGIN: https://github.com/Homebrew/brew
HEAD: 60a30e966b7cece5bd4823dae3fb981ab85106ea
Last commit: 11 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 8c1c4f86a269cb23d9d92008abf1a37eabb297b6
Core tap last commit: 2 hours ago
HOMEBREW_PREFIX: /usr/local
CPU: quad-core 64-bit skylake
Homebrew Ruby: 2.3.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Clang: 9.0 build 900
Git: 2.16.1 => /usr/local/bin/git
Curl: 7.54.0 => /usr/bin/curl
Perl: /usr/bin/perl
Python: /usr/local/opt/python/libexec/bin/python => /usr/local/Cellar/python/2.7.14_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Java: 9.0.1
macOS: 10.13.3-x86_64
Xcode: N/A
CLT: 9.2.0.0.1.1510905681
X11: 2.7.11 => /opt/X11

错误

* installing *source* package ‘geoR’ ...
** package ‘geoR’ successfully unpacked and MD5 sums checked
** libs
clang -I/usr/local/Cellar/r/3.4.3_1/lib/R/include -DNDEBUG   -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include   -fPIC  -g -O2  -c geoR.c -o geoR.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/readline/lib -L/usr/local/lib -o geoR.so geoR.o -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -lR -lintl -Wl,-framework -Wl,CoreFoundation
installing to /usr/local/lib/R/3.4/site-library/geoR/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Warning: S3 methods ‘as.character.tclObj’, ‘as.character.tclVar’, ‘as.double.tclObj’, ‘as.integer.tclObj’, ‘as.logical.tclObj’, ‘as.raw.tclObj’, ‘print.tclObj’, ‘[[.tclArray’, ‘[[<-.tclArray’, ‘$.tclArray’, ‘$<-.tclArray’, ‘names.tclArray’, ‘names<-.tclArray’, ‘length.tclArray’, ‘length<-.tclArray’, ‘tclObj.tclVar’, ‘tclObj<-.tclVar’, ‘tclvalue.default’, ‘tclvalue.tclObj’, ‘tclvalue.tclVar’, ‘tclvalue<-.default’, ‘tclvalue<-.tclVar’, ‘close.tkProgressBar’ were declared in NAMESPACE but not found
Error : .onLoad failed in loadNamespace() for 'tcltk', details:
  call: fun(libname, pkgname)
  error: Tcl/Tk support is not available on this system
ERROR: lazy loading failed for package ‘geoR’
* removing ‘/usr/local/lib/R/3.4/site-library/geoR’
* restoring previous ‘/usr/local/lib/R/3.4/site-library/geoR’

The downloaded source packages are in
    ‘/private/var/folders/kh/0s66cjl5487fg_fhwgxqd2340000gn/T/RtmpooD5vJ/downloaded_packages’
Warning message:
In install.packages("geoR") :
  installation of package ‘geoR’ had non-zero exit status
4

2 回答 2

10

好吧,经过大量的谷歌搜索和对我所读内容的分析,我推导出了一个解决方案。

在这里,我添加了一些背景知识,说明我为什么需要解决方案以及我采取的分步过程。请注意,这当然不是最终的解决方案/程序,也许有些步骤是多余的——我会把它交给其他人。

背景

有时数据非常倾斜并且包含很多“零”(或接近“零”的非常小的数字)。在分析之前,需要对此类数据进行归一化以满足统计检验的假设(您可以在此处找到有关转换和归一化的更多信息)。通常人们进行对数转换(例如自然对数或 log 2),缺点是您丢失了“零”。

在我的情况下,这是一个问题,因为所做的测量是正确完成的(没有技术问题),所以“零”真的代表“零”。换句话说:我不想松开它们。几年前,我的一位同事向我指出了“Box-Cox”转换您可以在此处找到更多信息),并且此方法可R通过geoR软件包获得。

问题是:我brew用来安装RmacOS 上缺少的许多其他包/库,例如 wget. 由于我仍然不明白的原因 - 但我也意识到它超出了我的编码能力 -通常不会brew一起安装。让它成为您需要的关键部分,并通过扩展功能来工作。经过一番谷歌搜索后,我得到了一些提示,这些提示使我(从表面上看)永久解决方案;网站上的讨论很关键R tcl-tkgeoRboxccoxfitbrew

一步步

  1. 我确定我已经通过 .tcl-tk 安装了brew

    • brew install tcl-tk
    • 我确定tcl-tk在我的路上:echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile
    • 该命令wish也证实了这一点。
  2. 我还确保我已经正确安装了命令行工具 - 上周对 High Sierra 进行了一些更新,其他人报告了这方面的问题,所以我担心它可能不得不重新安装。我不必这样做,但这就是我检查的方式。命令brew config显示:

    HOMEBREW_VERSION: 1.5.2
    来源: https://github.com/Homebrew/brew
    HEAD: 60a30e966b7cece5bd4823dae3fb981ab85106ea
    最后一次提交: 13 天前
    Core tap ORIGIN: https://github.com/Homebrew/homebrew-core Core
    tap HEAD: 8c1c4f86a269cbf23d79d292006e
    点击最后一次提交:2 天前
    HOMEBREW_PREFIX:/usr/local
    CPU:四核 64 位 skylake
    Homebrew Ruby:2.3.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
    Clang:9.0 build 900
    Git:2.16.1 => /usr/local/bin/git
    Curl:7.54.0 => /usr/bin/curl
    Perl:/usr/bin/perl
    Python:/usr/local/opt/python/libexec/bin/python => /usr/local/Cellar/python/2.7.14_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7
    Ruby:/usr /bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby Java:9.0.1
    macOS:10.13.3-x86_64
    Xcode:N/A
    ** CLT:9.2.0.0 .1.1510905681**
    X11:2.7.11 => /opt/X11

    粗体印刷线表明Command Line Tools应该安装。

  3. 然后,我使用命令仔细检查了路径是否真的设置xcode-select -p,它显示:

    /库/开发人员/命令行工具


  4. gcc设置得当。我使用 进行了检查gcc --version,结果显示:

    配置: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
    Apple LLVM 版本 9.0.0 (clang-900.0.39.2)
    目标: x86_64-apple-darwin17.4.0
    线程模型:posix
    InstalledDir:/Library/Developer/CommandLineTools/usr/bin


  5. 现在我已经确认了基础知识,我继续重新安装Xquartz,RRStudio. 为了确保我得到了R tcl-tk使用了 R 版本的@srfore。这些是后续命令。

    • brew cask reinstall xquartz,重新安装Xquartz可选,如果已安装。
    • brew reinstall -s sethrfore/homebrew-r-srf/r, 安装了R.
    • brew cask reinstall rstudio,重新安装Rstudio可选,如果已安装。
  6. 一切似乎都很好,我仔细检查了brew doctor.

    您的系统已准备好冲泡。

  7. 当然,对我来说,这一切都是从需要boxcoxfit使用R依赖geoRtcl-tk. 所以,现在是表演时间,我开始 R:

    install.packages("geoR")
    将软件包安装到 '/usr/local/lib/R/3.4/site-library'<br> (因为 'lib' 未指定)
    --- 请选择一个 CRAN 镜像用于此会话 ---
    安全 CRAN 镜像

    很多人在这里展示,所以我删除了这部分。

    选择:1
    尝试 URL 'https://cloud.r-project.org/src/contrib/geoR_1.7-5.2.tar.gz'
    内容类型 'application/x-gzip' 长度 421612 字节 (411 KB)
    == ==================================================
    下载411知识库

    * 安装包 'geoR' ...
    ** 包 'geoR' 成功解压并检查 MD5 和
    ** libs
    clang -I/usr/local/Cellar/r/3.4.3_1/lib/R/include -DNDEBUG -I /usr/local/opt/gettext/include -I/usr/local/opt/readline/include -I/usr/local/include -fPIC -g -O2 -c geoR.c -o geoR.o
    clang -dynamiclib - wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -L/usr/local/opt/gettext/lib -L/usr/local /opt/readline/lib -L/usr/local/lib -o geoR.so geoR.o -L/usr/local/Cellar/r/3.4.3_1/lib/R/lib -lR -lintl -Wl,-框架 -Wl,CoreFoundation
    安装到 /usr/local/lib/R/3.4/site-library/geoR/libs
    ** R
    ** 数据
    *** 将数据集移动到延迟加载数据库
    ** inst
    ** 为延迟加载准备包
    ** 帮助
    *** 安装帮助索引
    ** 构建包索引
    ** 测试是否可以加载已安装的包
    * DONE (geoR)

    下载的源包位于
    '/private/var/folders/kh/0s66cjl5487fg_fhwgxqd2340000gn/T/RtmpHJHtGf/downloaded_pa​​ckages'<br>


    加载 `geoR` 不是问题:

    库(“geoR”)
    -------------------------------------------- ------------------
    地统计数据分析
    有关 geoR 的介绍,请访问http://www.leg.ufpr.br/geoR
    geoR 版本 1.7-5.2(基于2016-05-02) 现已加载
    ----------------------------------------- ---------------------

于 2018-02-06T13:11:16.477 回答
0

这不是我要提供的一个很好的解决方案,但它为我解决了问题。我在一个合作项目中,我们特别想使用 geoR:varcov.spatial()。由于 mac 用户的 xquartz 等问题,我们实际上最终从原始包代码中提取了函数,并在单独的脚本中单独加载了该函数。我们仍然在论文中引用包,但我们实际上并没有安装或加载 geoR。

我知道这不是很好,但它似乎是最少的大惊小怪。不能解决你所有的问题,但可能是一个值得考虑的 B 计划。

于 2021-05-18T16:35:27.057 回答