在我的桌面Debian GNU/Linux 9.11 (stretch)上,代码可以工作,但不能在服务器Ubuntu 16.04.6上运行
方法函数出现问题: gpgme_error_t gpgme_op_decrypt (gpgme_ctx_t ctx,gpgme_data_t cipher,gpgme_data_t https://www.gnupg.org/documentation/manuals/gpgme/Decrypt.html )
crypto = GPGME::Ctx.new(
pinentry_mode: GPGME::PINENTRY_MODE_LOOPBACK,
passphrase_callback: method(:passfunc)
)
data = crypto.decrypt(encrypted_data)引发异常GPGME::Error并显示消息“不受支持”
错误发生在GEM shared/bundle/ruby/2.5.0/gems/gpgme-2.0.18/lib/gpgme/ctx.rb:428:in‘`decrypt’中
def decrypt(cipher, plain = Data.new)
err = GPGME::gpgme_op_decrypt(self, cipher, plain)https://www.rubydoc.info/gems/gpgme/2.0.18/GPGME/Error中没有记录异常GPGME::Error,消息为'Not supported‘
在我的开发PC上,这个异常没有被抛出!
发布于 2019-10-08 12:38:56
GPGME自述文件说:要构建GPGME,需要安装libgpg-error (>= 1.24)和libassuan (libgpg 2.4.2)。
在Ubuntu16.04.6上我没有找到libgpg-error (>= 1.24)
解决方法是,执行命令行GPG命令:
`export GPG_TTY=$(tty) && echo "#{passphrase]}" | gpg --yes --passphrase-fd 0 --output #{out_path} --decrypt #{in_path}`不幸的是,在我的例子中,让GPG变得简单并不容易
https://stackoverflow.com/questions/58270499
复制相似问题