如何在Cygwin上安装GPG?目前它缺失了。

我在Win 7上安装了cygwin,但是在/usr/bin/中看不到gpg..这正常吗?我该如何获取它?我正在尝试验证一个Linux ISO并需要此文件来检查签名文件。
4个回答

幸运的是,gpg已经包含在Cygwin的软件仓库中。只需再次运行Cygwin安装程序(setup-x86_64.exesetup-x86.exe),当出现软件包选择菜单时,搜索"gnupg"。勾选出现在utils下的"gnupg"选项,完成更新,就完成了。它会安装gpg和任何依赖项。 如果由于某种原因这样做不起作用,您可以自己编译。如有需要,我可以提供详细的说明,但目前- this page解释了如何在Cygwin下编译(大多数)Linux程序,而this page则提供了下载源代码的说明。

跟进:我正在尝试验证gpg4win的真实性(从他们的网站上下载)。我已经安装了一个可信赖的gpg。当我导入他们的证书时,似乎得到的指纹与网站上列出的不同..这可能吗? - Alex
如果签名是该文件的正确签名,它应该匹配。如果不匹配,要么你做错了什么,要么某些东西没有按照预期的方式运行,要么有人篡改了文件。为了排除故障,请尝试重新下载gpg4win或使用SHA1校验和进行验证。另外,由于这个问题现在涉及到GPG本身而不是Cygwin,我建议你单独提问(你很难找到一个既精通Cygwin又精通gpg的专家)。 - Anton Liakhovitch
编译工作正常,只需记得编译并安装GPG库。如果你漏掉了某些内容,GPG脚本的“configure”会告诉你需要获取哪些库。 - Prof. Falken
在Cywin 1.7.33中没有gpg。 - WebViewer

更新(2018-10-20)

以下信息已过时,因为截至今天,当前的Cygwin gnupg2软件包版本为2.2.10-1,而最新的gpg4win(3.1.3)附带的版本为2.2.10


很不幸,Cygwin提供的GnuPG软件包已经过时,并且仍在使用已弃用的gnupg1.4。这确实令人遗憾,因为其他一切似乎都运行良好。所以你可能会考虑下载Windows原生的Gpg4win,但那是一个错误。该软件包也已过时(截至2017-05-10),最新版本为2.3.3(2016-08-18),仅使用gnupg 2.0.30。那么该怎么办呢?

相反,前往GnuPG的下载页面,选择标有"当前GnuPG的简易安装程序"的下载链接。这将从他们的FTP站点下载最新的*.exe文件。安装它。GnuPG的错误跟踪在这里

然而,旧的原始Cygwin gpg二进制文件位于/usr/bin/gpg.exe,该路径优先于新的Windows版本。因此,要查看新版本,您必须提供完整路径。

$ gpg --version
gpg (GnuPG) 1.4.21
...
Home: ~/.gnupg
...

$ /cygdrive/c/Program\ Files\ \(x86\)/GnuPG/bin/gpg.exe --version

gpg (GnuPG) 2.1.20
libgcrypt 1.7.6
...

Home: C:/Users/xxxx/AppData/Roaming/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
通过软链接的方式,轻松解决访问新二进制文件的问题。
$ ln -s /cygdrive/c/Program\ Files\ \(x86\)/GnuPG/bin/gpg.exe /usr/bin/gpg2
$ ln -s /cygdrive/c/Program\ Files\ \(x86\)/GnuPG/bin/gpg-agent.exe /usr/bin/gpg-agent
# And others depending on your need

$ gpg2 --version
gpg (GnuPG) 2.1.20
libgcrypt 1.7.6
...
一切都好!最后,请注意,您的密钥链将位于旧版gpg的Cygwin $HOME中,而在新版gpg中则位于/cygdrive/c/Users/xxxx/AppData/Roaming/gnupg/。 当然,您也可以选择通过编译和安装sources上的最新版本。

1我只想指出,gnupg2现在是cygwin上可用的软件包。虽然不是最新版本(目前为2.1.23,而GnuPG直接提供的是2.2.1),但相比之前的情况,这是一个巨大的改进。 - dcsohl
这个版本似乎与Linux中的原始gpg不兼容。它会崩溃并显示"gpg: packet(13) too large"错误。 - WebViewer

在2020年,对我来说,真正的答案是它被称为"gpg2"。现在,在cygwin中,不再使用"gpg"。我怎么知道呢?Cygwin软件包是gnupg2,如果在cygwin安装程序中搜索"gpg"是找不到的。由于这个帖子是搜索"gpg cygwin"的最热门结果,也许我能帮助节省其他人的时间。

我在Cygwin上使用GPG2与Git(包括gpg-agent用于缓存GPG密码)时,按照以下步骤进行了操作:
  • 安装了gnupg2 Cygwin软件包(版本为2.2.27-1)。
  • 配置git使用gnupg2: git config --global gpg.program $(which gpg2)