升级到 20.04 后,我无法打开大型 svg 文件。我得到:
XML 解析错误:无法加载超过 200000 个 XML 元素
问题出现在图像查看器和 Gimp 中,而 ImageMagickdisplay
和 inkscape 则libreoffice --draw
停滞,什么都不显示。
Firefox 和 Chrome 都可以打开文件,但是 Firefox 的缩放功能较差,而 Chrome 的速度很慢并且容易卡住。
svg 包:apt list --installed | grep svg
gir1.2-rsvg-2.0/focal-updates,now 2.48.9-1ubuntu0.20.04.1 amd64 [installed,automatic]
libimage-librsvg-perl/focal,now 0.07-8build5 amd64 [installed]
libqt5svg5/focal,now 5.12.8-0ubuntu1 amd64 [installed,automatic]
librsvg2-2/focal-updates,now 2.48.9-1ubuntu0.20.04.1 amd64 [installed,automatic]
librsvg2-2/focal-updates,now 2.48.9-1ubuntu0.20.04.1 i386 [installed]
librsvg2-common/focal-updates,now 2.48.9-1ubuntu0.20.04.1 amd64 [installed,automatic]
librsvg2-common/focal-updates,now 2.48.9-1ubuntu0.20.04.1 i386 [installed,automatic]
librsvg2-dev/focal-updates,now 2.48.9-1ubuntu0.20.04.1 amd64 [installed]
答案1
这是软件包中的一个错误librsvg
。他们有 200000 个项目硬编码适用于 2.49.5 之前的版本。
我可以确认 Ubuntu 20.04 LTS 上存在该错误。因此,我已将其报告给 LaunchPad,如下所示错误 1916055. 受影响的热门应用程序:
- 侏儒之眼
- MATE 之眼,阿特里尔
- GIMP
有些应用程序使用不同的库并且失败了 - Karbon、Krita、Cenon。
可能的解决方法是:
使用补丁在本地重新编译库,以达到 1000000 个 XML 节点的限制。
首先启用源代码存储库
software-properties-gtk
并运行以下命令以获取构建依赖项并进行成功编译的修补:sudo apt-add-repository main sudo apt-add-repository universe sudo apt-add-repository multiverse sudo apt-add-repository restricted sudo apt-get update sudo apt-get dist-upgrade sudo apt-get build-dep librsvg2-dev sudo apt-get install devscripts cd ~/Downloads apt-get source librsvg2-dev cd librsvg-2.48.9 # change 200000 to 1000000 sed -i "s/200_000/1_000_000/" rsvg_internals/src/limits.rs dpkg-buildpackage -b -uc -us sudo apt-get install ../*svg*.deb
然后使用单个长命令固定软件包版本:
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-librsvg2 Package: gir1.2-rsvg-2.0 Pin: release a=now Pin-Priority: 1337 Package: librsvg2-2 Pin: release a=now Pin-Priority: 1337 Package: librsvg2-bin Pin: release a=now Pin-Priority: 1337 Package: librsvg2-dev Pin: release a=now Pin-Priority: 1337 Package: librsvg2-common Pin: release a=now Pin-Priority: 1337 Package: librsvg2-doc Pin: release a=now Pin-Priority: 1337 EOF
享受:
使用具有不同后端库的查看器和编辑器:
- Firefox、Chromium、Konqueror 等网络浏览器
- LibreOffice 绘图
- Inkscape(需要 >14 GB 的 RAM)