]> git.saurik.com Git - apt.git/blame - test/integration/test-apt-get-install-deb
changelog: Respect Dir setting for local changelog getting
[apt.git] / test / integration / test-apt-get-install-deb
CommitLineData
9c3e15ab
MV
1#!/bin/sh
2set -e
3
3abb6a6a
DK
4TESTDIR="$(readlink -f "$(dirname "$0")")"
5. "$TESTDIR/framework"
9c3e15ab
MV
6
7setupenvironment
5465192b 8configarchitecture 'amd64' 'i386'
9c3e15ab
MV
9
10# regression test for #754904
14341a7e 11testfailureequal 'E: Unsupported file /dev/null given on commandline' aptget install -qq /dev/null
9c3e15ab 12
5465192b
DK
13# only consider .deb files
14cat > foo.rpm <<EOF
9c3e15ab
MV
15I'm not a deb, I'm a teapot.
16EOF
14341a7e 17testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' aptget install -qq ./foo.rpm
5465192b
DK
18
19# and ensure we fail for invalid debs
20mv foo.rpm foo.deb
14341a7e
DK
21testfailuremsg "E: Sub-process Popen returned an error code (2)
22E: Encountered a section with no Package: header
c9443c01 23E: Problem with MergeList ${TMPWORKINGDIRECTORY}/foo.deb
14341a7e 24E: The package lists or status file could not be parsed or opened." aptget install ./foo.deb
9c3e15ab 25
5465192b
DK
26buildsimplenativepackage 'foo' 'i386,amd64' '1.0'
27
28testfailureequal "Reading package lists...
29Building dependency tree...
30Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb'
31Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
32Some packages could not be installed. This may mean that you have
33requested an impossible situation or if you are using the unstable
34distribution that some required packages have not yet been created
35or been moved out of Incoming.
36The following information may help to resolve the situation:
37
38The following packages have unmet dependencies:
39 foo:i386 : Conflicts: foo but 1.0 is to be installed
40 foo : Conflicts: foo:i386 but 1.0 is to be installed
87d6947d 41E: Unable to correct problems, you have held broken packages." aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s
5465192b 42
3dd64b9c 43testdpkgnotinstalled 'foo' 'foo:i386'
c9443c01 44testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
b2640c0a 45testdpkginstalled 'foo:i386'
f359b7e8 46testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1
3dd64b9c 47cd downloaded
e7edb2fe
DK
48testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --reinstall
49testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
50testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --reinstall
51testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output
3dd64b9c 52cd ..
5465192b
DK
53
54testsuccessequal "Reading package lists...
55Building dependency tree...
56Reading state information...
57Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
58The following packages will be REMOVED:
59 foo:i386
60The following NEW packages will be installed:
61 foo
620 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
63Remv foo:i386 [1.0]
c9443c01 64Inst foo (1.0 local-deb [amd64])
87d6947d 65Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
848fd2a6 66
8bd823d0
DK
67testsuccessequal 'Reading package lists...
68Building dependency tree...
69Reading state information...
700 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install --with-source ./incoming/foo_1.0_amd64.deb -s
71
72testsuccessequal 'Reading package lists...
73Building dependency tree...
74Reading state information...
75The following packages will be REMOVED:
76 foo:i386
77The following NEW packages will be installed:
78 foo
790 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
80Remv foo:i386 [1.0]
81Inst foo (1.0 local-deb [amd64])
82Conf foo (1.0 local-deb [amd64])' aptget install --with-source ./incoming/foo_1.0_amd64.deb foo -s
83
848fd2a6
JAK
84# Check that installing the local deb works if it is not the candidate
85echo "Package: foo
86Pin: version 1.0
87Pin-Priority: -1" > rootdir/etc/apt/preferences
88
89testsuccessequal "Reading package lists...
90Building dependency tree...
91Reading state information...
92Note, selecting 'foo' instead of './incoming/foo_1.0_amd64.deb'
93The following packages will be REMOVED:
94 foo:i386
95The following NEW packages will be installed:
96 foo
970 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
98Remv foo:i386 [1.0]
99Inst foo (1.0 local-deb [amd64])
87d6947d 100Conf foo (1.0 local-deb [amd64])" aptget install ./incoming/foo_1.0_amd64.deb -s
2f91076d
DK
101
102createpkg() {
103 local PKG="pkg-$1"
104 mkdir -p ./incoming/$PKG/DEBIAN
105 if [ -n "$2" ]; then
106 echo -n "$2" >> ./incoming/$PKG/DEBIAN/control
107 fi
108 echo "Package: $PKG
109Version: 0
110Priority: extra
111Maintainer: No Body <no@example.org>
112Architecture: all
cb9ac09b 113Depends: foo:i386
2f91076d
DK
114Description: test package" >> ./incoming/$PKG/DEBIAN/control
115 if [ -n "$3" ]; then
116 echo -n "$3" >> ./incoming/$PKG/DEBIAN/control
117 fi
118 testsuccess dpkg-deb --build ./incoming/$PKG/ ./incoming
119 #dpkg-deb -I ./incoming/${PKG}_0_all.deb control
120}
121createpkg 'as-it-should-be'
122createpkg 'leading-newline' '
123
124'
125createpkg 'trailing-newline' '' '
126'
127
128testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
129testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb
130testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb
514a25cb 131
e7edb2fe 132testempty apt clean
514a25cb 133if [ "$(id -u)" = '0' ]; then
e7edb2fe 134 # see if permission dropping is checked before usage
514a25cb 135 chmod 711 ./incoming
e7edb2fe
DK
136 testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
137 testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
514a25cb 138 chmod 710 ./incoming
e7edb2fe
DK
139 testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
140 testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
514a25cb 141 chmod 700 ./incoming
e7edb2fe
DK
142 testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
143 testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output
cb9ac09b 144 chmod 711 ./incoming
e7edb2fe
DK
145else
146 testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall
147 testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
514a25cb 148fi
e7edb2fe 149
cb9ac09b
DK
150sed -i -e '/^Depends: foo/ d' rootdir/var/lib/dpkg/status
151testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb
152testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output
8bd823d0
DK
153testsuccess apt purge -y pkg-as-it-should-be
154
155echo "Package: pkg-as-it-should-be
156Architecture: all
157Version: 0
158Installed-Size: 2903
159Filename: incoming/pkg-as-it-should-be_0_all.deb
160Size: $(stat -c %s incoming/pkg-as-it-should-be_0_all.deb)
161SHA256: $(sha256sum incoming/pkg-as-it-should-be_0_all.deb | cut -d' ' -f 1)
162" > Packages
163testdpkgnotinstalled 'pkg-as-it-should-be'
164testnopackage pkg-as-it-should-be
165testsuccess apt install --with-source ./Packages pkg-as-it-should-be -s
166testsuccess apt install --with-source ./Packages pkg-as-it-should-be --print-uris
167testsuccess apt show --with-source ./Packages pkg-as-it-should-be
168testequal 'Package: pkg-as-it-should-be' head -n1 rootdir/tmp/testsuccess.output
169testsuccess apt install -y --with-source ./Packages pkg-as-it-should-be
170testdpkginstalled 'pkg-as-it-should-be'