rough method of cleaning the ports tree
John Nielsen
lists at jnielsen.net
Tue Dec 18 19:43:24 PST 2007
On Tuesday 18 December 2007, Erich Dollansky wrote:
> after noticing how large my ports tree grows while compiling, I thought
> of simply deleting it and do a CVSup to get a new one after the
> compilation is finished.
>
> This should be much faster and also should do some kind o
> defragmentation. I simply cannot believe that the huge ports tree will
> still be very well organised after some months.
>
> What does the list think of this method?
There are at least two better ways of doing this that will take less time
and not put unnecessary load on the CVS servers.
1) Delete "work" directories after building ports. If you use the "clean"
make target it will do this automatically. I typically do "make install
clean" to install the port then delete the work directory in one command.
Portupgrade and other tools will generally do this as well. If you already
installed a port you can just do "make clean" to get rid of its work
directory. If you (suspect that you) have a large number of work
directories (either because your builds got interrupted or you forgot to
use the "clean" target) you can do something
like "find /usr/ports -maxdepth 3 -type d -name work -delete" to get them
all in one go.
2) Use WRKDIRPREFIX. I set this in my .cshrc, but you can set it manually or
in whatever file is appropriate for your (root) shell. e.g. after doing
a "setenv WRKDIRPREFIX /usr/scratch" all of the work directories are
created under /usr/scratch/usr/ports/<category>/<portname> instead of
under /usr/ports directly. Whenever I feel like cleaning up I can
just "rm -r /usr/scratch/usr/ports" without losing anything.
See "man ports" for more information on the port build infrastructure and
associated make targets and environment variables.
The other thing in the ports collection that tends to take up space is the
distfiles directory. If you want to delete it wholesale then go ahead
("rm -r /usr/ports/distfiles"), but it's not uncommon to have multiple
ports or multiple revisions of the same port use the same distfile(s), so
you'll end up downloading them again and again. I prefer to use the
script /usr/ports/Tools/scripts/distclean.sh. Run with a "-f" flag it will
automatically delete all distfiles no longer referenced by any port in your
ports tree.
HTH,
JN
More information about the freebsd-questions
mailing list