Date: Tue, 28 Nov 2006 10:20:17 -0800 From: Doug Barton <dougb@FreeBSD.org> To: Vivek Khera <vivek@khera.org> Cc: ports@freebsd.org Subject: Re: stale dependencies and portupgrade Message-ID: <456C7DE1.5060204@FreeBSD.org> In-Reply-To: <5D017181-7215-4CB6-A459-4A40751AB39A@khera.org> References: <5D017181-7215-4CB6-A459-4A40751AB39A@khera.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Vivek Khera wrote: > I've been using portupgrade for a long time now. Recently I've been > noticing (though I'm sure it has been happening all along) that > dependencies are not cleanly propagated to other ports. > > Example: p5-Expect used to depend on p5-IO-Stty which was removed from > ports recently. rt36 depends on p5-Expect, so got a transitive > dependency to this dead port. Upgrading p5-Expect using "portupgrade > -Rr" took care of the direct dependency, but the upstream ports still > had the registered dependency to p5-IO-Stty. I had to force-uninstall > that port then run "pkgdb -F" to remove that dependency. > > Similarly, with a portupgrade of portupgrade itself, most of my machines > lost the dependency to ruby18-bdb1 package. The only way out of that > was to do a delete of portupgrade and run a fresh make install in the > port directory. > > I suppose the bug is that I expected portupgrade -Rr to recompute the > dependency lists of the upstream ports to take into account any changing > dependencies of the updated port. > > Do other port manager utilities take this type of change into account? > At this point, I'm not sure any of my dependencies are accurate on the > complex ports like RT. This type of complexity is one of the reasons why portmaster does not use an "extra" database to track dependencies. It instead relies on /var/db/pkg and the ports framework to do that, and updates the +CONTENTS files themselves when needed. To more precisely answer your question, in /var/db/pkg the derived dependency on p5-IO-Stty wouldn't exist, so you wouldn't have the problem you described. You can get a quick and dirty look at whether or not the ports you have installed are up to date by doing 'pkg_version -v'. If you'd like to recurse through all your dependencies for RT you could try installing sysutils/portmaster and do one of the following: portmaster rt36 which will first recurse through all of RT's direct dependencies, make sure they are up to date, then rebuild RT itself; or portmaster -f rt36 which will rebuild all of RT's dependencies first (and therefore recurse through each dependent port's dependencies), then rebuilt RT. You might also want to give the man page a look before you do that, and you'll probably want to at least add the -v flag your first few times using it. hth, Doug -- This .signature sanitized for your protection
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?456C7DE1.5060204>