Call for comments - pkg_trans

Doug Barton dougb at FreeBSD.org
Fri Aug 1 06:59:15 UTC 2008


Norberto Meijome wrote:
> On Thu, 31 Jul 2008 23:38:21 +0200 "Ivan Voras"
> <ivoras at 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



More information about the freebsd-ports mailing list