我已经在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软件包,但到目前为止没有任何结果。我该怎么办?
谢谢!
您的开罗版本(/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
这样的路径成为要检查的路径。
我找到了解决方案,并将与社区分享。
我正在运行运行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
...
此方法对我有效;我希望这可能对某人有所帮助。