zathura develop 分支中的 libjpeg 版本错误

Wrong libjpeg version in zathura develop branch

提问人:rqdmap 提问时间:2/16/2023 最后编辑:kiner_shahrqdmap 更新时间:2/16/2023 访问量:66

问:

版本:

$ zathura --version
zathura 0.5.2
girara 0.3.7 (runtime: 0.3.9)
(plugin) pdf-mupdf (0.4.0) (/usr/lib/zathura/libpdf-mupdf.so)

我正在使用 ArchLinux 和 Zathura-develop。但是,develop 分支的 Zathura 需要 libjpeg9 才能正确呈现 PDF 中的 jpeg。当我在终端中打开带有 zathura 的 PDF 文件时,所有 JPG 图片都呈现为黑色,zathura 说:

$ zathura -l debug file.pdf
debug: ../girara/template.c:311: base_changed(): Variable 'session' not set.
debug: ../zathura/plugin.c:279: register_plugin(): plugin: filetype mapping added: application/pdf
debug: ../zathura/plugin.c:279: register_plugin(): plugin: filetype mapping added: application/oxps
debug: ../zathura/plugin.c:279: register_plugin(): plugin: filetype mapping added: application/epub+zip
debug: ../zathura/plugin.c:279: register_plugin(): plugin: filetype mapping added: application/x-fictionbook+xml
debug: ../zathura/plugin.c:279: register_plugin(): plugin: filetype mapping added: application/xml
debug: ../zathura/plugin.c:173: load_plugin(): Successfully loaded plugin from '/usr/lib/zathura/libpdf-mupdf.so'.
debug: ../zathura/plugin.c:174: load_plugin(): plugin pdf-mupdf: version 0.4.0
debug: ../girara/config.c:373: girara_config_parse(): reading configuration file '/etc/xdg/zathurarc'
debug: ../girara/config.c:270: config_parse(): failed to open config file '/etc/xdg/zathurarc'
debug: ../girara/config.c:373: girara_config_parse(): reading configuration file '/etc/zathurarc'
debug: ../girara/config.c:270: config_parse(): failed to open config file '/etc/zathurarc'
debug: ../girara/config.c:373: girara_config_parse(): reading configuration file '/home/rqdmap/.config/zathura/zathurarc'
debug: ../zathura/zathura.c:447: zathura_init(): Sandbox deactivated.
debug: ../girara/session.c:935: girara_set_window_icon(): Loading window icon with name: org.pwmt.zathura
debug: ../zathura/zathura.c:374: init_database(): Using plain database backend.
debug: ../zathura/zathura.c:203: zathura_update_view_ppi(): monitor width: 673 mm, pixels: 2560, ppi: 96.62
debug: ../zathura/zathura.c:203: zathura_update_view_ppi(): monitor width: 673 mm, pixels: 2560, ppi: 96.62
debug: ../zathura/dbus-interface.c:105: bus_acquired(): Bus acquired at 'org.pwmt.zathura.PID-8086'.
debug: ../zathura/zathura.c:203: zathura_update_view_ppi(): monitor width: 673 mm, pixels: 2560, ppi: 96.62
debug: ../zathura/dbus-interface.c:132: name_acquired(): Acquired 'org.pwmt.zathura.PID-8086' on session bus.
debug: ../zathura/content-type.c:72: guess_type_magic(): magic detected filetype: application/pdf
debug: ../zathura/file-monitor.c:126: zathura_filemonitor_new(): using glib file monitor
debug: ../zathura/zathura.c:1177: document_open(): starting file monitor
debug: ../zathura/zathura.c:686: setup_renderer(): starting renderer with cache size 15
debug: ../zathura/zathura.c:203: zathura_update_view_ppi(): monitor width: 673 mm, pixels: 2560, ppi: 96.62
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 0 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 1 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 2 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 3 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 4 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 5 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 6 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 7 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/render.c:923: render_all(): Queuing resize for page 8 to 574 x 766 (595.28 x 793.70).
debug: ../zathura/callbacks.c:235: cb_widget_screen_changed(): called
debug: ../zathura/zathura.c:1305: document_open(): Failed to load bookmarks.
debug: ../zathura/jumplist.c:160: zathura_jumplist_load(): No jumplist for this file in the database yet
debug: ../zathura/render.c:971: page_cache_is_cached(): Page 1 is a cache miss
debug: ../zathura/render.c:1070: zathura_renderer_page_cache_add(): Page 1 is cached at cache index 0
debug: ../zathura/render.c:971: page_cache_is_cached(): Page 2 is a cache miss
debug: ../zathura/render.c:1070: zathura_renderer_page_cache_add(): Page 2 is cached at cache index 1
debug: ../zathura/render.c:971: page_cache_is_cached(): Page 3 is a cache miss
debug: ../zathura/render.c:1070: zathura_renderer_page_cache_add(): Page 3 is cached at cache index 2
debug: ../zathura/render.c:896: render_job(): Rendering page 3 ...
debug: ../zathura/render.c:896: render_job(): Rendering page 2 ...
debug: ../zathura/render.c:519: emit_completed_signal(): Emitting signal for page 3
debug: ../zathura/render.c:896: render_job(): Rendering page 1 ...
debug: ../zathura/render.c:519: emit_completed_signal(): Emitting signal for page 2
error: jpeg error: Wrong JPEG library version: library is 80, caller expects 90
warning: read error; treating as end of file
warning: padding truncated image
error: jpeg error: Wrong JPEG library version: library is 80, caller expects 90
warning: read error; treating as end of file
warning: padding truncated image
debug: ../zathura/render.c:519: emit_completed_signal(): Emitting signal for page 1

archlinux 中最新的 libjpeg 包是 libjpeg8,所以我卸载了 libjpeg8 并手动安装了 libjpeg9。但不知何故,zathura 恰好需要“libjpeg.so.8”才能启动:

$ zathura
zathura: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory

所以我手动将 libjpeg.so.8 链接到 libjpeg.so.9。但 zathura 再次抛出错误:

$ zathura
zathura: /usr/lib/libjpeg.so.8: version `LIBJPEG_8.0' not found (required by /usr/lib/libgdk_pixbuf-2.0.so.0)
zathura: /usr/lib/libjpeg.so.8: version `LIBJPEG_8.0' not found (required by /usr/lib/libtiff.so.6)

现在我不知道如何解决它。我想知道是我的错,错误地配置了 zathura,还是 zathura 的共享库管理出了问题。

共享库 libjpeg

评论

0赞 kiner_shah 2/16/2023
将 libjpeg8 安装在计算机上的某个文件夹中。然后,您可以使用环境变量在运行时设置库的搜索路径。LD_LIBRARY_PATH
1赞 rqdmap 2/16/2023
@kiner_shah 感谢您的回复!但是,就我而言,我已经安装了 libjpeg8,并且 zathura 可以在运行时找到该库。真正让我感到困惑的是,Zathura 需要 libjpeg9,而其他一些运行时库(如 libgdk_pixbuf 和 libtiff)如上所示需要 libjpeg8。我不知道如何处理冲突。
0赞 kiner_shah 2/17/2023
如果你从源代码构建了 zathura,你还需要安装它可能具有的依赖项。

答:

0赞 rqdmap 2/16/2023 #1

在互联网上搜索后,我发现很久以前在 archlinux 论坛上讨论过类似的问题: zathura jpeg 库错误更新后FS#34590 - [mupdf] mupdf-1.2 正在使用错误的 libjpeg 标头构建

如上所述,mupdf 构建时使用的 libjpeg 标头将 libjpeg 版本设置为 90;而 ArchLinux 附带的 libjpeg 库(libjpeg-turbo)仅支持 80 版本。

最后,我选择从 AUR 简单地安装 zathura-git 和 zathura-pdf-mupdf-git这些软件包已经正确地解决了这个问题,并且适合 archlinux。由于它在某种程度上是 archlinux 上 zathura 的“BUG”,因此最好通过 AUR 软件包而不是源代码安装它。