Managing a [local] package repository....
Eric Schuele
e.schuele at computer.org
Sat May 20 13:56:37 PDT 2006
Hello,
I'm wondering how others manage a local store of packages... or even if
anyone does this sort of thing. Let me explain...
Some short time back I decided to start stockpiling packages of all the
ports I have installed on my machine. I was/am doing this because I
intend on doing a fresh install to 6.1-RELEASE when I have the time.
But, although I do prefer to compile the ports (as opposed to
downloading the packages) I do not wish to recompile them all *again*,
because it is a significant amount of time. I intend to just transfer
them to the new installation. So I wrote a small script (appended
below, comments welcome) to create packages of everything on my system.
I did that one time, and have since done "make install package clean"
to install new packages, and done "portupgrade -aprR" to upgrade those
presently installed.
While this does seem to work well for me, it has left one problem I did
not foresee. As ports get upgraded, their new package is built and
placed in my package dir, but the *old* port's package is not removed.
So I now have quite a few packages in my package directory that are not
the most recent, and hence are just taking up space.
Example (/usr/ports/packages/All):
----
ImageMagick-6.2.5.5_4.tbz
ORBit-0.5.17_3.tbz
ORBit2-2.14.0.tbz <---
ORBit2-2.14.0_1.tbz <---
OpenSP-1.5_7.tbz
aspell-0.60.4_3.tbz
at-spi-1.7.7.tbz <---
at-spi-1.7.7_1.tbz <---
aterm-1.0.0_1.tbz
atk-1.11.4.tbz <---
atk-1.11.4_1.tbz <---
autoconf-2.13.000227_5.tbz
autoconf-2.59_2.tbz
automake-1.4.6_2.tbz
automake-1.9.6.tbz
avahi-0.6.10.tbz <---
avahi-0.6.10_1.tbz <---
avahi-0.6.10_3.tbz <---
avahi-0.6.9_5.tbz <---
-----
So my question is:
Is there a way to automatically remove the old packages as existing
packages get upgraded? Or is there some more appropriate means for
generating packages (and keeping them up to date) that I could transfer
to a fresh install (or even another machine for that matter)?
My mk_pkgs.sh. Comments are appreciated.
=================
#!/bin/sh
# This will create a binary package for all ports installed on a machine.
# It will place the packages in /usr/ports/packages/All
db_pkg_dir=/var/db/pkg
pkg_dir=/usr/ports/packages/All
mkdir -p $pkg_dir
cd $db_pkg_dir
for dname in *
do
if [ "$dname" != "pkgdb.db" ]
then
pkg_create -v -b $dname $pkg_dir/$dname.tbz
fi
done
===============
Thanks for your help.
--
Regards,
Eric
More information about the freebsd-questions
mailing list