Hey folks, just wanted to share this small script Im using to install precompiled packages into my Gentoo-based CTs.
The idea behind this script is that there is a "BuildHost"-CT where all pkgs get compiled and a number of more or less equal CTs where the pkgs get installed. One could argue that 'ROOT="<path>" emerge -K <pkg>' should be used which is not working since the Gentoo emerge/ebuild scripts have a bug where pkg_postinst() gets executed outside $ROOT. cheers flip
#!/bin/bash # # PW 20091030 # # This script "emerges" prebuild tbz2 archives into a given container # # - the container family (use-flags and cflags) should be equal # - $PKGDIR in make.conf should point to /usr/local/portage/packages #VZDIR="/vz/ve" VZDIR="/vz" function usage() { cat << EOF Usage: $0 OPTIONS PORTAGE-PARAM EBUILD Options: -s | --source VEID of the source container -d | --destination VEID of the destination container PORTAGE-PARAM only -e and -p are supported -e -> --emptytree -p -> --pretend like: $0 -s 211 -d 234 -pv freeradius EOF exit 0 } error() { $ECHO "Error: $1" exit 1 } if [ $# -eq 0 ]; then usage fi while [ $# -gt 0 ]; do # Until you run out of parameters . . . case "$1" in -h|--help) usage ;; -s|--source) SRC_CT_ID="$2" shift if [ ! -d $VZDIR/$SRC_CT_ID/private ]; then error "source $VZDIR/$SRC_CT_ID/private does not exists on this system" fi ;; -d|--destination) DST_CT_ID="$2" shift if [ ! -d $VZDIR/$DST_CT_ID/private ]; then error "destination $VZDIR/$DST_CT_ID/private does not exists on this system" fi ;; -e|--emptytree) PORTAGEPARAM="$1" shift break ;; -p|--pretend) PORTAGEPARAM="$1" shift break ;; *) # if [ -z "$1" -o -z "$2" ]; then if [ -z "$1" ]; then usage; fi #shift break ;; esac shift done # # # SRC_PKGDIR=$VZDIR/$SRC_CT_ID/private/usr/local/portage/packages DST_PKGDIR=$VZDIR/$DST_CT_ID/root/usr/local/portage/packages [ -d $SRC_PKGDIR ] || exit -1 [ -d $DST_PKGDIR ] || mkdir -p $DST_PKGDIR echo "mount --bind $SRC_PKGDIR $DST_PKGDIR" echo "mount --bind -o remount,ro $DST_PKGDIR" sleep 2 mount --bind $SRC_PKGDIR $DST_PKGDIR mount --bind -o remount,ro $DST_PKGDIR echo -e "\n PKG Source: $VZDIR/$SRC_CT_ID/private/usr/local/portage/packages" echo -e " PKG Destination: $VZDIR/$DST_CT_ID/private\n" echo "vzctl exec $DST_CT_ID emerge --usepkgonly $...@}" vzctl exec $DST_CT_ID emerge --usepkgonly $...@} echo "umount $DST_PKGDIR" umount $DST_PKGDIR
_______________________________________________ Users mailing list Users@openvz.org https://openvz.org/mailman/listinfo/users