我的资源:
我当前的版本gpg
是:
$ gpg --version
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /home/gabriel/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
我想构建并安装 2.3.7。我在使用 Ubuntu 20.04。我能看到的唯一方法是从源代码执行此操作。
我尝试在 Ubuntu 20.04 上从源代码构建和安装 gpg,就像这样(我获得了所有下载链接这里):
# verify version before the update
gpg --version
# 1. Build & install dependencies (needed libraries)
wget https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.45.tar.bz2
wget https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.1.tar.bz2
wget https://gnupg.org/ftp/gcrypt/libksba/libksba-1.6.0.tar.bz2
wget https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.5.tar.bz2
wget https://gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.3.1.tar.bz2
wget https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2
wget https://gnupg.org/ftp/gcrypt/pinentry/pinentry-1.2.0.tar.bz2
tar jxvf libgpg-error-*.bz2
tar jxvf libgcrypt-*.bz2
tar jxvf libksba-*.bz2
tar jxvf libassuan-*.bz2
tar jxvf ntbtls-*.bz2
tar jxvf npth-*.bz2
tar jxvf pinentry-*.bz2
cd libgpg-error-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd libgcrypt-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd libksba-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd libassuan-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd ntbtls-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd npth-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
cd pinentry-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
# 2. Build & install gpg
wget https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.3.7.tar.bz2
tar jxvf gnupg-*.bz2
cd gnupg-!(*.bz2)
time (./configure && make && sudo make install) && cd ..
# verify the version after the update
gpg --version
扫描输出时我没有看到任何错误(尽管有很多东西需要查看),并且如果有错误,符号应该停止,而不是在构建和安装后&&
使用 cd 进行备份。cd ..
但是,gpg --version
仍然显示2.2.19
,而不是2.3.7
。为什么?
手动尝试运行它也会失败并出现以下错误:
$ gnupg-2.3.7/bin/gpg --version
gnupg-2.3.7/bin/gpg: symbol lookup error: gnupg-2.3.7/bin/gpg: undefined symbol: gpgrt_set_confdir, version GPG_ERROR_1.0
为什么?直接这样运行应该可以。
更新:这里有我找到的一些参考资料和资源,它们可能会对我继续尝试自己解决这个问题有所帮助:
- 谷歌搜索“从头开始构建 gpg”
- https://njh.eu/gpg- 看起来非常有希望!我需要尝试一下。
答案1
我遇到了同样的问题,放弃了从源代码构建,只是安装了克利奥帕特拉并更新了 GnuPG
sudo apt-get update
sudo apt-get install kleopatra
答案2
两个问题:
- 您从中下载的版本https://gnupg.org/ftp/gcrypt安装到 /usr/local/... 而您的原始版本位于 /usr/... 中。这可能导致标头/库不匹配。我必须先删除所有要替换的库和 gpg 包,然后再进行构建。
- 您需要按照以下顺序构建
- npth
- libgpg 错误
- libgcrypt、libksba、libassuan(ntbtls、pinentry 是可选的)