On Saturday 13 October 2007 02:13:49 RW wrote: > On Fri, 12 Oct 2007 23:13:58 +0200 > > Mel <[EMAIL PROTECTED]> wrote: > > On Friday 12 October 2007 22:19:41 RW wrote: > > > On Thu, 11 Oct 2007 14:26:19 -0600 > > > > > > James <[EMAIL PROTECTED]> wrote: > > > > Call it a moment of sheer stupidity, call it a misremembering, > > > > call it whatever you want (and I imagine I'll hear a few > > > > different ones), but I just did an rm -r /var/lib/pkg. > > > > > > > > Before I type anything to damage things further, does anyone have > > > > any suggestions as to how to recover from this? I have other > > > > FreeBSD boxes available to me, none with the same pkg list, > > > > though. I'll be reading man pkgdb in the meantime.. > > > > > > This came up recently in another thread, and what seemed to be the > > > best solution to me, was this: > > > > > > 1. work out which leaf-ports you actually need - don't worry about > > > the dependencies. > > > > > > 2. at your leisure build new packages under a chroot environment, > > > or on another machine. > > > > > > 3. back-up /usr/local/etc (or the whole of /usr/local) > > > > > > 4. rm -rf /usr/local/* > > > > > > 5. Restore /usr/local/etc and install packages. > > > > Why would you go through 3-5 when you can just > > mv /chroot/build/directory/var/db/pkg /var/db/pkg ? > > For the reasons that that you snipped off the bottom of my post. > > > > ... avoids leaving any orphaned files,and most > > > importantly makes sure that all of the installed package have an > > > entry in /var/db/pkg. If you miss any of these entries, it may > > > cause a lot of trouble down the line. > > /chroot/build/directory/var/db/pkg is only a rough guess as to > what was actually installed under /usr/local/.
So don't guess if you're that paranoid. It can be much much harder to restore some directories under /usr/local to a working state, like /usr/local/pgsql, /usr/local/www and some perl ports like rrd. Depending how long builds take, it may be faster let a script run over /usr/ports/*/* that runs make generate-plist for each port, appends grep -v '^@' ${TMPPLIST} into a file, thus building an index of every file that a port can install, then let a script run over /usr/local that queries that index for each file it encounters. Like I said, for the ultra paranoid. > Maybe some forgotten > dependency doesn't get included in the new build. A year from now you > may find odd build problems, or new port installs may use orphaned > files with critical vulnerabilities that portaudit can't detect. Nope. Orphaned files create stale deps, which are easily found with pkgdb -F, because the dependency check checks if ${LOCALBASE}/bin/foo exists and if it does adds the dependency to /var/db/pkg. Also, `make missing' for a given port easily lists all dependencies that aren't in $PKG_DBDIR, so if you run make missing after a new install for a while, you'll easily identify those. -- Mel _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"