Fetching precompiled packages for external install

Polytropon freebsd at edvax.de
Tue Aug 19 21:50:54 UTC 2008


On Tue, 19 Aug 2008 14:39:48 -0400, Lowell Gilbert <freebsd-questions-local at be-well.ilk.org> wrote:
> I don't see anything direct, but the *-depends-list targets will
> probably get you close enough to work it out.

Sorry, I don't know what "*-depends-list targets" refers to. But
I think it's something about the ports which I don't want to use,
instead, using the precompiled packages is what I wanted to.

>From portinstall's -p option I know a similar behaviour: Things
are compiled, installed, and put into packages/ as packages that
could be transferred to another system.

I read the pkg_add manpage many times, and now I have a solution.
Watch out! it's ugly! But I think it works.



#!/bin/sh
#
# getpkg.sh 2008-08-19
#
# fetch a precompiled package as well as it dependencies
# for further installation

if [ "$1" = "" ]; then
	echo "$0 <package>"
	exit 1
fi
echo -n "fetching $1 ... "
if [ -f $1.tbz ]; then
	echo "$1.tbz already there"
	exit 1
fi
pkg_add -fKnrv $1 > $1.txt 2>&1
echo "done"
for DEP in `cat $1.txt | grep $1 | grep "depends on" | cut -d "'" -f 6 | cut -d "/" -f 2`; do
	echo "dependency for $1 is ${DEP}"
	$0 ${DEP}
done
rm $1.txt
exit 0




One thing I don't know yet: Will such a collection of .tbz files
be installable in a recursive way? Does pkg_add only need files
in the format <name>.tbz, or is <name>-<version>.tbz required?
I will check this.

Up to this time, enjoy the ugly script. :-)

Anyway, thanks for help.



-- 
Polytropon
>From Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list