【问题标题】:cannot install R tseries, quadprog ,xts packages in Linux无法在 Linux 中安装 R tseries、quadprog、xts 包
【发布时间】:2017-12-30 17:22:47
【问题描述】:

我使用的是 R 版本 3.4.0

我正在尝试在 linux 机器上安装 tseries 包:

install.packages('https://cran.cnr.berkeley.edu/src/contrib/tseries_0.10-42.tar.gz',dependencies = TRUE,repos = NULL,type ="source")

It gives error:
ERROR: compilation failed for package 'xts'
* removing '/usr/lib64/R/library/xts'
ERROR: dependency 'xts' is not available for package 'TTR'
* removing '/usr/lib64/R/library/TTR'
ERROR: dependencies 'xts', 'TTR' are not available for package 'quantmod'
* removing '/usr/lib64/R/library/quantmod'
ERROR: dependencies 'quadprog', 'quantmod' are not available for package 'tseries'
* removing '/usr/lib64/R/library/tseries'

1: In install.packages("tseries", dependencies = TRUE) :
  installation of package 'quadprog' had non-zero exit status
2: In install.packages("tseries", dependencies = TRUE) :
  installation of package 'xts' had non-zero exit status
3: In install.packages("tseries", dependencies = TRUE) :
  installation of package 'TTR' had non-zero exit status
4: In install.packages("tseries", dependencies = TRUE) :
  installation of package 'quantmod' had non-zero exit status
5: In install.packages("tseries", dependencies = TRUE) :
  installation of package 'tseries' had non-zero exit status

然后我尝试使用以下方法安装 quadprog:

install.packages('https://cran.cnr.berkeley.edu/src/contrib/quadprog_1.5-5.tar.gz',dependencies = TRUE,repos = NULL,type ="source")

它给出了错误:

/usr/bin/ld: cannot find -lgfortran
collect2: error: ld returned 1 exit status
make: *** [quadprog.so] Error 1
ERROR: compilation failed for package 'quadprog'
* removing '/usr/lib64/R/library/quadprog'

请帮助我该怎么办。我在安装这些软件包时遇到了困难。

我已经安装了 R 使用:

sudo yum -y install R-core R-devel

我尝试安装 gfortran 使用:yum install gcc-gfortran

它说:包 gcc-gfortran-4.4.7-18.el6.x86_64 已经安装和最新版本 无事可做

【问题讨论】:

  • 只需阅读错误消息:cannot find -lgfortran。所以安装一个 Fortran 编译器,大概是与 gccg++ 二进制文件相同版本的 gfortran
  • 如何安装,请告知。我有 gcc (GCC) 4.7.2 20121015 (Red Hat 4.7.2-5)
  • 请检查编辑。我尝试安装 gfortran
  • 这样你就有了 Fortran 编译器。您仍然需要 Fortran -dev 包,提供您未能链接到的 Fortran 库。我不知道 RedHat/CentOS 怎么称呼它——在 Debian 下它会是 libgfortran-6-dev for gcc-6 等等。
  • 请帮我为 RedHat/CentOS 找到它。没找到

标签: r linux yum install.packages


【解决方案1】:

这里的问题是 Fortran 编译器 (gfortran) 和 GCC 编译器驱动程序 (gcc) 不同步:gfortran 是版本 4.4.7,gcc 是版本 4.7.2。这意味着他们使用不同的目录来存储文件,而gcc 无法找到gcc-gfortran 包安装的libgfortran.so 符号链接。

解决方案是将这两个编译器带到相同的版本。这可以通过调整PATH变量来实现(根据其他讨论,gcc这里不是指/usr/bin/gcc),卸载提供此gcc命令的软件集合(使用yum remove devtoolset-1.1-gcc),或者安装同一软件集合的 Fortran 组件,使用 yum install devtoolset-1.1-gcc-gfortran

我最好的猜测是你的devtoolset-1.1-gcc 包来自这个存储库:

所以你也可以从那里使用gfortran 包(也可以选择c++ 包,以避免类似的问题)。

【讨论】:

  • 假设我不想卸载并使用 PATH 变量来解决此问题?我该怎么做?
  • 您需要找出devtoolset-1.1-gcc 的来源并从同一来源安装devtoolset-1.1-gcc-gfortran。
  • rpm -qi devtoolset-1.1-gcc 可能会告诉你是谁构建了这个包。
  • 我认为它来自 yum -y install centos6.iuscommunity.org/... \ && yum -y install python36u \ && yum -y install python36u-devel \ && yum -y install python36u-pip \ && yum -y 安装 python36u-tkinter.x86_64
  • 你能告诉我如何从同一来源安装 devtoolset-1.1-gcc-gfortran 吗?
【解决方案2】:

在遇到同样的错误之后,唯一对我有用的解决方案是重新安装所有 R 组件。

为了完整起见,我所做的是删除所有 R 组件: dpkg -l | grep ^ii | awk '$2 ~ /^r-/ { print $2 }' | sudo xargs apt-get remove --purge -y(来自here

然后重新安装 R:sudo apt-get install r-base r-base-dev

【讨论】:

    【解决方案3】:

    我通过使用以下方法从源重新安装 R 来解决此问题:

    make install rhome=/usr
    

    【讨论】:

      猜你喜欢
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      相关资源
      最近更新 更多