Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Apr 1999 09:09:46 +1000
From:      Peter Jeremy <peter.jeremy@auss2.alcatel.com.au>
To:        bartol@salk.edu
Cc:        current@FreeBSD.ORG
Subject:   Re: /sys/boot, egcs vs. gcc, -Os
Message-ID:  <99Apr9.085646est.40354@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help
Tom Bartol <bartol@salk.edu> wrote:
>ports/package database system but it occurred to me that perhaps the
>database is currently only storing which packages a given package depends
>upon and is NOT storing which packages depend upon a given
>package

The port source tree stores a list of pre-requisite packages in each
Makefile.  The `required-by' list is not stored - it would be a
nightmare to maintain.

On installation, the packages database stores both dependency
directions.  /var/db/pkg/<PACKAGE>/+CONTENTS contains the list of
pre-requisite packages in `@pkgdep' records.  The +CONTENTS file is
part of the package.  /var/db/pkg/<PACKAGE>/+REQUIRED_BY contains the
`required-by' list and is maintained automatically by the package
management tools (eg installing `foo' which depends on `bar' adds
a line `foo' to /var/db/pkg/bar/+REQUIRED_BY, which is removed if
the package in removed).

The problem is that the package management system provides `add' and
`delete' functions only, and the delete function (by default) requires
all dependent packages to be deleted first.  (You can force the delete
to ignore the dependent packages, but that loses the +REQUIRED_BY file
contents).

There's no mechanism for updating a package - and it's not clear (to
me anyway) how this can be done safely in a general way.  Where the
update is only minor (and won't affect the dependent packages), you
can use something like:

mv /var/db/pkg/bar-1.1/+REQUIRED_BY /var/db/pkg/save
pkg_delete bar-1.1
pkg_add bar-1.2
mv /var/db/pkg/save /var/db/pkg/bar-1.2/+REQUIRED_BY

This approach can't pick up the dependent packages that really do need
to be re-compiled against the newly installed package.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?99Apr9.085646est.40354>