On Fri, Apr 04, 2003 at 04:14:19PM +0300, Peter Pentchev wrote:
> On Fri, Apr 04, 2003 at 02:11:58PM +0300, Danny Braniss wrote:
> > 
> > > > ok, so i wrote a small script (tcl, since i don't know perl), that
> > > > does some checking, it reports for each package, the number of files
> > > > how many are realy there, and if so, checks the MD5.
> > > >
> > > > now, if im not to far off, if some/all files are missing, or if the
> > > > md5 does not match, i should be able to remove the package info, ...
> > > 
> > > Well, that's not what you were asking for originally, and tools
> > > already exist to check that.
> > 
> > OK, let me refrase it
> > 
> > PROBLEM:
> >     how to update /var/db/pkg, when it knows too much,
> >     i.e. /usr/local has less stuff that /var/db/pkg knows about.
> >     
> > > 
> > > e.g. pkg_info -g and the example from the pkg_which(1) manpage that I
> > > mentioned to you in a previous email.
> > 
> > i read most of the pkg*, and though im very impressed, i fail to find a
> > clear/easy way to get a one line output saying:
> >     pkg xyz no longer exits, can be removed from database
> 
> If you are only interested in packages which no longer have *any* files
> on the filesystem, then compare the output of the following two
> commands:
> 
>   pkg_info -qL package | wc -l
>   pkg_info -qg package | wc -l
> 
> If the output of those two commands is the same, then there are no valid
> package files left at all, and a pkg_delete -f is in order.
> 
> Moreover, if you are only interested in the existence of the files, it
> would be easier to do something like:
> 
>   remove=1
>   pkg_info -qL package | while read fname; do
>       [ -f "$fname" ] && remove=0
>   done
>   if [ $remove == "1" ]; then pkg_delete package; fi

Just one more comment: the reason I stick to pkg_delete -f instead
of rm -rf /var/db/pkg/package is that the /var/db/pkg scheme is not
really set in stone: the correct way to manipulate the package database
is *only* via the pkg_* tools.  Well, there is something to be said
about the tools available in ports/sysutils/portupgrade, but then,
they are actively maintained by knu, who will most probably track any
changes in the base system handling of packages, if and when those
should occur.

G'luck,
Peter

-- 
Peter Pentchev  [EMAIL PROTECTED]    [EMAIL PROTECTED]    [EMAIL PROTECTED]
PGP key:        http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
Hey, out there - is it *you* reading me, or is it someone else?

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to