123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #!/bin/sh
- set -e
- TESTDIR="$(readlink -f "$(dirname "$0")")"
- . "$TESTDIR/framework"
- setupenvironment
- configarchitecture 'amd64' 'i386'
- # regression test for #754904
- testfailureequal 'E: Unsupported file /dev/null given on commandline' aptget install -qq /dev/null
- # only consider .deb files
- cat > foo.rpm <<EOF
- I'm not a deb, I'm a teapot.
- EOF
- testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' aptget install -qq ./foo.rpm
- # and ensure we fail for invalid debs
- mv foo.rpm foo.deb
- testfailuremsg "E: Sub-process Popen returned an error code (2)
- E: Encountered a section with no Package: header
- E: Problem with MergeList ${TMPWORKINGDIRECTORY}/foo.deb
- E: The package lists or status file could not be parsed or opened." aptget install ./foo.deb
- buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
- testfailureequal "Reading package lists...
- Building dependency tree...
- Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
- Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
- Some packages could not be installed. This may mean that you have
- requested an impossible situation or if you are using the unstable
- distribution that some required packages have not yet been created
- or been moved out of Incoming.
- The following information may help to resolve the situation:
- The following packages have unmet dependencies:
- foo:i386 : Conflicts: foo but 1.0 is to be installed
- foo : Conflicts: foo:i386 but 1.0 is to be installed
- E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s
- testdpkgnotinstalled 'foo' 'foo:i386'
- testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
- testdpkginstalled 'foo:i386'
- testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
- cd downloaded
- testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --reinstall
- testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
- testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --reinstall
- testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
- cd ..
- testsuccessequal "Reading package lists...
- Building dependency tree...
- Reading state information...
- Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
- The following packages will be REMOVED:
- foo:i386
- The following NEW packages will be installed:
- foo
- 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
- Remv foo:i386 [1.0]
- Inst foo (1.0 local-deb [amd64])
- Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
- testsuccessequal 'Reading package lists...
- Building dependency tree...
- Reading state information...
- 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install --with-source ./incoming/foo_1.0_amd64.deb -s
- testsuccessequal 'Reading package lists...
- Building dependency tree...
- Reading state information...
- The following packages will be REMOVED:
- foo:i386
- The following NEW packages will be installed:
- foo
- 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
- Remv foo:i386 [1.0]
- Inst foo (1.0 local-deb [amd64])
- Conf foo (1.0 local-deb [amd64])' aptget install --with-source ./incoming/foo_1.0_amd64.deb foo -s
- # Check that installing the local deb works if it is not the candidate
- echo "Package: foo
- Pin: version 1.0
- Pin-Priority: -1" > rootdir/etc/apt/preferences
- testsuccessequal "Reading package lists...
- Building dependency tree...
- Reading state information...
- Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
- The following packages will be REMOVED:
- foo:i386
- The following NEW packages will be installed:
- foo
- 0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
- Remv foo:i386 [1.0]
- Inst foo (1.0 local-deb [amd64])
- Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
- createpkg() {
- local PKG="pkg-$1"
- mkdir -p ./incoming/$PKG/DEBIAN
- if [ -n "$2" ]; then
- echo -n "$2" >> ./incoming/$PKG/DEBIAN/control
- fi
- echo "Package: $PKG
- Version: 0
- Priority: extra
- Maintainer: No Body <no@example.org>
- Architecture: all
- Depends: foo:i386
- Description: test package" >> ./incoming/$PKG/DEBIAN/control
- if [ -n "$3" ]; then
- echo -n "$3" >> ./incoming/$PKG/DEBIAN/control
- fi
- testsuccess dpkg-deb --build ./incoming/$PKG/ ./incoming
- #dpkg-deb -I ./incoming/${PKG}_0_all.deb control
- }
- createpkg 'as-it-should-be'
- createpkg 'leading-newline' '
- '
- createpkg 'trailing-newline' '' '
- '
- echo 'Package: /pkg-/
- Pin: release a=experimental
- Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit
- testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
- testsuccess aptget install "$(readlink -f ./incoming/pkg-leading-newline_0_all.deb)"
- testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb
- testempty apt clean
- if [ "$(id -u)" = '0' ]; then
- # see if permission dropping is checked before usage
- chmod 711 ./incoming
- testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
- chmod 710 ./incoming
- testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
- chmod 700 ./incoming
- testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
- chmod 711 ./incoming
- else
- testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
- fi
- sed -i -e '/^Depends: foo/ d' rootdir/var/lib/dpkg/status
- testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
- testsuccess apt purge -y pkg-as-it-should-be
- echo "Package: pkg-as-it-should-be
- Architecture: all
- Version: 0
- Installed-Size: 2903
- Filename: incoming/pkg-as-it-should-be_0_all.deb
- Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.deb)
- SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.deb | cut -d' ' -f 1)
- " > Packages
- testdpkgnotinstalled 'pkg-as-it-should-be'
- testnopackage pkg-as-it-should-be
- testsuccess apt install --with-source ./Packages pkg-as-it-should-be -s
- testsuccess apt install --with-source ./Packages pkg-as-it-should-be --print-uris
- testsuccess apt show --with-source ./Packages pkg-as-it-should-be
- testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output
- testsuccess apt install -y --with-source ./Packages pkg-as-it-should-be
- testdpkginstalled 'pkg-as-it-should-be'
- rm -f ./Packages
- echo 'dpkg::install::recursive "true";
- dpkg::install::recursive::force "true";
- dpkg::install::recursive::minimum "0";' > rootdir/etc/apt/apt.conf.d/lowerminimum.conf
- mv ./incoming/pkg-as-it-should-be_0_all.deb ./incoming/pkg-as-it-should-be_0_all.ddeb
- testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.ddeb --reinstall
- testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
- testsuccess apt purge -y pkg-as-it-should-be
- testdpkgnotinstalled 'pkg-as-it-should-be'
- mv ./incoming/pkg-as-it-should-be_0_all.ddeb ./incoming/pkg-as-it-should-be_0_all.foobar
- echo "Package: pkg-as-it-should-be
- Architecture: all
- Version: 0
- Installed-Size: 2903
- Filename: incoming/pkg-as-it-should-be_0_all.foobar
- Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.foobar)
- SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.foobar | cut -d' ' -f 1)
- " | gzip > Packages.gz
- testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be -s
- testsuccess apt install --with-source ./Packages.gz pkg-as-it-should-be --print-uris
- testsuccess apt show --with-source ./Packages.gz pkg-as-it-should-be
- testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output
- testsuccess apt install -y --with-source ./Packages.gz pkg-as-it-should-be
- testdpkginstalled 'pkg-as-it-should-be'
|