R,在Linux CentOS 7上发出“无法加载共享对象cairo.so”

问题描述 投票:0回答:2

我已经在Linux CentOS 7上将R与ggplot2和其他软件包一起使用了很长时间。今天,它突然停止工作了。

当我在脚本中调用png()函数时,它会产生以下错误:

Warning messages:
1: In png(heatmap_file) :
  unable to load shared object '/usr/lib64/R/library/grDevices/libs//cairo.so':
  /lib64/libcairo.so.2: undefined symbol: FT_Get_Var_Design_Coordinates
2: In png(heatmap_file) : failed to load cairo DLL

我试图多次更新cairo软件包,但到目前为止没有任何结果。我该怎么办?

谢谢!

r heatmap cairo
2个回答
1
投票

您的开罗版本(/lib64/libcairo.so.2)取决于称为FT_Get_Var_Design_Coordinates的功能。此函数应来自FreeType。但是,您的libfreetype.so版本似乎较旧,并且没有此符号。因此,您明确安装了较旧的版本,或者Freesome的较旧版本附带了“ something”。

我将寻找名为libfreetype.so的文件,并检查它们是否具有必要的符号

我正在Debian测试中,在这里我得到了(这意味着我的FreeType版本中确实有这个符号;如果该符号不可用,您将不会得到任何输出):

$ nm -s -D /usr/lib/x86_64-linux-gnu/libfreetype.so | grep FT_Get_Var_Design_Coordinates                                                                           
000000000001d260 T FT_Get_Var_Design_Coordinates

对您来说,基于libcairo.so的路径,我希望像/lib64/libfreetype.so这样的路径成为要检查的路径。


0
投票

我找到了解决方案,并将与社区分享。

我正在运行运行Linux CentOS 7操作系统(centos-release-7-3.1611.el7.centos.x86_64)的Dell Latitude 3540笔记本电脑。

我运行了sudo yum -y update,我知道关于freetype软件包存在重复问题,该软件包安装了两次,而其他一些软件包也有冲突。

然后我使用此命令删除了旧的freetype软件包和有冲突的软件包:

rpm -e freetype-2.4.11-12.el7.i686 --nodeps
rpm -e conflicting-package-1 --nodeps
rpm -e conflicting-package-2 --nodeps
...

然后我更新了所有我手动删除的软件包:

sudo yum -y update freetype
sudo yum -y conflicting-package-1 freetype
sudo yum -y conflicting-package-2 freetype
...

此方法对我有效;我希望这可能对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.