R v3.4.0-2 无法找到 libgfortran.so.3 Arch

R v3.4.0-2 unable to find libgfortran.so.3 Arch

我刚回到 Arch 上的 R 中工作,但在尝试打开 R 时出现以下错误

▶ R
/usr/lib64/R/bin/exec/R: error while loading shared libraries: libgfortran.so.3: cannot open shared object file: No such file or directory

这是我的r信息

▶ pacman -Qi r
Name            : r
Version         : 3.4.1-1
Description     : Language and environment for statistical computing and graphics
Architecture    : x86_64
URL             : http://www.r-project.org/
Licenses        : GPL
Groups          : None
Provides        : None
Depends On      : blas  lapack  bzip2  libpng  libjpeg  libtiff  ncurses  pcre  readline  zlib  perl  gcc-libs  libxt  libxmu
                  pango  xz  desktop-file-utils  zip  unzip
Optional Deps   : tk: tcl/tk interface [installed]
                  texlive-bin: latex sty files [installed]
                  gcc-fortran: needed to compile some CRAN packages [installed]
Required By     : rstudio-desktop-bin
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 58.13 MiB
Packager        : Antonio Rojas <arojas@archlinux.org>
Build Date      : Fri 30 Jun 2017 10:45:26 AM PDT
Install Date    : Sat 15 Jul 2017 11:47:54 PM PDT
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

符号链接

▶ ls -halt /usr/lib/libgfortran.so.*
-rwxr-xr-x 1 root root 7.1M Jun 30 05:20 /usr/lib/libgfortran.so.4.0.0
lrwxrwxrwx 1 root root   20 Jun 30 05:20 /usr/lib/libgfortran.so.4 -> libgfortran.so.4.0.0

我发现了以下问题 ,但我无法遵循解决方案。当尝试 yaourt r-devel 包时,我遇到了包构建错误。我也试过用不同版本的gfort运行,但是运行里面出现问题。我想知道是否有人可以进一步分解这个问题的解决方案。

我刚遇到这个问题,除了我的错误消息是 libgfortran.so.4。发生此错误的方式有很多种,因为 AUR 中有各种包可以覆盖 Arch 存储库中的包。在我的具体情况下,我用 atlas-lapack.

覆盖了 lapack

我是这样想的。

首先,我安装了 pax-utils 以便我可以使用 lddtree 工具。然后我 运行 lddtree /usr/lib64/R/bin/exec/R,这给了我这个输出:

/usr/lib64/R/bin/exec/R (interpreter => /lib64/ld-linux-x86-64.so.2)
    libR.so => /usr/lib/R/lib/libR.so
        libblas.so.3 => /lib64/libblas.so.3
            libgfortran.so.4 => None
            libatlas.so => /lib64/libatlas.so
# etc...

看起来 libblas.so.3 是罪魁祸首。接下来,我运行pacman -Qo /usr/lib/libblas.so.3,它告诉我/usr/lib/libblas.so.3 is owned by atlas-lapack 3.10.3-1。所以,我卸载了 atlas-lapack 并再次重建 R,它自动从 Arch 仓库中选择了 lapack 而不是 AUR 中的 atlas 版本。

另一种可能的解释,以防其他人遇到这种情况:

就我而言,我既没有覆盖 blas 也没有覆盖 lapack。但是我拥有的包裹和谁提供的包裹都是 openblas-lapack。出于某种原因,我在尝试使用 python numpy 时遇到了同样的问题。解决方法是分别用openblas和lapack替换这个包。