#!/bin/sh # This is a little shell script that will launch apt-get in dry-run mode # to find all the dependencies of a specific package # There's not set -e here because this script may fail ! # Apt doesn't always work ... # set -e # Get the configuration information if necessary if [ -z "$CODENAME" ] || [ -z "$ARCH" ] || [ -z "$APTTMP" ]; then if [ -e CONF.sh ]; then . CONF.sh else echo "Please set up environment variables before " echo "launching this program ..." echo "Current values are :" echo "CODENAME=$CODENAME" echo "ARCH=$ARCH" echo "APTTMP=$APTTMP" echo "USE_BP=$USE_BP" fi fi if [ $ARCH = "source" ] ; then ADEB="deb-src" else ADEB="deb" fi if [ "$USE_BP"x = "1"x ] ; then THIS_PKGSET="$CODENAME-backports-$ARCH" else THIS_PKGSET="$CODENAME-$ARCH" fi options=" -q -o Dir::State::status=$APTTMP/$THIS_PKGSET/status \ -o Dir::State=$APTTMP/$THIS_PKGSET/apt-state/ \ -o Dir::Cache=$APTTMP/$THIS_PKGSET/apt-cache/ \ -o Dir::Etc=$APTTMP/$THIS_PKGSET/apt/ \ -o APT::Cache::AllVersions=0 \ -o APT::Cache::ShowVersion=1 \ -o APT::Architecture=$ARCH \ -o APT::Architectures::=$ARCH \ -o Acquire::Languages=none" sections=main if [ "${NONFREE:-0}" != "0" ] || [ "${EXTRANONFREE:-0}" != "0" ] || [ "${FORCE_FIRMWARE:-0}" != "0" ]; then sections="$sections non-free" fi if [ "${CONTRIB:-0}" != "0" ]; then sections="$sections contrib" fi # Check for the necessary dirs and files ... if [ ! -d "$APTTMP/$THIS_PKGSET/apt-state/lists/partial" ]; then mkdir -p "$APTTMP/$THIS_PKGSET/apt-state/lists/partial" fi if [ ! -d "$APTTMP/$THIS_PKGSET/apt-cache/archives/partial" ]; then mkdir -p "$APTTMP/$THIS_PKGSET/apt-cache/archives/partial" fi if [ ! -d "$APTTMP/$THIS_PKGSET/apt" ]; then mkdir -p "$APTTMP/$THIS_PKGSET/apt" fi if [ ! -e "$APTTMP/$THIS_PKGSET/status" ]; then touch "$APTTMP/$THIS_PKGSET/status" fi if [ ! -e "$APTTMP/$THIS_PKGSET/apt/sources.list" ]; then # Backports if [ -n "$USE_BP" ]; then echo "$ADEB file:$MIRROR $CODENAME-backports $sections" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list if [ $ARCH != source ] ; then if [ -e "$MIRROR/dists/$CODENAME-backports/main/debian-installer" ]; then echo "$ADEB file:$MIRROR $CODENAME-backports main/debian-installer" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi fi else # Generating a correct sources.list file echo "$ADEB file:$MIRROR $CODENAME $sections" \ > $APTTMP/$THIS_PKGSET/apt/sources.list if [ -n "$PROPOSED_UPDATES" ]; then echo "$ADEB file:$MIRROR $PROPOSED_UPDATES $sections" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi # Local packages ... if [ -n "$LOCAL" ]; then echo "$ADEB file:${LOCALDEBS:-$MIRROR} $CODENAME local" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi # Security mirror ... if [ -n "$SECURITY" ]; then case $CODENAME in stretch|buster) SEC=$CODENAME/updates;; *) SEC=$CODENAME-security;; esac echo "$ADEB file:${SECURITY:-$MIRROR} $SEC $sections" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi # Debian Ports unreleased packages ... if [ -n "$UNRELEASED" ]; then echo "$ADEB file:$MIRROR unreleased main" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi # Debian-installer if [ $ARCH != source ] ; then if [ -e "$MIRROR/dists/$DI_CODENAME/main/debian-installer" ]; then echo "$ADEB file:$MIRROR $DI_CODENAME main/debian-installer" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi if [ -n "$UNRELEASED" ]; then echo "$ADEB file:$MIRROR unreleased main/debian-installer" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi if [ -n "$LOCAL" ] && [ -e "${LOCALDEBS:-$MIRROR}/dists/$DI_CODENAME/local/debian-installer" ]; then echo "$ADEB file:${LOCALDEBS:-$MIRROR} $DI_CODENAME local/debian-installer" \ >> $APTTMP/$THIS_PKGSET/apt/sources.list fi fi fi fi temp=$APTTMP/$THIS_PKGSET/temp.apt-selection # Launch the command if [ "$1" = "update" ] || [ "$1" = "check" ]; then apt-get $options $@ exit $? elif [ "$1" = "cache" ]; then shift apt-cache $options $@ exit $? elif [ "$1" = "deselected" ]; then shift apt-get $options -s $@ > $temp num=$? #if [ $num -ne 0 ]; then #echo ": Param: apt-selection deselected $@" >&2; #exit $num; #fi perl -ne 'print "$1\n" if /^Remv (\S+).*/' $temp | sort elif [ "$1" = "selected" ]; then shift apt-get $options -s $@ > $temp num=$? #if [ $num -ne 0 ]; then # echo "ERROR: Param: apt-selection selected $@" >&2; # exit $num; #fi perl -ne 'print "$1\n" if /^Inst (\S+).*/' $temp | sort else apt-get $options -s $@ exit $? fi