Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jul 2008 23:59:12 -0700
From:      Doug Barton <dougb@FreeBSD.org>
To:        Norberto Meijome <freebsd@meijome.net>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: Call for comments - pkg_trans
Message-ID:  <4892B440.4090809@FreeBSD.org>
In-Reply-To: <20080801125414.55567d37@ayiin>
References:  <g6res0$giq$1@ger.gmane.org> <489144B5.4030101@FreeBSD.org>	<g6sgqk$mcm$1@ger.gmane.org> <4892022F.1080009@FreeBSD.org>	<9bbcef730807311438m45802827y91c7bb7366406af6@mail.gmail.com> <20080801125414.55567d37@ayiin>

next in thread | previous in thread | raw e-mail | index | archive | help
Norberto Meijome wrote:
> On Thu, 31 Jul 2008 23:38:21 +0200 "Ivan Voras"
> <ivoras@freebsd.org> wrote:
> 
>>> BTW, I thought of another problem scenario. The user installs
>>> port M, and it brings dependencies D1, D2, and D3. Then the
>>> user installs port N which also has port D2 as a dependency.
>> Port N then won't install D2 as it already exists. The user can 
>> rollback [N], then rollback [M+D1+D2+D3]. Trying to roll back
>> back [M+D1+D2+D3] before [N] will show the user a message about 
>> dependencies.
> 
> Shouldn't you be able to request rollback [M + D1 + D2+ D3 ] , but
> have the dependency of {something else not M} on D2 be detected,
> and therefore D2 *not* uninstalled?

That is certainly how I would imagine it should work, yes.

> As a matter of fact, i don't really see why we need a transaction
> system to have an option to {pkg management of choice} to uninstall
> {unwanted_pkg} and all other dependencies ONLY needed by
> {unwanted_pkg}. Anyway, pkg_cutleaves does part of it...but it'd be
> much handier, i think, to handle it @ the uninstall time.

As I mentioned previously portmaster has the -s option to remove ports 
that were installed as dependencies but are no longer depended on. It 
also has the -e option to "expunge" leaf ports you don't want anymore, 
and -e will run 'portmaster -s' after it's done deleting the port you 
specify on the command line.

> And since we are just wishing for things, It'd be nice to have an
> opportunity to back off from a install/remove after calculating
> dependencies, such as that provided by yum (it shows everything it
> will do and asks for confirmation before proceeding. )

portmaster has the --show-work option that gives you output like this:

===>>> Port directory: /usr/ports/sysutils/fusefs-ntfs
===>>> Starting check for all dependencies
===>>> Gathering dependency list for sysutils/fusefs-ntfs from ports

===>>> Installed archivers/unzip
===>>> Installed converters/libiconv
===>>> Installed devel/gmake
===>>> Installed devel/libtool15
===>>> NOT INSTALLED		devel/libublio
===>>> Installed devel/pkg-config
===>>> NOT INSTALLED		lang/ruby18
===>>> NOT INSTALLED		sysutils/fusefs-kmod
===>>> NOT INSTALLED		sysutils/fusefs-libs
===>>> NOT INSTALLED		textproc/ruby-deplate

Is that what you had in mind? That is currently a separate operation 
because for ports with a lot of dependencies it can take a long time 
to build the list. But I suppose that if there is interest I could 
create a new mode of operation to do that check first, then confirm 
with the user that they want to proceed.

Doug

-- 

     This .signature sanitized for your protection




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