对于我的 SolydXK 存储库,我想添加一些在 Debian 拉伸反向端口中可用的软件包。
我已经成功设置了 conf/distributions、conf/updates 和 FilterList 文件,以下命令在登录到服务器后成功运行:
reprepro -b /path_to_repository_basedir update
将文件添加到存储库时,我必须正确填写我的 gpg 密码来对文件进行签名。在会议期间,我只需要这样做一次。
现在,我尝试通过创建从我的 .bash_profile 调用的脚本来使签名无人参与:
#!/bin/sh
OURKEY=ABCDEFGH
PASSPHRASE=my_passphrase
PIDOF=`pidof gpg-agent`
RETVAL=$?
# Decide wether to start gpg-agent daemon.
if [ "$RETVAL" -eq 1 ]; then
echo "Starting gpg-agent daemon."
eval `gpg-agent --allow-preset-passphrase --allow-mark-trusted --default-cache-ttl-ssh 4294967295 --default-cache-ttl 4294967295 --max-cache-ttl 4294967295 --daemon --enable-ssh-support --write-env-file "${HOME}/.gpg-agent-info"`
else
echo "Daemon gpg-agent already running."
fi
if [ -f "${HOME}/.gpg-agent-info" ]; then
. "${HOME}/.gpg-agent-info"
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
# Create necessary symbolic link
cp -fs `echo $GPG_AGENT_INFO | cut -d':' -f 1` "${HOME}/.gnupg/"
fi
# Default trust our own key
rm ~/.gnupg/trustlist.txt
for FP in $(gpg2 --fingerprint --with-colons --fingerprint $OURKEY | grep ^fpr | cut -d':' -f 10); do
echo "$FP S" >> ~/.gnupg/trustlist.txt
echo $PASSPHRASE | /usr/lib/gnupg2/gpg-preset-passphrase --preset $FP
done
# Set GPG TTY
export GPG_TTY=$(tty)
我检查了指纹(又名 keygrip,但这个版本的 gpgsm 不知道 --with-keygrip 选项),一切似乎都很好。但是,当 cron 作业运行上述更新命令时,会出现一条错误消息,指出密码不正确。
服务器在 Debian old-squeeze 上运行(我知道,我必须对此做一些事情,但这是另一个问题),这可能是一个大问题。这是一些版本信息:
cat /etc/debian_version
6.0.10
uname -r
3.14.52-vs2.3.6.15-1
gpg (GnuPG) 1.4.10
gpg (GnuPG) 2.0.14
gpgsm (GnuPG) 2.0.14
gpg-agent (GnuPG) 2.0.14
那么,这里有没有人在无人看管的情况下使用 gpg-agent 签署包的经验并且可以向我解释我做错了什么?