On Feb 25, 2006, at 6:40 AM, Dave Vasilevsky wrote:
Alright, here's the reason SysState exists, and why it gives an
error. Dpkg has a reasonably serious bug in it: when a package is
upgraded, dpkg doesn't check to see if there are any versioned
dependencies that have become invalid. This has yet to be fixed
upstream, here's one of the several reports on the Debian bugs
tracker: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=217862
Typically this bug manifests itself when fink builds an updated
version of some package, but then only installs the upgraded -
shlibs (not the other splitoffs). The old -dev is now sitting
around, with a (= %v-%r) dependency which is no longer valid. (Eg:
We now have installed foo-shlibs-2.0-1 and foo-dev-1.0-1 with
Depends: foo-shlibs (= 1.0-1) .) There can be other situations
where the bug shows up, but this is the most common. When this
happens, it's not just an issue of dpkg being "less strict", it
puts the dependency system in an inconsistent state because Depends
are being violated. If you run 'apt-get check', it will report the
problem--apt is smarter than dpkg.
Fink::SysState is basically a workaround for the problem. When fink
installs a package, SysState first checks to make sure that it's
not hitting the dpkg bug--if it is, it has a simple algorithm which
can fix the most common case (involving splitoffs). If SysState
yields an error, it's because the state of installed packages is
violating a Depends or Conflicts, so it certainly is an error
situation and not a warning.
Clearly there are a couple of issues with SysState. It has a small
but annoying bug which JFM found earlier, but I have just that
single report of it happening, and it doesn't relate to the gettext
issue. The error message that it gives is misleading--most often, a
SysState error happens when a buildlock is in the way of switching
between two conflicts/replace package, in which case 'apt-get -f
install' is not at all appropriate. I intend to fix the small bug,
and change the error message, but it doesn't help the gettext
situation.
The real problem is finding an upgrade sequence for all the gettext
packages that never leaves the dpkg state inconsistent. I've not
looked closely at the situation, so I'm not sure what the answer
is, I'll help check it out.
Dave
Another thought about this. It should be possible to run SysState
*before* building something, to determine what the state will be
after the current package is built and installed. That way we could
detect in advance that there was going to be a problem, and possibly
treat it like a Buildconflicts (i.e., remove something in advance of
building the package, possibly putting it back afterwards).
-- Dave
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fink-devel