升级到 20.04 后,我无法打开大的 svg 文件。我得到:
XML 解析错误:无法加载超过 200000 个 XML 元素
Image Viewer 和 Gimp 中出现问题,而 ImageMagick display、 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]
Run Code Online (Sandbox Code Playgroud)
这是包中的错误librsvg。他们为 2.49.5 之前的版本硬编码了 200000 个项目。
我可以确认 Ubuntu 20.04 LTS 上的错误。所以我已将其报告给 LaunchPad,错误号为 1916055。受影响的热门应用程序:
有些应用程序使用不同的库并失败 - 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
Run Code Online (Sandbox Code Playgroud)
然后使用单个长命令固定软件包版本:
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
Run Code Online (Sandbox Code Playgroud)
享受:
使用具有不同后端库的查看器和编辑器:
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |