#!/bin/sh set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment configarchitecture 'amd64' insertinstalledpackage 'pkgb' 'none' '1' insertinstalledpackage 'pkgd' 'none' '1' insertpackage 'unstable' 'pkga' 'amd64' '2' 'Depends: pkgb' insertpackage 'unstable' 'pkgb' 'amd64' '2' insertpackage 'unstable' 'pkgc' 'amd64' '1' 'Conflicts: pkgb' insertpackage 'unstable' 'pkge' 'none' '1' setupaptarchive testequal 'Reading package lists... Building dependency tree... The following packages will be REMOVED: pkgb:none The following NEW packages will be installed: pkgc 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. Remv pkgb:none [1] Inst pkgc (1 unstable [amd64]) Conf pkgc (1 unstable [amd64])' aptget install pkgc -s testequal 'Reading package lists... Building dependency tree... The following extra packages will be installed: pkgb The following packages will be REMOVED: pkgb:none The following NEW packages will be installed: pkga pkgb 0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. Remv pkgb:none [1] Inst pkgb (2 unstable [amd64]) Inst pkga (2 unstable [amd64]) Conf pkgb (2 unstable [amd64]) Conf pkga (2 unstable [amd64])' aptget install pkga -s # ensure that arch-less stanzas from Packages files are ignored msgtest 'Package is distributed in the Packages files' 'pkge' grep -q 'Package: pkge' $(find aptarchive -name 'Packages') && msgpass || msgfail testnopackage pkge testnopackage pkge:none testnopackage pkge:* # do not automatically change from none-arch to whatever-arch as # this breaks other none packages and dpkg has this ruleset as # this difference seems so important that it has to be maintained … testequal 'Reading package lists... Building dependency tree... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade -s # pkgd has no update with an architecture testdpkginstalled pkgd msgtest 'Test apt-get purge' 'pkgd' aptget purge pkgd -y >/dev/null 2>&1 && msgpass || msgfail testdpkgnotinstalled pkgd # there is a pkgb with an architecture testdpkginstalled pkgb msgtest 'Test apt-get purge' 'pkgb:none' aptget purge pkgb:none -y >/dev/null 2>&1 && msgpass || msgfail testdpkgnotinstalled pkgb # check that dependencies are created after the none package exists in the cache rm rootdir/var/cache/apt/*.bin insertinstalledpackage 'pkgb' 'none' '1' insertinstalledpackage 'pkgf' 'none' '1' 'Conflicts: pkgb' insertinstalledpackage 'pkgg' 'amd64' '1' 'Conflicts: pkgb' insertinstalledpackage 'pkgb' 'amd64' '2' testequal "Reading package lists... Building dependency tree... Reading state information... You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies: pkgb : Conflicts: pkgb:none but 1 is installed pkgb:none : Conflicts: pkgb but 2 is installed pkgf:none : Conflicts: pkgb:none but 1 is installed Conflicts: pkgb but 2 is installed pkgg : Conflicts: pkgb but 2 is installed Conflicts: pkgb:none but 1 is installed E: Unmet dependencies. Try using -f." aptget check