Если не ошибаюсь, rpm сам не подписывает, а вызывает для подписи gpg. После освоения gpg накатал такой скриптик:
#!/bin/bash
# Sign the packages in a specified directory.
# Written by yars, Tambovskaya oblast, Russia.
# <yars068@yandex.ru>
# Copyright 2012. All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
checkgpg()
{
gpg --verify $1
}
funcgpg()
{
echo -n "Enter passphrase: "
read pass
for file in `find $1 -name "*.txz"` ; do
echo "Checking the signature of $file:"
if [ ! `checkgpg "$file" 2>/dev/null` ] ; then
echo -n "Signature not found. Signing up package: $file: "
gpg -ba --yes --no-tty --passphrase $pass $file 2>/dev/null 1>/dev/null && echo " Done."
fi;
done
}
# Checking for arguments are specified:
case $# in
0) echo "Usage: $0 path-to-directory"
exit 1;;
*) funcgpg $1;;
esac
Еще немного допилить надо, чуть позже выложу окончательный вариант 
UPD: пока так:
#!/bin/bash
# Sign or verify the signatures of packages in a directory.
# Written by Yaroslav Shmelev, Tambovskaya oblast, Russia.
# aka yars <yars068@yandex.ru>
# Copyright 2012. All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
set -e
SIGTYPE="asc"
checkgpg()
{
if `gpg --verify "$1" 2>/dev/null` ;then
return 0
else
return 1
fi;
}
funcgpg()
{
echo -n "Enter passphrase: "
read -s pass
echo "Location of packages: $1."
while read l ; do
echo -n "Checking the signature of $(basename "$l")... "
if ! `checkgpg "$l.$SIGTYPE" 2>/dev/null` ; then
echo "Signature not found."
echo -n "Signing up package: $(basename "$l")... "
gpg -ba --yes --no-tty --passphrase $pass "$l" 2>/dev/null 1>/dev/null && echo " Done."
else
echo "Already signed. Skipping."
fi;
done < <( find $1 -name "*.txz" )
}
# Checking for arguments are specified:
case $1 in
--sign) shift
if [ -d $1 ]; then
funcgpg $1
fi;;
--check) shift
if [ -d $1 ]; then
echo "Location of packages is: $1."
while read l; do
echo -n "Checking: $(basename "$l")... "
if `checkgpg "$l.$SIGTYPE"` ; then
echo " Signed"
else
echo " Not signed."
fi;
done < <( find $1 -name "*.txz" );
else
echo "$1 isn't directory. Exiting."
fi;;
*) echo "Usage: $0 --sign | --check path-to-directory"
exit 0;;
esac
Наверное, тоже не самый оптимальный вариант, но он работает. Умеет проверять и подписывать пакеты...
Примеры:
./signpackages.sh --sign soft/Linux/Packages/slackware-14.0/
Enter passphrase:
Location of packages: soft/Linux/Packages/slackware-14.0/.
Checking the signature of gedit-3.4.2-i486-1_yars.txz... Signature not found.
Signing up package: gedit-3.4.2-i486-1_yars.txz... Done.
Checking the signature of slim-1.3.4-i486-2_yars.txz... Signature not found.
Signing up package: slim-1.3.4-i486-2_yars.txz... Done.
Checking the signature of network-manager-applet-0.9.8.0-i486-1_yars.txz... Signature not found.
Signing up package: network-manager-applet-0.9.8.0-i486-1_yars.txz... Done.
Checking the signature of wxPython-2.8.12.1-i486-1_yars.txz... Signature not found.
Signing up package: wxPython-2.8.12.1-i486-1_yars.txz... Done.
Checking the signature of MPlayer-1.0rc4-i486-1_yars.txz... Signature not found.
Signing up package: MPlayer-1.0rc4-i486-1_yars.txz... Done.
Checking the signature of opera-12.00-i386-1_yars.txz... Signature not found.
Signing up package: opera-12.00-i386-1_yars.txz... Done.
Checking the signature of flash-player-plugin-11.2_r270-i486-1_yars.txz... Signature not found.
Signing up package: flash-player-plugin-11.2_r270-i486-1_yars.txz... Done.
Checking the signature of flash-player-plugin-11.2_r258-i486-1_yars.txz... Signature not found.
Signing up package: flash-player-plugin-11.2_r258-i486-1_yars.txz... Done.
Checking the signature of opera-12.14-i386-1_yars.txz... Signature not found.
Signing up package: opera-12.14-i386-1_yars.txz... Done.
Checking the signature of modem-manager-gui-0.0.15.4-i486-1_yars.txz... Signature not found.
Signing up package: modem-manager-gui-0.0.15.4-i486-1_yars.txz... Done.
Checking the signature of xfce4-xkb-plugin-0.5.4.3-i486-1_yars.txz... Signature not found.
Signing up package: xfce4-xkb-plugin-0.5.4.3-i486-1_yars.txz... Done.
Checking the signature of xfce4-genmon-plugin-3.4-i486-1_yars.txz... Signature not found.
Signing up package: xfce4-genmon-plugin-3.4-i486-1_yars.txz... Done.
Checking the signature of xfce4-mailwatch-plugin-git20130427-i486-1_yars.txz... Signature not found.
Signing up package: xfce4-mailwatch-plugin-git20130427-i486-1_yars.txz... Done.
./signpackages.sh --check soft/Linux/Packages/slackware-14.0/
Location of packages is: soft/Linux/Packages/slackware-14.0/.
Checking: gedit-3.4.2-i486-1_yars.txz... Signed
Checking: slim-1.3.4-i486-2_yars.txz... Signed
Checking: network-manager-applet-0.9.8.0-i486-1_yars.txz... Signed
Checking: wxPython-2.8.12.1-i486-1_yars.txz... Signed
Checking: MPlayer-1.0rc4-i486-1_yars.txz... Signed
Checking: opera-12.00-i386-1_yars.txz... Signed
Checking: flash-player-plugin-11.2_r270-i486-1_yars.txz... Signed
Checking: flash-player-plugin-11.2_r258-i486-1_yars.txz... Signed
Checking: opera-12.14-i386-1_yars.txz... Signed
Checking: modem-manager-gui-0.0.15.4-i486-1_yars.txz... Signed
Checking: xfce4-xkb-plugin-0.5.4.3-i486-1_yars.txz... Signed
Checking: xfce4-genmon-plugin-3.4-i486-1_yars.txz... Signed
Checking: xfce4-mailwatch-plugin-git20130427-i486-1_yars.txz... Signed
Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580