Pierre Abbat <phma%bezitopo.org@localhost> writes: > Continuing my rolling-replace, I get this: > > *** pkg_chk reports the following packages need replacing, but they are not > installed: py27-cups > py27-dateutil > py27-dbus > py27-docutils > py27-elementtree > py27-icalendar > py27-pyrex > py27-pytz > py27-qt4 > py27-roman > py27-sip > py27-vobject > *** Please read the errors listed above, fix the problem, > *** then re-run pkg_rolling-replace to continue. > > I picked one and found that py26-cups is installed. Is there a quick way to > tell it to replace all the py26-packages with py27-packages, or do I have to > build each one manually? This is really not satisfactory in pkg_rr, or in pkgsrc itself. The problem is that PYTHON_VERSION_DEFAULT is now 27, but you have 26 installed. That's fine, but "make replace" in foo/py-bar will assume you mean 27. But, the package dir found by looking at the installed package points there. A further complication is that many python packages can be parallel installed (py26-foo and py27-foo both). But some have unversioned files (like bin/foo) and thus cannot. Also, typically some of these are dependencies of other more complicated things. So I tend to use something that is like pkg_chk -g. My advice there is: First remove all packages that are automatic=YES and have no depending packages, repeating until there are none. Check the others to see if you want them, and set automatic=YES. This removes a lot of things that have accumulated that you don't need, and the less the better, especially at times like this. Implement an option to pkg_chk to list only manually-installed packages, so that automatic packages are skipped, and then use it. (If you need them, they'll be built, but you don't want the process to lose the automatic=YES.) It would be nice if pkg_rolling-replace figured out that py26-foo was 26, and passed a PYTHON_VERSION variable to make replace, so that it replaced the 26 version. And if pkg_chk didn't report a mismatch, because py26-foo-1.0nb2 is not actually mismatched (in the normal way) with py27-foo-1.0nb2. It would also be nice if "pkg_delete -f" marked any depending packages unsafe_depends. Then you could just "pkg_delete -f py26*" and rerun pkg_rr, assuming that py26* was all automatic.
Attachment:
pgpbmxPAql83S.pgp
Description: PGP signature