Managing a [local] package repository....

Eric Schuele e.schuele at computer.org
Sat May 20 15:11:05 PDT 2006


Beech Rintoul wrote:
> On Saturday 20 May 2006 12:56, Eric Schuele wrote:
>> 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.
> 
> Look at man portsclean.
> 
> Beech
> 

Yes... that's doing the trick.  I've used it for cleaning out 
unreferenced distfiles.... did not know it cleaned up packages as well. 
  Thanks.

-- 
Regards,
Eric


More information about the freebsd-questions mailing list