On 02/14/2011 10:08 PM, seth vidal wrote:
On Mon, 2011-02-14 at 21:47 +0200, Panu Matilainen wrote:
If we forget about rpm 4.6 - 4.7 (ie just let them behave like 4.4.x
does), in newer versions you can use your own keyring without ever
touching the rpmdb for keys if you want to - for example pulling the
keys pointed to by .repo files into a keyring and telling rpm to use
that instead of what might be in the rpmdb. It's just that wedging this
kind of new stuff into yum while maintaining yum's api compatibility,
rpm 4.4.x compatibility and without adding large sections of differing
codepaths causing even more pain, is not always exactly trivial.
what kind of keyring is this? A normal gpg pubring + trustdb or rpm's
keyring-in-a-db?
It's an in-memory construct with no backing store (at least currently),
and while rpm by default uses gpg-pubkey's from the rpmdb to populate it
behind the scenes, you can populate it from whatever source you want, it
eats ascii-armored GPG keys. Eg
>>> import rpm
>>> kr = rpm.keyring()
>>> key =
rpm.pubkey(file("/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-14-primary").read())
>>> kr.addKey(key)
0
>>> ts = rpm.TransactionSet()
>>> ts.setKeyring(kr)
True
...and that transaction set will never go to the rpmdb for signature
checking.
Or you can grab the default rpmdb keyring into memory (eg early on when
you are accessing rpmdb anyway) and then use it later on to avoid having
to load stuff from rpmdb again, eg
>>> ts = rpm.TransactionSet()
>>> kr = ts.getKeyring()
>>> del ts
>>> ots = rpm.TransactionSet()
>>> ots.setKeyring(kr)
True
It's a pretty primitive API but does allow the thing it was pretty much
created for: signature checking without accessing the rpmdb. So you
could check signatures while downloading, without ctrl-c issues (it also
eliminated some nasty recursion from rpm internals but that's another
story) and allow the keys to come from other sources than rpmdb. That
the gpg-pubkey "packages" are still actually used by default is more of
an "internal implementation detail", although changing that is going to
be a tricky and slow process because various things, yum included,
actually expect to find them there.
- Panu -
_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel