diff --git a/jaildk b/jaildk index c2868c0..2aaa339 100644 --- a/jaildk +++ b/jaildk @@ -15,6 +15,7 @@ base - build a new base build - install a build chroot of a jail create - create a new jail from a template clone - clone an existing jail or jail version +fetch - fetch current port collection ${beg}Installing Jails:${end} install - install a jail (prepare mounts, devfs etc) @@ -105,6 +106,10 @@ jaildk_build() { fi jaildk_install $jail all $mode rw $base $version + if [ $2 = "start" ]; then + ex mount -t nullfs -o rw $j/ports/$version $run/$jail/usr/ports + fi + } jaildk_rc_mount() { @@ -382,6 +387,8 @@ boot" ex rm -rf $basedir/$file done + ex mkdir -p $basedir/usr/ports + ex rm -rf $basedir/var/db ex ln -s /usr/local/db $basedir/var/db fi @@ -799,7 +806,7 @@ jaildk_setup() { bold "preparing directories" ex mkdir -p $j - for subdir in etc bin appl base data home log run; do + for subdir in etc bin appl base data home log run ports; do ex mkdir -p $j/$subdir done @@ -890,6 +897,31 @@ endif esac } +jaildk_fetch() { + version=`date +%Y%m%d` + if [ -d "$j/ports/$version" ]; then + echo "Ports dir $version already exist. Do you want to recreate it? [y/N]" + read yesno + case $yesno in + y|Y|yes|YES) + rm -rf $j/ports/$version + jaildk_fetch_exec + ;; + esac + else + jaildk_fetch_exec + fi +} + +jaildk_fetch_exec() { + fetch -o $j/ports/$version.tar.gz http://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz + mkdir -p $j/ports/$version + tar xzfC $j/ports/$version.tar.gz $j/ports/$version + cd $j/ports/$version/ + mv ports/* . + cd - + rm -rf $j/ports/$version.tar.gz $j/ports/$version/ports +} ########################## # @@ -909,7 +941,7 @@ case $runner in start|stop|status|restart) jaildk_jail $runner $* ;; - setup|reinstall|install|uninstall|build|blogin|login|clone|create|remove|rc|base) + setup|reinstall|install|uninstall|build|blogin|login|clone|create|remove|rc|base|fetch) jaildk_$runner $* ;; *)