You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu20.04下升级Gpgmepp至1.19+以适配Poppler及Okular签名

Ubuntu 20.04 升级Gpgmepp以完成Poppler 23.11编译

问题背景

  • 系统:Ubuntu 20.04
  • 需求:给Okular添加PDF数字证书签名,Okular要求Poppler版本至少21.01,但系统自带版本为0.86.1,因此需升级Poppler至23.11
  • 报错卡点:编译Poppler时执行cmake -DTESTDATADIR=./test -DCMAKE_INSTALL_MANDIR:PATH=/usr/local/share/man ..,提示找不到兼容1.19版本的Gpgmepp包配置文件
  • 已尝试操作:
    • 用sudo apt-get install libgpgmepp-dev仅能安装1.13.1版本,不满足要求
    • 下载并运行最新GnuPG Desktop AppImage,cmake报错依旧
    • 当前gpg2 --version输出为:gpg (GnuPG) 2.2.19

解决方案1:从源码编译安装Gpgmepp 1.19+

Gpgmepp是Gpgme的C++绑定,需先编译安装符合版本要求的Gpgme,再确保Gpgmepp被正确编译:

  1. 安装编译依赖
sudo apt-get update
sudo apt-get install build-essential libassuan-dev libgpg-error-dev libksba-dev libnpth-dev autoconf automake libtool pkg-config
  1. 下载Gpgme源码(以1.22.0为例,可替换为更高兼容版本)
cd ~/Downloads
wget https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.22.0.tar.bz2
tar -xf gpgme-1.22.0.tar.bz2
cd gpgme-1.22.0
  1. 配置编译选项(必须启用C++绑定才能生成Gpgmepp)
./configure --prefix=/usr/local --enable-languages=c,c++

说明:--prefix=/usr/local指定安装到系统本地目录,避免覆盖系统自带旧版本;--enable-languages=c,c++确保同时编译C和C++版本的库

  1. 编译并安装
make -j$(nproc)
sudo make install
sudo ldconfig
  1. 验证安装结果
pkg-config --modversion gpgmepp

输出为1.19及以上版本即表示安装成功

  1. 重新编译Poppler
    回到Poppler源码目录,先清理之前的cmake缓存,再重新执行cmake命令:
cd /path/to/poppler-source
rm -rf CMakeCache.txt CMakeFiles
cmake -DTESTDATADIR=./test -DCMAKE_INSTALL_MANDIR:PATH=/usr/local/share/man -DGPGMEPP_LIBRARY=/usr/local/lib/libgpgmepp.so -DGPGMEPP_INCLUDE_DIR=/usr/local/include/gpgmepp ..
make -j$(nproc)
sudo make install

若cmake仍无法自动识别,可通过-DGPGMEPP_LIBRARY和-DGPGMEPP_INCLUDE_DIR手动指定路径

解决方案2:使用第三方PPA升级Gpgmepp(可选)

部分第三方PPA可能提供Ubuntu 20.04的Gpgmepp高版本包,可尝试以下步骤:

  1. 添加PPA(注意:第三方PPA可能存在稳定性风险,谨慎使用)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
  1. 尝试安装更新版本的libgpgmepp-dev
sudo apt-get install libgpgmepp-dev

若该PPA提供的版本仍低于1.19,建议优先选择源码编译方案

额外注意事项

  • 编译完成后,验证Poppler版本是否符合要求:
pkg-config --modversion poppler
  • 若Okular仍无法识别新的Poppler,可尝试重新编译Okular,或用LD_LIBRARY_PATH=/usr/local/lib okular临时指定库路径启动Okular

内容的提问来源于stack exchange,提问作者Jocelyne Sze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:56:06