Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Jan 2009 07:22:21 -0800
From:      "Garrett Cooper" <yanefbsd@gmail.com>
To:        "Doug Barton" <dougb@freebsd.org>
Cc:        Josh Rickmar <joshua_rickmar@eumx.net>, freebsd-ports@freebsd.org
Subject:   Re: Removing stale dependencies (Was: Re: Concern about using pkg_delete -r)
Message-ID:  <7d6fde3d0901100722g67c5200ex5552b2e19d1ae7d4@mail.gmail.com>
In-Reply-To: <49681E6C.9060703@FreeBSD.org>
References:  <53980.67.177.142.45.1224810884.squirrel@ssl.eumx.net> <49681E6C.9060703@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 9, 2009 at 8:05 PM, Doug Barton <dougb@freebsd.org> wrote:
> Josh Rickmar wrote:
>> I'm hoping that this list covers port tools as well as the usual
>> discussions about the actual ports.  If not, please CC this to the proper
>> list.
>>
>> I want to use pkg_delete to remove an installed port, but also want to
>> remove its orphaned dependencies along with it.  After looking at the
>> pkg_delete(1) man page, the -r flag seems to be the option to use for this
>> job.  My concern, though, is about the wording:
>>
>>> In addition to specified packages, delete all
>>> packages that depend on those packages as well.
>>
>> Does this mean that if I pkg_delete -r pkgA, than pkgB (a dependency) will
>> be removed with it, even though it is dependency of pkgC?  Or is
>> pkg_delete (or pkg_deinstall) smart enough to understand this dependency
>> and keep pkgB installed?
>>
>> If in this scenario pkgB would be deleted, should an extra warning be
>> added to the man page so that users know that using this flag could
>> potentially break their other ports?
>
> ports-mgmt/portmaster has options to do what you want. The -s option
> will detect any port that was installed as a dependency of another
> port (or ports) but is no longer needed; and will give you an option
> to delete it. (It's an option because things can sometimes move from
> being a leaf port to being a dependency.)
>
> The -e option allows you to "expunge" a leaf port that you no longer
> want and then runs portmaster again with -s to detect any newly
> orphaned dependencies.
>
> Both options are compatible with the -[dD] options to delete or not
> delete the relevant distfiles and the -b option to create backup
> packages of the installed bits before deleting them.
>
> I suggest running -s first, then 'portmaster -l' to get a list of what
> you have installed. Anything listed as a "root" or "leaf" port can be
> fed to the -e option.
>
>
> hth,
>
> Doug

I just started using portmaster this past week, and it appears to go a
bit crazy removing dependencies -- there were a lot of libraries
broken after removing dependencies that shouldn't have been. This
could all be because of bad dependencies in the Makefiles though.

For instance, I kept azureus, but zapped libcroco and libgnome (I
thought they had gotten included in the wine-doors install I deleted
on my system), and it broke my upgrade from azureus to vuze (the
libraries for both are essentially the same, but vuze uses swt-devel
whereas azureus uses swt I think..).

My 2 cents,
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7d6fde3d0901100722g67c5200ex5552b2e19d1ae7d4>