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

如何无需输入密码签名RPM包?GPG静默签名问题求助

搞定GPG静默签名自制RPM包的问题

嘿,我来帮你解决这个脚本里GPG签名RPM需要手动输密码的麻烦!先梳理你遇到的几个问题,再一步步给你解决方案:

一、先修正你尝试的命令错误

1. 参数顺序搞混了(第三个命令)

你第三个命令把~/.gnupg/trustdb.gpg插在--clearsign前面,完全打乱了GPG的参数逻辑——选项和命令要放在文件名前面,这个命令直接作废就行,不用纠结。

2. 解决“Inappropriate ioctl for device”报错(第二个命令)

这个错误是因为GPG在非终端环境下还想调用终端交互,加上--no-tty参数就能搞定。另外要注意:--clearsign是用来签名文本文件的,RPM是二进制包,应该用分离式签名(--detach-sign)才对!

修改后的命令:

echo "78910" | gpg --batch --no-tty --passphrase-fd 0 --detach-sign test-1-0.x86_64.rpm

执行后会生成test-1-0.x86_64.rpm.sig的分离签名文件,这才是适合RPM的签名方式。

3. 让--passphrase参数生效(第一个命令)

GPG 2.x之后默认会屏蔽命令行直接传密码的--passphrase参数(怕泄露),推荐用密码文件或者管道的方式,同时加上--no-tty避免弹框:

# 用管道传密码
gpg --batch --no-tty --passphrase-fd 0 --detach-sign test-1-0.x86_64.rpm <<< "78910"

# 或者用密码文件(更安全,记得设权限)
echo "78910" > ~/.gpg_pass
chmod 600 ~/.gpg_pass  # 关键!权限太松GPG会拒绝
gpg --batch --no-tty --passphrase-file ~/.gpg_pass --detach-sign test-1-0.x86_64.rpm

二、生成无密码GPG密钥(解决空密码报错)

你的密钥生成脚本里空密码报错,是因为GPG默认不允许无保护的密钥,得加一行%no-protection来放行:

创建生成脚本:

#!/bin/bash
cat > gen-key-script <<EOF
Key-Type: 1
Key-Length: 2048  # 建议用2048/4096,比1024安全
Subkey-Type: 1
Subkey-Length: 2048
Name-Real: gpg test
Name-Email: test@test.com
Expire-Date: 0
Passphrase:  # 空密码
%no-protection  # 关键:允许无密码密钥
EOF

# 生成密钥
gpg --batch --gen-key gen-key-script

# 配置RPM签名用的宏
echo "%_gpg_name gpg test <test@test.com>" > ~/.rpmmacros

执行这个脚本就能生成无密码的GPG密钥,以后签名就完全不用输密码了!

三、更规范的RPM静默签名流程

其实不用直接调用gpg,用rpm命令结合配置文件来签名更符合RPM的规范:

  1. 编辑~/.rpmmacros,添加这些配置(如果用无密码密钥,就去掉密码相关的行):
%_gpg_name gpg test <test@test.com>
%_gpg_path ~/.gnupg
%__gpg /usr/bin/gpg
# 如果用密码文件,加上这行
%__gpg_sign_cmd %{__gpg} --batch --no-tty --passphrase-file ~/.gpg_pass --detach-sign --armor --output %{__signature_filename} %{__plaintext_filename}
  1. 直接用rpm命令签名:
rpm --resign test-1-0.x86_64.rpm

这样脚本跑起来就完全静默,不用任何交互啦!

最后补个小坑

如果是GPG 2.x版本,还得在~/.gnupg/gpg.conf里加一行:

pinentry-mode loopback

这会让GPG允许从标准输入读取密码,避免莫名其妙弹框。

内容的提问来源于stack exchange,提问作者Alessandro Cardoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:46:43