Mac OS X 10.10.5中旧版本的R.

时间:2015-11-14 15:44:21

标签: r macos

我在我的mac中下载R时遇到问题,我现在已经处理了好几个小时了。

我的目的是在SPSS中使用倾向得分匹配(来自source forge)。我在我的mac OS X yosemite 10.10.5上使用SPSS 22版。

在不同的网站上阅读了很多内容后,我需要使用R.2.15 for SPSS 22,以便在源代码上使用psmatching 3.03。

但是,当我运行安装包时,我似乎无法安装R 2.15。当我要在macintosh HD上选择目的地时,它表示无法在此磁盘上安装适用于Mac OS X 10.5或更高版本的R2.15.0。这怎么可能?我的OS X版本高于R 2.15的要求版本。

有关如何进行安装的任何想法?

2 个答案:

答案 0 :(得分:1)

我自己也遇到过这个问题:SPSS版本需要安装非常特定的R版本才能使R Integration插件正常工作。较旧或较新版本的R是不够的。

我认为安装错误是由于旧的R安装程序试图验证足够高的OS X系统版本。但它并不认为10.10+高于10.9(或10.5)。

以下链接包含有关禁用OS X El Capitan的系统完整性保护的信息,以便更改OS X文件/System/Library/CoreServices/SystemVersion.plist,以便报告错误的系统版本安装程序。 https://forums.developer.apple.com/thread/4138

更安全的方法可能是手动放置来自R的2.15安装程序的文件。尽管如此,我的尝试明显复杂化了。我打开了R 2.15.pkg安装程序文件,找到了一个文件' payload'在里面,使用' tar -xzvf Payload'提取内容,并将这些内容移动到/Library/Frameworks/R.framework/Versions/2.15。回想起来,临时重新别名" Current"在R.frameworks文件夹中,以便在安装程序完成时指向2.15版本。相反,我做了以下操作来解决我在安装程序日志文件中找到的安装程序错误消息,这对我有用:

SPSS Essentials for R安装程序报告安装位置不包含R 2.15。检查错误日志文件让我相信安装程序试图验证R版本是否不恰当地导航到"当前"版本(别名为特定版本,如果手动安装2.15,可能不是R 2.15),即使2.15的目录是专门输入安装程序的。然后,它寻找从R 3.2.2开始不再存在的几个i386子目录。所以(对于我的情况)我手动创建了" /Library/Frameworks/R.framework/Versions/3.2/Resources/bin/exec/i386"并复制了版本2.15的R unix可执行文件,并对" /Library/Frameworks/R.framework/Versions/3.2/Resources/etc/i386"进行了类似操作,复制安装程序搜索的ldpaths文件。这样做最终允许完成SPSS Essentials for R安装程序。回想起来,暂时重新混叠"当前"在R.frameworks文件夹中可能是一个更直接的方法,但我现在还没有尝试过。

答案 1 :(得分:0)

为了它的价值,我能够安装旧版本的R(出于不同的目的,但我在试图找出它时找到了这个页面),而不必暂时更改操作系统的版本我系统上的X(或macOS)。这对我来说似乎很危险,我想要一个更简单的修复。

对我有用的是解压缩安装程序pkg,修改版本检查,然后重新打包。

  1. 从CRAN下载pkg安装程序
  2. 打开终端并cd到安装程序所在的目录:例如,

    cd ~/Downloads
    
  3. 使用pkgutil展开您下载的pkg文件

    pkgutil --expand R-2.15.0.pkg R-2.15.0
    
  4. 这将创建一个名为R-2.15.0的文件夹(您可以在上面的命令中将其命名为任意名称)。在该文件夹中是一个名为Distribution的文本文件。

    1. 在文本编辑器(例如,TextEdit)中打开Distribution文件,然后 在检查OS版本的开头修改函数 例如,如果它需要Leopard,那么就会有一条线 看起来像这样:

      if(!(my.target.systemVersion.ProductVersion >= '10.5.0')) {
        ...
      }
      
    2. 请注意,用于比较的版本字符串是字符串(不是数字!),因此任何超过10.9(10.10及更高版本)的版本都将无法通过该检查(' 10.10'在' 10.1'和' 10.2'之间排序,小于< 10.5')。

      1. 我所做的只是将最低版本(' 10.5.0')更改为' 10.1'。所以同一行写着:

        if(!(my.target.systemVersion.ProductVersion >= '10.1')) {
        
      2. 保存Distribution文件。

      3. 返回终端并重新打包在步骤3中创建的目录:

        pkgutil --flatten R-2.15.0 R-2.15.0-HACKED.pkg
        
      4. 只要你能识别它,你可以随意调用新的pkg。

        1. 生成的软件包(在此示例中为R-2.15.0-HACKED.pkg)现在将在任何版本的OS X上运行,该版本高于或等于您指定的版本(在本例中为10.1及更高版本)。
        2. 免责声明:我实际上用R-2.12.0对它进行了测试(并且它有效),但我提供了R-2.15.0的示例代码来回答原始问题。它应该与OS X的任何R安装程序pkg类似,它使用类似的版本字符串在安装之前检查兼容性。