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

Reply via email to