~drscream

Sign pkgsrc packages manually

Starting a post with “this is only a workaround and you should only use it if you sure what you’re doing” is maybe not the best start but anyway: This is only a workaround if you missed to sign your package or would like todo it for your home environment!

Please have a look at pkgbuild from Jonathan which provides most features to have a nice build environment for pkgsrc.

To sign a package manually and not during the build process you could use the pkg_admin tool. The tool provides an argument gpg-sign-package which allow you to sign packages with GPG based on your mk.conf file.

It’s required to have your GPG environment ready and working. So you need an public/private key pair in your trust store which you could use for signing the package. It’s not required to have gpg-agent or anything running but if not you need so insert your password on each package you like to sign.

The following variables need to be configured in your mk.conf:

# Set your gpg key ID to the following variable
GPG_SIGN_AS=your_gpg_id
# Set the path to the GPG binary
GPG=/opt/pkg/bin/gpg

After this is done you could use the pkg_admin command to sign you package:

$ pkg_admin gpg-sign-package unsigned/vim-nox-8.0.0086.tgz signed/vim-nox-8.0.0086.tgz

Because I’m a little bit lazy and only need to variables in the mk.conf I’ve created the following script which use a temporary mk.conf file for signing:

#!/usr/bin/env bash

GPG_SIGN_AS=your_gpg_id
MK_CONF=$(mktemp -q /tmp/mk-conf.XXXXXXXX)

cat <<EOF >> ${MK_CONF}
GPG_SIGN_AS=${GPG_SIGN_AS}
GPG=$(which gpg)
EOF

pkg_admin -C ${MK_CONF} gpg-sign-package $@
rm "${MK_CONF}"

Send your comment by mail.