chiark / gitweb /
Add libsoap-lite-perl for the wiki
[dsa-metapackages.git] / apt-in-chroot
index ee02a10..7126202 100755 (executable)
@@ -20,7 +20,7 @@
 #  Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 # 
 
-PATH="/usr/bin:/bin"
+PATH="/usr/sbin:/usr/bin:/sbin:/bin"
 export PATH
 
 usage() {
@@ -33,6 +33,9 @@ usage() {
        echo "          + purge"
        echo "          + build-dep"
        echo "          + update"
+       echo "          + upgrade"
+       echo "          + dist-upgrade"
+       echo "          + clean"
 }
 
 
@@ -53,12 +56,14 @@ if [ -x /usr/bin/dchroot ] ; then
        chroots=$(dchroot -l 2>&1 | awk -F": " '{print $2}' | tr ' ' '\n')
        method=dchroot
        suffix[${#suffix[*]}]="_$(dpkg --print-architecture)"
+       allowed_filter='.'
 elif [ -x /usr/bin/schroot ] ; then
        chroots=$(schroot -l | awk -F":" '{print $2}' | grep -- '-dchroot$' )
        method=schroot
-       suffix="-dchroot"
+       suffix[${#suffix[*]}]=""
        suffix[${#suffix[*]}]="-dchroot"
        suffix[${#suffix[*]}]="-$(dpkg --print-architecture)-dchroot"
+       allowed_filter='-dchroot$'
 else
        echo >&2 "Cannot find chroot wrapper."
        exit 1
@@ -77,10 +82,14 @@ if ! [ -n "$requested_chroot" ]; then
        echo >&2 "$CHROOT is not a valid dchroot.  Available chroots are:"
        echo "$chroots"
        exit 1
+elif ! [[ "$requested_chroot" =~ $allowed_filter ]]; then  # do not quote the regex
+       echo >&2 "$CHROOT is not a valid dchroot.  While it exists, this script may not touch it.  Chroot names must match $allowed_filter."
+       exit 1
 fi
 
+
 case "$APTCMD" in
-install|remove|purge|build-dep|update)
+install|remove|purge|build-dep|update|upgrade|dist-upgrade|clean)
        # those are the allowed apt sub-commands
        ;;
 *)
@@ -95,7 +104,7 @@ if [ "$method" = "dchroot" ]; then
        /usr/sbin/chroot $CHROOT_DIR/"$requested_chroot" apt-get "$APTCMD" $PACKAGES
 elif [ "$method" = "schroot" ]; then
        echo "Will run 'schroot -c $requested_chroot apt-get $APTCMD $PACKAGES'"
-       #/usr/sbin/chroot $CHROOT_DIR/"$requested_chroot" apt-get "$APTCMD" $PACKAGES
+       schroot -c "$requested_chroot" apt-get "$APTCMD" $PACKAGES
 else
        echo >&2 "Invalid method."
        exit 1