[Foresight-devel] pinned kerneloops

Michael K. Johnson johnsonm at rpath.com
Tue Jun 17 10:56:18 EDT 2008


When kerneloops was added, no one noticed that the fact that we
pin kernel troves meant that the kerneloops program was pinned.
Now we're in a bind; we can't upgrade it without getting it unpinned.

There are two things to think about here:
 o  How to get it unpinned so that we can upgrade it.
 o  How to prevent this happening again.

Unpinning:

We can't unpin in a group script directly, because the conary
database is locked.  Fundamentally, any solution for this will be an
ugly hack; we just want to pick the one that is the least disgusting.
At least conary gives an error message that tells people (correctly)
how to unpin; this mitigates the problem.  One thing I don't know:
does PackageKit provide that error message to the user?

After much consideration, the only workable option I can come up
with is to could create a pre script which queries the database
(querying is OK, we just can't modify it) to see if kerneloops
is pinned, and if it is, it starts a disconnected background
job, then does "exit 1" to top the update.  The background
job would sleep/loop until it is able to unpin kerneloops.
See http://wiki.rpath.com/wiki/Conary:Group_Scripts

Prevention:

We should immediately fix the pinTroves entry in /etc/conary/config.d/kernel
to be more selective.  kernel:.* is probably good enough.  If not, then
we can use kernel(:.*|$) (need to test that, though).  This can be
done now, before we have finished testing the workaround that lets
us update kerneloops.


More information about the Foresight-devel mailing list