R,在 Linux CentOS 7 上发布 "unable to load shared object cairo.so"
R, issue "unable to load shared object cairo.so" on Linux CentOS 7
我在 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 包,但到目前为止没有任何效果。
我能做什么?
谢谢!
您的 cairo (/lib64/libcairo.so.2
) 版本取决于一个名为 FT_Get_Var_Design_Coordinates
的函数。这个函数应该来自 FreeType。但是,您的 libfreetype.so
版本似乎较旧并且没有此符号。因此,要么您明确安装了旧版本,要么 "something" 附带了旧版本的 FreeType。
我会查找名为 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
这样的路径是要检查的路径。
我找到了解决方案,我将与社区分享。
我正在使用 Dell Latitude 3540 笔记本电脑 运行 Linux CentOS 7 操作系统 (centos-release-7-3.1611.el7.centos.x86_64)。
我 运行 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
...
这个方法对我很有效;我希望它可能对某人有所帮助。
我在 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 包,但到目前为止没有任何效果。 我能做什么?
谢谢!
您的 cairo (/lib64/libcairo.so.2
) 版本取决于一个名为 FT_Get_Var_Design_Coordinates
的函数。这个函数应该来自 FreeType。但是,您的 libfreetype.so
版本似乎较旧并且没有此符号。因此,要么您明确安装了旧版本,要么 "something" 附带了旧版本的 FreeType。
我会查找名为 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
这样的路径是要检查的路径。
我找到了解决方案,我将与社区分享。
我正在使用 Dell Latitude 3540 笔记本电脑 运行 Linux CentOS 7 操作系统 (centos-release-7-3.1611.el7.centos.x86_64)。
我 运行 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
...
这个方法对我很有效;我希望它可能对某人有所帮助。