#!/bin/sh # debian-install v1.1.1 (c) 11.9.2007 by Andreas Ley (u) 16.3.2011 # Non-interactive debian / apt-get install usage() { echo "Usage: `basename $0` [-q] [-r|-a] [-f] [-I] [-R] package [...]" >&2 echo "Usage: `basename $0` [-q] [-r|-a] [-f] [-I] [-R] -u [package [...]]" >&2 echo "-q quiet" >&2 echo "-r remove" >&2 echo "-a mark packages as automatically installed (i.e. dependencies)" >&2 echo "-f force (i.e. use --force-yes to install from unauthenticated sources)" >&2 echo "-I don't install recommended packages" >&2 echo "-R reinstall" >&2 echo "-u update installed packages, even if no new package is to be installed" >&2 echo "package may be a package name, a full URL or an absolute(!) local file name" exit 1 } set -- `getopt hxvqrafIRu $*` || usage trace=false verbose=false install=true auto=false update=false while :; do case $1 in -h) sed '1d;s/^# *//;/^$/q' $0; usage;; -x) set -x; trace=true; shift;; -v) verbose=true; shift;; -q) q='-qq'; shift;; -r) install=false; shift;; -a) auto=true; shift;; -u) update=true; shift;; -f) f='--force-yes'; shift;; -I) n='--no-install-recommends'; shift;; -R) r='--reinstall'; shift;; --) shift; break;; esac done if ! ${update}; then test $# -eq 0 && usage fi # Make sure install scripts don't call non-installed versions PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 export PATH %ifdef CN # FZK subnets aren't allowed to connect to external targets directly #http_proxy="http://proxy.kit.edu:3128/" http_proxy="http://proxy.fzk.de:8000/" https_proxy="${http_proxy}" ftp_proxy="${http_proxy}" # Hmpf, apt-get ignores no_proxy :-( no_proxy="kit.edu,fzk.de,uni-karlsruhe.de,uka.de" export http_proxy https_proxy ftp_proxy no_proxy %else # No need to use a proxy to go to the local mirror unset ftp_proxy unset http_proxy %endif DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND if ${install}; then ############################################################################### # # Install # for pkg in "$@"; do case ${pkg} in /*) fpkgs="${fpkgs} ${pkg}";; *://*) upkgs="${upkgs} ${pkg}";; # */*) release="`echo \"${pkg}\" | cut -d/ -f2`" # pkg="`echo \"${pkg}\" | cut -d/ -f1`" # dpkg -l "${pkg}" 2>/dev/null | grep '^ii' >/dev/null || rpkgs="${rpkgs} ${pkg}";; *) dpkg -l "${pkg}" 2>/dev/null | grep '^ii' >/dev/null || pkgs="${pkgs} ${pkg}";; esac done if ${update} || test -n "${pkgs}${fpkgs}${upkgs}"; then apt-get -qq update # Use dist-upgrade instead of upgrade to allow for changing dependencies apt-get ${q} -y dist-upgrade if test -n "${pkgs}"; then apt-get ${q} -y ${f} ${n} ${r} install ${pkgs} ${auto} && aptitude markauto ${pkgs} fi # if test -n "${rpkgs}"; then # apt-get ${q} -y ${f} ${n} ${r} -t ${release} install ${rpkgs} # ${auto} && aptitude markauto ${rpkgs} # fi if test -n "${fpkgs}"; then dpkg -i ${fpkgs} fi if test -n "${upkgs}"; then tmpdir="/var/run/`basename $0`" mkdir -p "${tmpdir}" for pkg in ${upkgs}; do wget -q -P "${tmpdir}" -O "${tmpdir}/`basename ${pkg}`" "${pkg}" && dpkg -i "${tmpdir}/`basename ${pkg}`" done fi case `head -1 /etc/debian_version` in [5-9]*|*/sid) ${auto} || apt-get ${q} -y --purge autoremove;; esac apt-get clean fi else ############################################################################### # # Remove # for pkg in "$@"; do dpkg -l ${pkg} 2>/dev/null | grep '^[^i]n' >/dev/null || pkgs="${pkgs} ${pkg}" done if test -n "${pkgs}"; then apt-get -y --purge remove ${pkgs} fi case `head -1 /etc/debian_version` in [5-9]*|*/sid) apt-get ${q} -y --purge autoremove;; esac fi exit 0