我在签署 rpm 文件时遇到了这个错误。如您所见,我没有太多线索,谷歌似乎一无所获。我被难住了!
有人知道是什么原因造成的吗?我猜它正在尝试在某处创建某种临时文件。
$:rpm -D“_gpg_name rpmbuilder” --addsign 输出/sllop-0.0.6-1.x86_64.rpm --verbose --debug 输入密码: 密码短语很好。 输出/sllop-0.0.6-1.x86_64.rpm: D:预期大小:51827 = lead(96)+sigs(180)+pad(4)+data(51547) D:实际尺寸:51827 D:GPG 签名大小:72 D: 获得 72 字节的 GPG sig D:GPG 签名大小:72 D: 获得 72 字节的 GPG sig 错误:rpmMkTemp 失败
答案1
自己回答这个问题以防其他人对此感到困惑。
这个错误信息有点误导人。它确实是权限问题(正如预期的那样),但不是在与 rpm 变量相关的任何 tmp 目录中。
使用 strace
strace -p `ps --no-headers -fC rpmsign | awk '{print $2}'` -e trace=open,close
Strace 显示,在 tmp 目录(在本例中为 /var/tmp)完成所有工作之后,它会尝试在与 rpm 相同的目录中创建 rpm 的更改版本,然后(我假设)将其移动到位。那rpm 是其所指的‘临时’。
因此,经过所有这些,事实证明该用户在签名时没有对 rpm 所在位置的写权限。
啊。