Can't get rpmbuild to work with gpg-agent

Michael Schwendt mschwendt at gmail.com
Sun Dec 9 22:38:43 UTC 2012


On Thu, 22 Nov 2012 20:33:08 +0100, Guido Winkelmann wrote:

> Hi,
> 
> I'm trying to package some software with rpmbuild and signing the packages at 
> the same time. I'm following the guide found here:
> 
> http://www.ibm.com/developerworks/library/l-rpm3/
> 
> It mostly works - I do get properly signed RPMs at the end - however, despite 
> running gpg-agent, rpmbuild keeps asking for my (lengthy) GPG-passphrase every 
> single time it is finished with a spec-file. This can be particularly annoying 
> when building very large packages, because, instead of asking again, rpmbuild 
> will abort the entire process if I mistype the passphrase even once. If I run 
> rpmbuild again after that, it will build the whole package over again...
> 
> I have started gpg-agent (as a normal user) with
> 
> gpg-agent --daemon --enable-ssh-support \
> --write-env-file "${HOME}/.gpg-agent-info"
> 
> I have put the following lines
> 
> if [ -f "${HOME}/.gpg-agent-info" ]; then                                                                                                                                                             
>   . "${HOME}/.gpg-agent-info"                                                                                                                                                                         
>   export GPG_AGENT_INFO                                                                                                                                                                               
>   export SSH_AUTH_SOCK                                                                                                                                                                                
>   export SSH_AGENT_PID                                                                                                                                                                                
> fi                                                                                                                                                                                                    
>                                                                                                                                                                                                       
> GPG_TTY=$(tty)                                                                                                                                                                                        
> export GPG_TTY
> 
> at the end of my .bashrc, and also manually run them in my current shell. The 
> env command tells me it knows of the variables GPG_AGENT_INFO, SSH_AGENT_PID, 
> SSH_AUTH_SOCK, and GPG_TTY, with plausible looking values in all cases. When I 
> just run gpg-agent in my current shell with no parameters, it tells me "gpg-
> agent: gpg-agent running and available". I'm running rpmbuild like this:
> 
> rpmbuild -ba --sign rpmbuild/SPECS/<specfile>
> 
> What am I still missing?

It may be necessary to redefine the RPM macro %__gpg_sign_cmd to add
option --use-agent when executing gpg. That's what I've done for the old
Fedora Extras pushscripts and when testing possible alternatives to
Pexpect/expect.

-- 
Fedora release 18 (Spherical Cow) - Linux 3.6.9-4.fc18.x86_64
loadavg: 0.00 0.02 0.05


More information about the users mailing list