pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg_rolling-replace with KDE




I encountered similar problem with META-PKGS/* in the past, and as quick solution i did install kde* packages one by one.

Regards,

Greg Troxel wrote:
  [apparently doing make replace in kdemultimedia]

  kdemultimedia-3.5.9 requires installed package xine-lib-1.1.13
  => Fixing @pkgdep entries in dependent packages.
  sh: cannot create /var/db/pkg/kde-3.5.8/+CONTENTS.28050: directory nonexistent
  *** Error code 1

(I don't use kde, so I've never tried this.)

pkg_rolling-replace just runs 'make replace package clean' in the right
order.  So if you are finding that the order is wrong, it's a pkg_rr
bug.  If one of the make replace steps fail, then it's either the
package, your database state, or the infrastructure.

My guess is that your dependency information has gotten out of whack.
In /var/db/pkg/foo-1/+REQUIRED_BY, there is a list of packages that
depend on foo.  Sometimes there are lines in that file that do not
correspond to packages that are still installed.

make replace takes the +REQUIRED_BY line, squirrels it away (because you
can't deinstall a package with requirements), and then puts it back
after the replace is done.

Then it fixes up the pointers to the replaced package in those packages
depending on it.  In this case, it looks like there is a stray kde-3.5.8
line in kdemultimedia's +REQUIRED_BY.

You should run 'pkg_admin check'.  We really need a 'pkg_fsck' program
to cross-check all the dependency pointers.

The following may be helpful.  Read and understand it and run just the
first part, and then read and understand the second part before you
continue.


#!/bin/sh

cd /var/db/pkg

cat */+REQUIRED_BY | sort -u |
while read f; do
    if [ ! -d $f ]; then
        echo $f;
    fi;
done |
while read req; do
    for reqfile in */+REQUIRED_BY; do
        if egrep $req $reqfile > /dev/null; then
            echo $reqfile $req;
            (echo "/$req/d"; echo "w") | ed $reqfile
        fi;
    done
done




Home | Main Index | Thread Index | Old Index