summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 09:59:37 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 09:59:37 +0000
commit76e2632459410dec81337edb6a9fee33c9a660f3 (patch)
treea73345df208eede4a4daad340515c9328f34625c /test
parentInitial commit. (diff)
downloadapt-76e2632459410dec81337edb6a9fee33c9a660f3.tar.xz
apt-76e2632459410dec81337edb6a9fee33c9a660f3.zip
Adding upstream version 2.7.12.upstream/2.7.12
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt2
-rw-r--r--test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order67
-rw-r--r--test/integration/Packages-bug-591882-conkeror1787
-rw-r--r--test/integration/Packages-bug-593360-modifiers-in-names42
-rw-r--r--test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy30
-rw-r--r--test/integration/Packages-bug-605394-versioned-or-groups71
-rw-r--r--test/integration/Packages-bug-723705-tagfile-truncates-fields167
-rw-r--r--test/integration/Packages-bug-lp1347721-dpkg-ordering445
-rw-r--r--test/integration/Packages-github-23-too-long-dependency-line17
-rw-r--r--test/integration/Packages-hashsum-verification18
-rw-r--r--test/integration/Packages-pdiff-usage36
-rw-r--r--test/integration/Packages-pdiff-usage-new39
-rw-r--r--test/integration/Packages-policy-pinning12
-rw-r--r--test/integration/Packages-releasefile-verification20
-rw-r--r--test/integration/Packages-releasefile-verification-new23
-rw-r--r--test/integration/Packages-ubuntu-bug-6149931819
-rw-r--r--test/integration/Packages-xorg-break-providers52
-rw-r--r--test/integration/apt.pem49
-rw-r--r--test/integration/cachedb-lp1274466-old-format.dbbin0 -> 8192 bytes
-rwxr-xr-xtest/integration/create-test-data58
-rw-r--r--test/integration/deb-bug-330162-encoded-tar-header.debbin0 -> 544 bytes
-rw-r--r--test/integration/deb-lp1274466-cachedb.debbin0 -> 1270 bytes
-rw-r--r--test/integration/edsp-ubuntu-bug-197419610755
-rw-r--r--test/integration/edsp-ubuntu-bug-199058630894
-rw-r--r--test/integration/framework2303
-rwxr-xr-xtest/integration/header-compilation26
-rw-r--r--test/integration/joesixpack.pubbin0 -> 639 bytes
-rw-r--r--test/integration/joesixpack.secbin0 -> 1290 bytes
-rw-r--r--test/integration/keyrings/test-archive-keyring.pubbin0 -> 979 bytes
-rw-r--r--test/integration/keyrings/test-archive-keyring.secbin0 -> 1642 bytes
-rw-r--r--test/integration/keyrings/test-master-keyring.pubbin0 -> 1199 bytes
-rw-r--r--test/integration/keyrings/test-master-keyring.secbin0 -> 2501 bytes
-rw-r--r--test/integration/marvinparanoid.pubbin0 -> 624 bytes
-rw-r--r--test/integration/marvinparanoid.secbin0 -> 1275 bytes
-rw-r--r--test/integration/rexexpired.pubbin0 -> 1191 bytes
-rw-r--r--test/integration/rexexpired.secbin0 -> 2493 bytes
-rwxr-xr-xtest/integration/run-tests166
-rw-r--r--test/integration/sebastiansubkey.master.secbin0 -> 4829 bytes
-rw-r--r--test/integration/sebastiansubkey.pubbin0 -> 2567 bytes
-rw-r--r--test/integration/sebastiansubkey.secbin0 -> 3546 bytes
-rwxr-xr-xtest/integration/skip-acquire-same-repository-multiple-times85
-rwxr-xr-xtest/integration/skip-apt-download-progress48
-rwxr-xr-xtest/integration/skip-apt-dropprivs32
-rwxr-xr-xtest/integration/skip-avoid-avoiding-breaks-predepends21
-rwxr-xr-xtest/integration/skip-bug-601016-description-translation134
-rwxr-xr-xtest/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch47
-rwxr-xr-xtest/integration/skip-method-http-socks-client181
-rw-r--r--test/integration/status-bug-590438-broken-provides-thanks-to-remove-order97
-rw-r--r--test/integration/status-bug-591882-conkeror1357
-rw-r--r--test/integration/status-bug-598669-install-postfix-gets-exim-heavy30
-rw-r--r--test/integration/status-bug-601961-install-info42
-rw-r--r--test/integration/status-bug-605394-versioned-or-groups34
-rw-r--r--test/integration/status-bug-612557-garbage-upgrade34
-rw-r--r--test/integration/status-bug-613420-new-garbage-dependency22
-rw-r--r--test/integration/status-bug-723705-tagfile-truncates-fields62
-rw-r--r--test/integration/status-bug-lp1347721-dpkg-ordering1942
-rw-r--r--test/integration/status-github-23-too-long-dependency-line12
-rw-r--r--test/integration/status-ubuntu-bug-6149935894
-rw-r--r--test/integration/status-xorg-break-providers22
-rwxr-xr-xtest/integration/test-00-commands-have-help105
-rwxr-xr-xtest/integration/test-acquire-binary-all142
-rwxr-xr-xtest/integration/test-acquire-same-file-multiple-times90
-rwxr-xr-xtest/integration/test-allow98
-rwxr-xr-xtest/integration/test-allow-scores-for-all-dependency-types154
-rwxr-xr-xtest/integration/test-apt-acquire-additional-files246
-rwxr-xr-xtest/integration/test-apt-acquire-additional-files-duplicates105
-rwxr-xr-xtest/integration/test-apt-by-hash-update107
-rwxr-xr-xtest/integration/test-apt-cache183
-rwxr-xr-xtest/integration/test-apt-cache-remapping48
-rwxr-xr-xtest/integration/test-apt-cache-showsrc31
-rwxr-xr-xtest/integration/test-apt-cdrom158
-rwxr-xr-xtest/integration/test-apt-cli-json-hooks340
-rwxr-xr-xtest/integration/test-apt-cli-list91
-rwxr-xr-xtest/integration/test-apt-cli-search79
-rwxr-xr-xtest/integration/test-apt-cli-show201
-rwxr-xr-xtest/integration/test-apt-cli-update22
-rwxr-xr-xtest/integration/test-apt-cli-upgrade32
-rwxr-xr-xtest/integration/test-apt-config50
-rwxr-xr-xtest/integration/test-apt-edit-sources39
-rwxr-xr-xtest/integration/test-apt-extracttemplates78
-rwxr-xr-xtest/integration/test-apt-ftparchive64
-rwxr-xr-xtest/integration/test-apt-ftparchive-by-hash70
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb103
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb-lp127446659
-rwxr-xr-xtest/integration/test-apt-ftparchive-notautomatic54
-rwxr-xr-xtest/integration/test-apt-ftparchive-src-cachedb191
-rwxr-xr-xtest/integration/test-apt-get-autoremove260
-rwxr-xr-xtest/integration/test-apt-get-autoremove-kernel-module-providers103
-rwxr-xr-xtest/integration/test-apt-get-autoremove-real-virtual-provider32
-rwxr-xr-xtest/integration/test-apt-get-build-dep149
-rwxr-xr-xtest/integration/test-apt-get-build-dep-barbarian140
-rwxr-xr-xtest/integration/test-apt-get-build-dep-file222
-rwxr-xr-xtest/integration/test-apt-get-changelog146
-rwxr-xr-xtest/integration/test-apt-get-clean120
-rwxr-xr-xtest/integration/test-apt-get-download113
-rwxr-xr-xtest/integration/test-apt-get-install-deb258
-rwxr-xr-xtest/integration/test-apt-get-install-update111
-rwxr-xr-xtest/integration/test-apt-get-install-virtual-pkgs138
-rwxr-xr-xtest/integration/test-apt-get-remove-depends29
-rwxr-xr-xtest/integration/test-apt-get-satisfy111
-rwxr-xr-xtest/integration/test-apt-get-source-arch68
-rwxr-xr-xtest/integration/test-apt-get-source-authenticated33
-rwxr-xr-xtest/integration/test-apt-get-source-multisources29
-rwxr-xr-xtest/integration/test-apt-get-update-sourceslist-warning86
-rwxr-xr-xtest/integration/test-apt-get-update-unauth-warning94
-rwxr-xr-xtest/integration/test-apt-get-upgrade144
-rwxr-xr-xtest/integration/test-apt-get-upgrade-by-source53
-rwxr-xr-xtest/integration/test-apt-helper132
-rwxr-xr-xtest/integration/test-apt-helper-cat-file46
-rwxr-xr-xtest/integration/test-apt-https-no-redirect48
-rwxr-xr-xtest/integration/test-apt-https-transient43
-rwxr-xr-xtest/integration/test-apt-install-file-reltag94
-rwxr-xr-xtest/integration/test-apt-install-order-matters-a-bit75
-rwxr-xr-xtest/integration/test-apt-keep-downloaded-pkgs54
-rwxr-xr-xtest/integration/test-apt-key428
-rwxr-xr-xtest/integration/test-apt-key-net-update41
-rwxr-xr-xtest/integration/test-apt-key-used-in-maintainerscript43
-rwxr-xr-xtest/integration/test-apt-mark158
-rwxr-xr-xtest/integration/test-apt-move-and-forget-manual-sections74
-rwxr-xr-xtest/integration/test-apt-never-markauto-sections82
-rwxr-xr-xtest/integration/test-apt-patterns284
-rwxr-xr-xtest/integration/test-apt-progress-fd80
-rwxr-xr-xtest/integration/test-apt-progress-fd-conffile42
-rwxr-xr-xtest/integration/test-apt-progress-fd-deb82258
-rwxr-xr-xtest/integration/test-apt-progress-fd-error25
-rwxr-xr-xtest/integration/test-apt-redirect-loop20
-rwxr-xr-xtest/integration/test-apt-showlist-orgroup-in-recommends200
-rwxr-xr-xtest/integration/test-apt-source-and-build-dep250
-rwxr-xr-xtest/integration/test-apt-sources-deb822361
-rwxr-xr-xtest/integration/test-apt-tagfile-fields-order120
-rwxr-xr-xtest/integration/test-apt-translation-has-no-packages35
-rwxr-xr-xtest/integration/test-apt-update-disappeared-component45
-rwxr-xr-xtest/integration/test-apt-update-empty-files47
-rwxr-xr-xtest/integration/test-apt-update-expected-size99
-rwxr-xr-xtest/integration/test-apt-update-failure-propagation99
-rwxr-xr-xtest/integration/test-apt-update-file79
-rwxr-xr-xtest/integration/test-apt-update-filesize-mismatch54
-rwxr-xr-xtest/integration/test-apt-update-hashsum-mismatch39
-rwxr-xr-xtest/integration/test-apt-update-hooks49
-rwxr-xr-xtest/integration/test-apt-update-ims192
-rwxr-xr-xtest/integration/test-apt-update-nofallback273
-rwxr-xr-xtest/integration/test-apt-update-not-modified183
-rwxr-xr-xtest/integration/test-apt-update-releaseinfo-changes94
-rwxr-xr-xtest/integration/test-apt-update-repeated-ims-hit75
-rwxr-xr-xtest/integration/test-apt-update-reporting35
-rwxr-xr-xtest/integration/test-apt-update-rollback217
-rwxr-xr-xtest/integration/test-apt-update-simple42
-rwxr-xr-xtest/integration/test-apt-update-stale44
-rwxr-xr-xtest/integration/test-apt-update-transactions85
-rwxr-xr-xtest/integration/test-apt-update-unauth80
-rwxr-xr-xtest/integration/test-apt-update-weak-hashes202
-rwxr-xr-xtest/integration/test-architecture-specification-parsing120
-rwxr-xr-xtest/integration/test-authentication-basic153
-rwxr-xr-xtest/integration/test-bug-1053887-regex-return-failure21
-rwxr-xr-xtest/integration/test-bug-254770-segfault-if-cache-not-buildable64
-rwxr-xr-xtest/integration/test-bug-330162-encoded-tar-header11
-rwxr-xr-xtest/integration/test-bug-407511-fail-invalid-default-release66
-rwxr-xr-xtest/integration/test-bug-470115-new-and-tighten-recommends174
-rwxr-xr-xtest/integration/test-bug-490000-search-in-all-translations120
-rwxr-xr-xtest/integration/test-bug-507998-dist-upgrade-recommends26
-rwxr-xr-xtest/integration/test-bug-543966-downgrade-below-1000-pin90
-rwxr-xr-xtest/integration/test-bug-549968-install-depends-of-not-installed28
-rwxr-xr-xtest/integration/test-bug-590041-prefer-non-virtual-packages54
-rwxr-xr-xtest/integration/test-bug-590438-broken-provides-thanks-to-remove-order96
-rwxr-xr-xtest/integration/test-bug-591882-conkeror77
-rwxr-xr-xtest/integration/test-bug-593360-modifiers-in-names69
-rwxr-xr-xtest/integration/test-bug-595691-empty-and-broken-archive-files64
-rwxr-xr-xtest/integration/test-bug-596498-trusted-unsigned-repo75
-rwxr-xr-xtest/integration/test-bug-598669-install-postfix-gets-exim-heavy19
-rwxr-xr-xtest/integration/test-bug-601961-install-info50
-rwxr-xr-xtest/integration/test-bug-602412-dequote-redirect64
-rwxr-xr-xtest/integration/test-bug-604222-new-and-autoremove116
-rwxr-xr-xtest/integration/test-bug-604401-files-are-directories67
-rwxr-xr-xtest/integration/test-bug-605394-versioned-or-groups30
-rwxr-xr-xtest/integration/test-bug-611729-mark-as-manual96
-rwxr-xr-xtest/integration/test-bug-612099-multiarch-conflicts225
-rwxr-xr-xtest/integration/test-bug-612557-garbage-upgrade62
-rwxr-xr-xtest/integration/test-bug-612958-use-dpkg-multiarch-config83
-rwxr-xr-xtest/integration/test-bug-613420-new-garbage-dependency58
-rwxr-xr-xtest/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted68
-rwxr-xr-xtest/integration/test-bug-618288-multiarch-same-lockstep41
-rwxr-xr-xtest/integration/test-bug-618848-always-respect-user-requests31
-rwxr-xr-xtest/integration/test-bug-623443-fail-on-bad-proxies34
-rwxr-xr-xtest/integration/test-bug-624218-Translation-file-handling171
-rwxr-xr-xtest/integration/test-bug-632221-cross-dependency-satisfaction353
-rwxr-xr-xtest/integration/test-bug-633350-do-not-kill-last-char-in-Release16
-rwxr-xr-xtest/integration/test-bug-64141-install-dependencies-for-on-hold48
-rwxr-xr-xtest/integration/test-bug-657695-resolver-breaks-on-virtuals53
-rwxr-xr-xtest/integration/test-bug-661537-build-profiles-support161
-rwxr-xr-xtest/integration/test-bug-673536-pre-depends-breaks-loop33
-rwxr-xr-xtest/integration/test-bug-675449-essential-are-protected115
-rwxr-xr-xtest/integration/test-bug-679371-apt-get-autoclean-multiarch27
-rwxr-xr-xtest/integration/test-bug-680041-apt-mark-holds-correctly80
-rwxr-xr-xtest/integration/test-bug-683786-build-dep-on-virtual-packages107
-rwxr-xr-xtest/integration/test-bug-686346-package-missing-architecture113
-rwxr-xr-xtest/integration/test-bug-689582-100-char-long-path-names35
-rwxr-xr-xtest/integration/test-bug-691453-apt-cache-search-multi-pattern33
-rwxr-xr-xtest/integration/test-bug-709560-set-candidate-release36
-rwxr-xr-xtest/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch152
-rwxr-xr-xtest/integration/test-bug-712435-missing-descriptions162
-rwxr-xr-xtest/integration/test-bug-717891-abolute-uris-for-proxies53
-rwxr-xr-xtest/integration/test-bug-718329-support-data.tar-uncompressed34
-rwxr-xr-xtest/integration/test-bug-719263-print-uris-removes-authentication42
-rwxr-xr-xtest/integration/test-bug-720597-build-dep-purge65
-rwxr-xr-xtest/integration/test-bug-722207-print-uris-even-if-very-quiet31
-rwxr-xr-xtest/integration/test-bug-723586-any-stripped-in-single-arch54
-rwxr-xr-xtest/integration/test-bug-723705-tagfile-truncates-fields33
-rwxr-xr-xtest/integration/test-bug-728500-tempdir22
-rwxr-xr-xtest/integration/test-bug-732746-preferences32
-rwxr-xr-xtest/integration/test-bug-733028-gpg-resource-limit26
-rwxr-xr-xtest/integration/test-bug-734922-apt-showsrc-duplicate25
-rwxr-xr-xtest/integration/test-bug-735967-lib32-to-i386-unavailable91
-rwxr-xr-xtest/integration/test-bug-737130-multicompress-file-modes30
-rwxr-xr-xtest/integration/test-bug-738785-switch-protocol50
-rwxr-xr-xtest/integration/test-bug-740843-versioned-up-down-breaks57
-rwxr-xr-xtest/integration/test-bug-745036-new-foreign-invalidates-cache27
-rwxr-xr-xtest/integration/test-bug-745046-candidate-propagation-fails39
-rwxr-xr-xtest/integration/test-bug-747261-arch-specific-conflicts46
-rwxr-xr-xtest/integration/test-bug-753297-upgradable34
-rwxr-xr-xtest/integration/test-bug-758153-versioned-provides-support413
-rwxr-xr-xtest/integration/test-bug-762160-relpath17
-rwxr-xr-xtest/integration/test-bug-767891-force-essential-important100
-rwxr-xr-xtest/integration/test-bug-769609-triggers-still-pending-after-run75
-rwxr-xr-xtest/integration/test-bug-770291-reinstall98
-rwxr-xr-xtest/integration/test-bug-778375-server-has-no-reason-phrase43
-rwxr-xr-xtest/integration/test-bug-782777-single-arch-weirdness71
-rwxr-xr-xtest/integration/test-bug-796070-downgrade-realpkg23
-rwxr-xr-xtest/integration/test-bug-796070-downgrade-simulate67
-rwxr-xr-xtest/integration/test-bug-807012-mixed-case-package-names21
-rwxr-xr-xtest/integration/test-bug-814139-pickup-of-different-cache-states60
-rwxr-xr-xtest/integration/test-bug-818628-unreadable-source94
-rwxr-xr-xtest/integration/test-bug-82965127
-rwxr-xr-xtest/integration/test-bug-835094-configure-before-purge44
-rwxr-xr-xtest/integration/test-bug-838779-untrusted-to-trusted-Release-hit48
-rwxr-xr-xtest/integration/test-bug-841874-warning-for-mismatching-distribution49
-rwxr-xr-xtest/integration/test-bug-869859-retry-downloads82
-rwxr-xr-xtest/integration/test-bug-870675-hang-on-unsupported-method26
-rwxr-xr-xtest/integration/test-bug-872963-apt-ftparchive-disable-hashes40
-rwxr-xr-xtest/integration/test-bug-879591-dont-warn-for-hidden-but-good-components25
-rwxr-xr-xtest/integration/test-bug-921685-binary-detached-signature22
-rwxr-xr-xtest/integration/test-bug-960705-propagate-protected-to-satisfied-conflict53
-rwxr-xr-xtest/integration/test-bug-960705-propagate-protected-to-satisfied-depends45
-rwxr-xr-xtest/integration/test-bug-961266-hold-means-hold124
-rwxr-xr-xtest/integration/test-bug-990518-sourceslist-volatile15
-rwxr-xr-xtest/integration/test-bug-990555-https-proxy-for-http37
-rwxr-xr-xtest/integration/test-bug-992993-marked-cycles30
-rwxr-xr-xtest/integration/test-bug-998444-regex-as-target-release65
-rwxr-xr-xtest/integration/test-bug-lp1347721-dpkg-ordering11
-rwxr-xr-xtest/integration/test-bug-lp1445239-download-loop28
-rwxr-xr-xtest/integration/test-bug-lp1550741-heisestate48
-rwxr-xr-xtest/integration/test-bug-lp1562402-nomark-removals-as-keep39
-rwxr-xr-xtest/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative58
-rwxr-xr-xtest/integration/test-bug-multiarch-upgrade29
-rwxr-xr-xtest/integration/test-cachecontainer-architecture-specification123
-rwxr-xr-xtest/integration/test-compressed-indexes180
-rwxr-xr-xtest/integration/test-conflicts-loop33
-rwxr-xr-xtest/integration/test-conflicts-real-multiarch-same50
-rwxr-xr-xtest/integration/test-crossgrades82
-rwxr-xr-xtest/integration/test-cve-2013-1051-InRelease-parsing71
-rwxr-xr-xtest/integration/test-cve-2018-0501-mirror-alternatives31
-rwxr-xr-xtest/integration/test-cve-2019-3462-Release.gpg-payload43
-rwxr-xr-xtest/integration/test-cve-2019-3462-dequote-injection80
-rwxr-xr-xtest/integration/test-cve-2020-2735025
-rwxr-xr-xtest/integration/test-different-methods-for-same-source35
-rwxr-xr-xtest/integration/test-disappearing-packages92
-rwxr-xr-xtest/integration/test-dont-forget-conflicts-via-unknown-architectures43
-rwxr-xr-xtest/integration/test-dpkg-assert-multi-arch104
-rwxr-xr-xtest/integration/test-dpkg-i-apt-install-fix-broken34
-rwxr-xr-xtest/integration/test-dpkg-normalization44
-rwxr-xr-xtest/integration/test-dpkg-path35
-rwxr-xr-xtest/integration/test-dpkg-protected20
-rwxr-xr-xtest/integration/test-essential-force-loopbreak122
-rwxr-xr-xtest/integration/test-explore-or-groups-in-markinstall164
-rwxr-xr-xtest/integration/test-external-dependency-solver-protocol319
-rwxr-xr-xtest/integration/test-external-installation-planner-protocol93
-rwxr-xr-xtest/integration/test-failing-maintainer-scripts90
-rwxr-xr-xtest/integration/test-frontend-lock80
-rwxr-xr-xtest/integration/test-github-111-invalid-armember34
-rwxr-xr-xtest/integration/test-github-23-too-long-dependency-line17
-rwxr-xr-xtest/integration/test-handle-redirect-as-used-mirror-change94
-rwxr-xr-xtest/integration/test-handling-broken-orgroups108
-rwxr-xr-xtest/integration/test-hashsum-verification82
-rwxr-xr-xtest/integration/test-http-if-range91
-rwxr-xr-xtest/integration/test-http-pipeline-messup56
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-breaks150
-rwxr-xr-xtest/integration/test-ignore-provides-if-versioned-conflicts150
-rwxr-xr-xtest/integration/test-ignored-files42
-rwxr-xr-xtest/integration/test-implicit-conflicts-real-not-virtual56
-rwxr-xr-xtest/integration/test-kernel-helper-autoremove170
-rwxr-xr-xtest/integration/test-method-connect13
-rwxr-xr-xtest/integration/test-method-gpgv185
-rwxr-xr-xtest/integration/test-method-gpgv-legacy-keyring35
-rwxr-xr-xtest/integration/test-method-mirror274
-rwxr-xr-xtest/integration/test-method-rred249
-rwxr-xr-xtest/integration/test-multiarch-allowed326
-rwxr-xr-xtest/integration/test-multiarch-barbarian243
-rwxr-xr-xtest/integration/test-multiarch-foreign287
-rwxr-xr-xtest/integration/test-no-fds-leaked-to-maintainer-scripts179
-rwxr-xr-xtest/integration/test-or-group-substitution45
-rwxr-xr-xtest/integration/test-package-reinstallation23
-rwxr-xr-xtest/integration/test-parse-all-archs-into-cache93
-rwxr-xr-xtest/integration/test-partial-file-support157
-rwxr-xr-xtest/integration/test-pdiff-usage412
-rwxr-xr-xtest/integration/test-phased-updates300
-rwxr-xr-xtest/integration/test-phased-updates-new-depends96
-rwxr-xr-xtest/integration/test-phased-updates-upgrade421
-rwxr-xr-xtest/integration/test-pin-non-existent-package75
-rwxr-xr-xtest/integration/test-policy-pinning490
-rwxr-xr-xtest/integration/test-prefer-higher-priority-providers106
-rwxr-xr-xtest/integration/test-prefer-native-architecture-over-higher-priority25
-rwxr-xr-xtest/integration/test-prevent-markinstall-multiarch-same-versionscrew133
-rwxr-xr-xtest/integration/test-provides-arch-all28
-rwxr-xr-xtest/integration/test-provides-gone-with-upgrade27
-rwxr-xr-xtest/integration/test-proxy-connect31
-rwxr-xr-xtest/integration/test-release-candidate-switching459
-rwxr-xr-xtest/integration/test-releasefile-date46
-rwxr-xr-xtest/integration/test-releasefile-date-older132
-rwxr-xr-xtest/integration/test-releasefile-valid-until57
-rwxr-xr-xtest/integration/test-releasefile-verification509
-rwxr-xr-xtest/integration/test-releasefile-verification-noflat25
-rwxr-xr-xtest/integration/test-resolve-by-keep-new-recommends21
-rwxr-xr-xtest/integration/test-resolver-delays-remove-decisions106
-rwxr-xr-xtest/integration/test-resolver-provider-exchange107
-rwxr-xr-xtest/integration/test-same-version-but-different109
-rwxr-xr-xtest/integration/test-security-no-remote-status30
-rwxr-xr-xtest/integration/test-signed-by-option73
-rwxr-xr-xtest/integration/test-snapshot335
-rwxr-xr-xtest/integration/test-sourceslist-arch-plusminus-options94
-rwxr-xr-xtest/integration/test-sourceslist-lang-plusminus-options88
-rwxr-xr-xtest/integration/test-sourceslist-target-plusminus-options128
-rwxr-xr-xtest/integration/test-sourceslist-trusted-options218
-rwxr-xr-xtest/integration/test-specific-architecture-dependencies324
-rwxr-xr-xtest/integration/test-srcrecord35
-rwxr-xr-xtest/integration/test-suggest-installed-multiarch-silbing79
-rwxr-xr-xtest/integration/test-ubuntu-bug-1078697-missing-source-hashes38
-rwxr-xr-xtest/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum444
-rwxr-xr-xtest/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings103
-rwxr-xr-xtest/integration/test-ubuntu-bug-1304403-obsolete-priority-standard50
-rwxr-xr-xtest/integration/test-ubuntu-bug-1549819-empty-arch-list13
-rwxr-xr-xtest/integration/test-ubuntu-bug-1651923-requote-https-uri19
-rwxr-xr-xtest/integration/test-ubuntu-bug-1876495-pkgnames-virtual21
-rwxr-xr-xtest/integration/test-ubuntu-bug-1921626-unsized-packages40
-rwxr-xr-xtest/integration/test-ubuntu-bug-1974196101
-rwxr-xr-xtest/integration/test-ubuntu-bug-199058642
-rwxr-xr-xtest/integration/test-ubuntu-bug-2025462-phased-dist-upgrade52
-rwxr-xr-xtest/integration/test-ubuntu-bug-346386-apt-get-update-paywall102
-rwxr-xr-xtest/integration/test-ubuntu-bug-365611-long-package-names15
-rwxr-xr-xtest/integration/test-ubuntu-bug-61499361
-rwxr-xr-xtest/integration/test-ubuntu-bug-761175-remove-purge88
-rwxr-xr-xtest/integration/test-ubuntu-bug-784473-InRelease-one-message-only40
-rwxr-xr-xtest/integration/test-ubuntu-bug-802901-multiarch-early-remove24
-rwxr-xr-xtest/integration/test-ubuntu-bug-806274-install-suggests81
-rwxr-xr-xtest/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first45
-rwxr-xr-xtest/integration/test-ubuntu-bug-859188-multiarch-reinstall27
-rwxr-xr-xtest/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering22
-rwxr-xr-xtest/integration/test-unpack-different-version-unpacked118
-rwxr-xr-xtest/integration/test-uri-encode-filename-field47
-rwxr-xr-xtest/integration/test-very-tight-loop-configure-with-unpacking-new-packages63
-rwxr-xr-xtest/integration/test-xorg-break-providers45
-rw-r--r--test/interactive-helper/CMakeLists.txt31
-rw-r--r--test/interactive-helper/aptdropprivs.cc27
-rw-r--r--test/interactive-helper/aptwebserver.cc1091
-rw-r--r--test/interactive-helper/createdeb-cve-2020-27350.cc369
-rw-r--r--test/interactive-helper/extract-control.cc45
-rw-r--r--test/interactive-helper/libnoprofile.c45
-rw-r--r--test/interactive-helper/longest-dependency-chain.cc72
-rw-r--r--test/interactive-helper/mthdcat.cc22
-rw-r--r--test/interactive-helper/networkless-install-fixes/README5
-rw-r--r--test/interactive-helper/networkless-install-fixes/sources.test.list25
-rwxr-xr-xtest/interactive-helper/networkless-install-fixes/test.sh25
-rw-r--r--test/interactive-helper/rpmver.cc118
-rw-r--r--test/interactive-helper/teestream.h62
-rw-r--r--test/interactive-helper/test_fileutl.cc46
-rw-r--r--test/interactive-helper/test_udevcdrom.cc23
-rw-r--r--test/interactive-helper/testdeb.cc51
-rw-r--r--test/libapt/CMakeLists.txt53
-rw-r--r--test/libapt/acqprogress_test.cc178
-rwxr-xr-xtest/libapt/apt-proxy-script9
-rw-r--r--test/libapt/authconf_test.cc261
-rw-r--r--test/libapt/cachefilter_test.cc119
-rw-r--r--test/libapt/cdrom_test.cc109
-rw-r--r--test/libapt/cdromfindpackages_test.cc125
-rw-r--r--test/libapt/commandline_test.cc238
-rw-r--r--test/libapt/compareversion_test.cc182
-rw-r--r--test/libapt/configuration_test.cc232
-rw-r--r--test/libapt/extracttar_test.cc52
-rw-r--r--test/libapt/file-helpers.cc85
-rw-r--r--test/libapt/file-helpers.h41
-rw-r--r--test/libapt/fileutl_test.cc399
-rw-r--r--test/libapt/getarchitectures_test.cc105
-rw-r--r--test/libapt/getlanguages_test.cc241
-rw-r--r--test/libapt/getlistoffilesindir_test.cc114
-rw-r--r--test/libapt/globalerror_test.cc169
-rw-r--r--test/libapt/gtest_runner.cc28
-rw-r--r--test/libapt/hashsums_test.cc305
-rw-r--r--test/libapt/indexcopytosourcelist_test.cc109
-rw-r--r--test/libapt/install_progress_test.cc25
-rw-r--r--test/libapt/json_test.cc69
-rw-r--r--test/libapt/openmaybeclearsignedfile_test.cc364
-rw-r--r--test/libapt/parsedepends_test.cc280
-rw-r--r--test/libapt/pattern_test.cc224
-rw-r--r--test/libapt/priority_test.cc16
-rw-r--r--test/libapt/sourcelist_test.cc33
-rw-r--r--test/libapt/srvrecs_test.cc85
-rw-r--r--test/libapt/stringview_test.cc95
-rw-r--r--test/libapt/strutil_test.cc446
-rw-r--r--test/libapt/tagfile_test.cc345
-rw-r--r--test/libapt/tagsection_test.cc232
-rw-r--r--test/libapt/teestream_test.cc39
-rw-r--r--test/libapt/uri_test.cc216
-rwxr-xr-xtest/thread-safety/not-thread-safe.sh7
-rw-r--r--test/thread-safety/thread-check-internal.txt3
-rw-r--r--test/thread-safety/thread-check.txt91
413 files changed, 95817 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..2f47b5c
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(libapt)
+add_subdirectory(interactive-helper)
diff --git a/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100644
index 0000000..75a769e
--- /dev/null
+++ b/test/integration/Packages-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,67 @@
+Package: gawk
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Filename: pool/main/g/gawk/gawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: aawk
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Filename: pool/main/a/aawk/aawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: gawk2
+Priority: optional
+Section: interpreters
+Installed-Size: 2084
+Maintainer: Arthur Loiret <aloiret@debian.org>
+Architecture: i386
+Version: 1:3.1.7.dfsg-5
+Provides: awk
+Pre-Depends: libc6 (>= 2.3)
+Depends: coolstuff
+Filename: pool/main/g/gawk/gawk_3.1.7.dfsg-5_i386.deb
+Size: 766008
+MD5sum: 6459a02cfc1b9eafb3c0415e4ff4e252
+SHA1: ac033488dae4b7e8167d610e490319c047edf7e4
+SHA256: a2337dfe1cc82aeae46f2c722e5cc7be9ecefdea4aaf13f540cfe70bd8b1d627
+Description-de: GNU awk, eine Mustererkennungs- und Verarbeitungssprache
+Homepage: http://www.gnu.org/software/gawk/
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, suite::gnu, use::filtering, use::scanning, works-with::text
+
+Package: coolstuff
+Priority: optional
+Section: cool
+Installed-Size: 10
+Maintainer: David Kalnischkies <kalnischkies+debian@gmail.com>
+Architecture: all
+Version: 1-1
+Filename: pool/main/c/coolstuff/coolstuff_1-1_all.deb
+Size: 7608
+MD5sum: 6459aa2efc139eafb323ac3f4f5aeb22
+Description: We all need cool stuff
+
diff --git a/test/integration/Packages-bug-591882-conkeror b/test/integration/Packages-bug-591882-conkeror
new file mode 100644
index 0000000..555e855
--- /dev/null
+++ b/test/integration/Packages-bug-591882-conkeror
@@ -0,0 +1,1787 @@
+Package: conkeror
+Priority: extra
+Section: web
+Installed-Size: 1488
+Maintainer: Axel Beckert <abe@debian.org>
+Architecture: all
+Version: 0.9.2+git100804-1
+Provides: www-browser
+Depends: xulrunner-1.9.1 | xulrunner-1.9.2 | xulrunner-1.9 | xulrunner (>= 1.9~)
+Recommends: conkeror-spawn-process-helper
+Suggests: emacs | emacsen
+Breaks: conkeror-spawn-process-helper (<< 0.9~git080901-1)
+Filename: pool/main/c/conkeror/conkeror_0.9.2+git100804-1_all.deb
+Size: 233068
+MD5Sum: e7bce631fe421938f2dc7a2042497e21
+Description: keyboard focused web browser with Emacs look and feel
+
+Package: coreutils
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 12188
+Maintainer: Michael Stone <mstone@debian.org>
+Architecture: i386
+Version: 8.5-1
+Replaces: mktemp, timeout
+Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.6), libselinux1 (>= 1.32)
+Conflicts: timeout
+Filename: pool/main/c/coreutils/coreutils_8.5-1_i386.deb
+Size: 4608374
+MD5Sum: de7f2ef8769cc38e64774102708ce1ae
+Description: GNU core utilities
+
+Package: debconf-i18n
+Priority: required
+Section: localization
+Installed-Size: 1208
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Source: debconf
+Version: 1.5.35
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Filename: pool/main/d/debconf/debconf-i18n_1.5.35_all.deb
+Size: 210348
+MD5Sum: 03d76e5a5fc733cffc54c4b3b14dbcd4
+Description: full internationalization support for debconf
+
+Package: debconf
+Priority: required
+Section: admin
+Installed-Size: 1560
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 1.5.35
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libnet-ldap-perl, perl, libqtgui4-perl, libqtcore4-perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Filename: pool/main/d/debconf/debconf_1.5.35_all.deb
+Size: 158120
+MD5Sum: 5a64e8e187984ed4eca44bf13eae8ea0
+Description: Debian configuration management system
+Python-Version: 2.4, 2.5, 2.6
+
+Package: debianutils
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 216
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 3.4
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.7)
+Filename: pool/main/d/debianutils/debianutils_3.4_i386.deb
+Size: 49888
+MD5Sum: 32eb3eebd4c9e58aadd418ca95b23904
+Description: Miscellaneous utilities specific to Debian
+
+Package: defoma
+Priority: optional
+Section: admin
+Installed-Size: 564
+Maintainer: Debian QA Group <packages@qa.debian.org>
+Architecture: all
+Version: 0.11.11
+Depends: whiptail | dialog, file, perl
+Recommends: libfont-freetype-perl
+Suggests: defoma-doc, psfontmgr, x-ttcidfont-conf, dfontmgr
+Conflicts: defoma-gs, defoma-ps, defoma-x, dfontmgr (<< 0.10.0), psfontmgr (<< 0.5.0), x-ttcidfont-conf (<< 5)
+Filename: pool/main/d/defoma/defoma_0.11.11_all.deb
+Size: 101104
+MD5Sum: ee11d3bc1a0275473d5c1feba846ff3e
+Description: Debian Font Manager -- automatic font configuration framework
+Enhances: debhelper
+
+Package: dpkg
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 5628
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.15.8.3
+Pre-Depends: libbz2-1.0, libc6 (>= 2.3), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4), coreutils (>= 5.93-1), xz-utils
+Suggests: apt
+Breaks: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), emacs21 (<< 21.4a+1-5.7), emacs21-nox (<< 21.4a+1-5.7), emacs22 (<= 22.3+1-1), emacs22-gtk (<= 22.3+1-1), emacs22-nox (<= 22.3+1-1), jed (<< 1:0.99.18+dfsg.1-13), jed-extra (<= 2.5.3-2), konqueror (<= 4:4.2.96-1), libdpkg-perl (<< 1.15.8), pinfo (<< 0.6.9-3.1), tkinfo (<< 2.8-3.1), xemacs21-support (<< 21.4.22-2), xjed (<< 1:0.99.18+dfsg.1-13)
+Filename: pool/main/d/dpkg/dpkg_1.15.8.3_i386.deb
+Size: 1866568
+MD5Sum: fa4bf565ebbfde6558d70b071f6abe42
+Description: Debian package management system
+Origin: debian
+Bugs: debbugs://bugs.debian.org
+
+Package: file
+Priority: standard
+Section: utils
+Installed-Size: 136
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Version: 5.04-5
+Depends: libc6 (>= 2.1), libmagic1 (= 5.04-5), zlib1g (>= 1:1.1.4)
+Filename: pool/main/f/file/file_5.04-5_i386.deb
+Size: 49134
+MD5Sum: 716b1c307166650f247e0a2e07cdd3b1
+Description: Determines file type using "magic" numbers
+
+Package: fontconfig-config
+Priority: optional
+Section: fonts
+Installed-Size: 440
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: all
+Source: fontconfig
+Version: 2.8.0-2.1
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: debconf (>= 0.5) | debconf-2.0, ucf (>= 0.29), ttf-dejavu-core | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Filename: pool/main/f/fontconfig/fontconfig-config_2.8.0-2.1_all.deb
+Size: 217150
+MD5Sum: c2dd70d32fa8e5c0588cff16efbbf614
+Description: generic font configuration library - configuration
+
+Package: fontconfig
+Priority: optional
+Section: fonts
+Installed-Size: 520
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Version: 2.8.0-2.1
+Replaces: fontconfig-config (<< 2.5.93-1)
+Depends: libc6 (>= 2.0), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config
+Suggests: defoma (>= 0.7.0)
+Filename: pool/main/f/fontconfig/fontconfig_2.8.0-2.1_i386.deb
+Size: 333180
+MD5Sum: 67aeeda05141d4fe477c041c12daad1e
+Description: generic font configuration library - support binaries
+
+Package: gcc-4.4-base
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4
+Version: 4.4.4-8
+Filename: pool/main/g/gcc-4.4/gcc-4.4-base_4.4.4-8_i386.deb
+Size: 118346
+MD5Sum: 5e35b249b1af8edd9e85932575f6af92
+Description: The GNU Compiler Collection (base package)
+
+Package: libacl1
+Priority: required
+Section: libs
+Installed-Size: 88
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: acl
+Version: 2.2.49-3
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.2)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Filename: pool/main/a/acl/libacl1_2.2.49-3_i386.deb
+Size: 27146
+MD5Sum: 99c1bd61d4f26b1f3a072b490d3daef5
+Description: Access control list shared library
+
+Package: libasound2
+Priority: optional
+Section: libs
+Installed-Size: 1236
+Maintainer: Debian ALSA Maintainers <pkg-alsa-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: alsa-lib
+Version: 1.0.23-1
+Depends: libc6 (>= 2.3.6-6~)
+Suggests: libasound2-plugins (>= 1.0.18)
+Conflicts: libasound2-plugins (<< 1.0.18)
+Filename: pool/main/a/alsa-lib/libasound2_1.0.23-1_i386.deb
+Size: 377718
+MD5Sum: 14a1674ebd84f30080d42c4f86f2533d
+Description: shared library for ALSA applications
+
+Package: libatk1.0-0
+Priority: optional
+Section: libs
+Installed-Size: 208
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: atk1.0
+Version: 1.30.0-1
+Depends: libc6 (>= 2.2), libglib2.0-0 (>= 2.16.0)
+Recommends: libatk1.0-data
+Filename: pool/main/a/atk1.0/libatk1.0-0_1.30.0-1_i386.deb
+Size: 82402
+MD5Sum: 27d2b5e1b0ca90254f54dfe2bf056527
+Description: The ATK accessibility toolkit
+
+Package: libattr1
+Priority: required
+Section: libs
+Installed-Size: 64
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: attr
+Version: 1:2.4.44-2
+Depends: libc6 (>= 2.2.3)
+Conflicts: attr (<< 2.0.0)
+Filename: pool/main/a/attr/libattr1_2.4.44-2_i386.deb
+Size: 11902
+MD5Sum: 1e08d3be5e8d55515e7b3fa6fc76a022
+Description: Extended attribute shared library
+
+Package: libavahi-client3
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Depends: libavahi-common3 (>= 0.6.22), libc6 (>= 2.4), libdbus-1-3 (>= 1.1.1)
+Filename: pool/main/a/avahi/libavahi-client3_0.6.27-1_i386.deb
+Size: 54328
+MD5Sum: 07bc086292d59fb7465eedb8c59d0c31
+Description: Avahi client library
+
+Package: libavahi-common-data
+Priority: optional
+Section: libs
+Installed-Size: 728
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Filename: pool/main/a/avahi/libavahi-common-data_0.6.27-1_i386.deb
+Size: 111952
+MD5Sum: ebc4f7471f8e8ffea1526e1894c283a7
+Description: Avahi common data files
+
+Package: libavahi-common3
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: avahi
+Version: 0.6.27-1
+Depends: libc6 (>= 2.4), libavahi-common-data
+Filename: pool/main/a/avahi/libavahi-common3_0.6.27-1_i386.deb
+Size: 50538
+MD5Sum: 6e5bb85c3665bd26cdcb12c41eb9787e
+Description: Avahi common library
+
+Package: libbz2-1.0
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: bzip2
+Version: 1.0.5-4
+Depends: libc6 (>= 2.3)
+Filename: pool/main/b/bzip2/libbz2-1.0_1.0.5-4_i386.deb
+Size: 45118
+MD5Sum: f067ae75bce5ef991b3d0574bf541ddb
+Description: high-quality block-sorting file compressor library - runtime
+
+Package: libc-bin
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Filename: pool/main/e/eglibc/libc-bin_2.11.2-2_i386.deb
+Size: 703542
+MD5Sum: f554ec34c092bb8e52e3d917bec7b46c
+Description: Embedded GNU C Library: Binaries
+
+Package: libc6
+Priority: required
+Section: libs
+Installed-Size: 9340
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Provides: glibc-2.11-1
+Depends: libc-bin (= 2.11.2-2), libgcc1
+Recommends: libc6-i686
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: tzdata (<< 2007k-1), tzdata-etch
+Breaks: locales (<< 2.11), locales-all (<< 2.11), nscd (<< 2.11)
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_i386.deb
+Size: 3877166
+MD5Sum: 3d8fe972a359ad362ac1957c2687e5c2
+Description: Embedded GNU C Library: Shared libraries
+
+Package: libcairo2
+Priority: optional
+Section: libs
+Installed-Size: 824
+Maintainer: Dave Beckett <dajobe@debian.org>
+Architecture: i386
+Source: cairo
+Version: 1.8.10-4
+Depends: libc6 (>= 2.3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libpixman-1-0 (>= 0.15.16), libpng12-0 (>= 1.2.13-4), libx11-6 (>= 0), libxcb-render-util0 (>= 0.3.6), libxcb-render0 (>= 0), libxcb1 (>= 0), libxrender1, zlib1g (>= 1:1.1.4)
+Breaks: iceape-browser (<= 2.0.3-3), libgtk-directfb-2.0-0, xulrunner-1.9, xulrunner-1.9.1 (<= 1.9.1.8-3)
+Filename: pool/main/c/cairo/libcairo2_1.8.10-4_i386.deb
+Size: 508814
+MD5Sum: 51f8838a83d46b5cf590338bcc3c6d73
+Description: The Cairo 2D vector graphics library
+
+Package: libcomerr2
+Priority: required
+Section: libs
+Installed-Size: 104
+Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+Architecture: i386
+Source: e2fsprogs
+Version: 1.41.12-2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/e/e2fsprogs/libcomerr2_1.41.12-2_i386.deb
+Size: 48508
+MD5Sum: 8fe610cf3b2f82f2a681ba196e91d883
+Description: common error description library
+
+Package: libcups2
+Priority: optional
+Section: libs
+Installed-Size: 468
+Maintainer: Debian CUPS Maintainers <pkg-cups-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: cups
+Version: 1.4.4-3
+Provides: libcupsys2
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.4), libgcrypt11 (>= 1.4.2), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7+dfsg), zlib1g (>= 1:1.1.4)
+Suggests: cups-common
+Breaks: cups (<< 1.4.4)
+Filename: pool/main/c/cups/libcups2_1.4.4-3_i386.deb
+Size: 225696
+MD5Sum: f78acda030eece301cd5e0c94ea3492b
+Description: Common UNIX Printing System(tm) - Core library
+
+Package: libdatrie1
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: i386
+Source: libdatrie
+Version: 0.2.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libd/libdatrie/libdatrie1_0.2.4-1_i386.deb
+Size: 26184
+MD5Sum: 305e5beace09f16bf9b0a568e8df7920
+Description: Double-array trie library
+
+Package: libdb4.7
+Priority: standard
+Section: libs
+Installed-Size: 1432
+Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: db4.7
+Version: 4.7.25-9
+Depends: libc6 (>= 2.3.6-6~)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Filename: pool/main/d/db4.7/libdb4.7_4.7.25-9_i386.deb
+Size: 644290
+MD5Sum: 694cced529f6249607c523765aa1e482
+Description: Berkeley v4.7 Database Libraries [runtime]
+
+Package: libdb4.8
+Priority: standard
+Section: libs
+Installed-Size: 1488
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Source: db4.8
+Version: 4.8.30-1
+Depends: libc6 (>= 2.3.6-6~)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Filename: pool/main/d/db4.8/libdb4.8_4.8.30-1_i386.deb
+Size: 681682
+MD5Sum: c8f9b6dd1cc49dac5d3319a5ac0d22fc
+Description: Berkeley v4.8 Database Libraries [runtime]
+
+Package: libdbus-1-3
+Priority: optional
+Section: libs
+Installed-Size: 328
+Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: dbus
+Version: 1.2.24-3
+Depends: libc6 (>= 2.3.6-6~)
+Recommends: dbus
+Filename: pool/main/d/dbus/libdbus-1-3_1.2.24-3_i386.deb
+Size: 129632
+MD5Sum: 620b2226a4cad34ed86931132fa09ea6
+Description: simple interprocess messaging system
+
+Package: libexpat1
+Priority: optional
+Section: libs
+Installed-Size: 368
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Source: expat
+Version: 2.0.1-7
+Depends: libc6 (>= 2.1.3)
+Conflicts: wink (<= 1.5.1060-4)
+Filename: pool/main/e/expat/libexpat1_2.0.1-7_i386.deb
+Size: 138122
+MD5Sum: 4607c75c6b55d92ac517fd0fb8543587
+Description: XML parsing C library - runtime library
+
+Package: libfontconfig1
+Priority: optional
+Section: libs
+Installed-Size: 412
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Source: fontconfig
+Version: 2.8.0-2.1
+Provides: libfontconfig
+Depends: libc6 (>= 2.7), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.8.0-2.1)
+Filename: pool/main/f/fontconfig/libfontconfig1_2.8.0-2.1_i386.deb
+Size: 273878
+MD5Sum: fd6d6426df7bc1330b064a7d45a85d84
+Description: generic font configuration library - runtime
+
+Package: libfreetype6
+Priority: optional
+Section: libs
+Installed-Size: 668
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: freetype
+Version: 2.4.2-1
+Depends: libc6 (>= 2.1.3), zlib1g (>= 1:1.1.4)
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Filename: pool/main/f/freetype/libfreetype6_2.4.2-1_i386.deb
+Size: 360632
+MD5Sum: f9c333d2643d186685a77d1072db5425
+Description: FreeType 2 font engine, shared library files
+
+Package: libgcc1
+Priority: required
+Section: libs
+Installed-Size: 156
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4 (4.4.4-8)
+Version: 1:4.4.4-8
+Depends: gcc-4.4-base (= 4.4.4-8), libc6 (>= 2.2.4)
+Filename: pool/main/g/gcc-4.4/libgcc1_4.4.4-8_i386.deb
+Size: 55180
+MD5Sum: c92a5656f20caa7d50bd425f2b1f25d8
+Description: GCC support library
+
+Package: libgcrypt11
+Priority: standard
+Section: libs
+Installed-Size: 556
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4.5-2
+Depends: libc6 (>= 2.3), libgpg-error0 (>= 1.6-1)
+Suggests: rng-tools
+Filename: pool/main/libg/libgcrypt11/libgcrypt11_1.4.5-2_i386.deb
+Size: 266444
+MD5Sum: 6b687ecf0284d5efe44115c07198b159
+Description: LGPL Crypto library - runtime library
+
+Package: libgdbm3
+Priority: important
+Section: libs
+Installed-Size: 120
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: gdbm
+Version: 1.8.3-9
+Depends: libc6 (>= 2.1.3), dpkg (>= 1.15.4) | install-info
+Filename: pool/main/g/gdbm/libgdbm3_1.8.3-9_i386.deb
+Size: 44940
+MD5Sum: cc0859fd9c0ea0a211e7f1a0da09ddc0
+Description: GNU dbm database routines (runtime version)
+
+Package: libglib2.0-0
+Priority: optional
+Section: libs
+Installed-Size: 2212
+Maintainer: Loic Minier <lool@dooz.org>
+Architecture: i386
+Source: glib2.0
+Version: 2.24.1-1
+Replaces: libglib2.0-dev (<< 2.23.2-2)
+Depends: libc6 (>= 2.9), libpcre3 (>= 7.7), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4)
+Recommends: libglib2.0-data, shared-mime-info
+Conflicts: libpango1.0-0 (<< 1.11)
+Filename: pool/main/g/glib2.0/libglib2.0-0_2.24.1-1_i386.deb
+Size: 1024782
+MD5Sum: e0f853cbcba1c8a132fc07c303c31ea9
+Description: The GLib library of C routines
+
+Package: libgnutls26
+Priority: standard
+Section: libs
+Installed-Size: 1268
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: gnutls26
+Version: 2.8.6-1
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.3), libgcrypt11 (>= 1.4.2), libtasn1-3 (>= 1.6-0), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Filename: pool/main/g/gnutls26/libgnutls26_2.8.6-1_i386.deb
+Size: 528314
+MD5Sum: 9c585b48d4a4e8de856b70a3350037de
+Description: the GNU TLS library - runtime library
+
+Package: libgpg-error0
+Priority: standard
+Section: libs
+Installed-Size: 228
+Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+Architecture: i386
+Source: libgpg-error
+Version: 1.6-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libg/libgpg-error/libgpg-error0_1.6-1_i386.deb
+Size: 43118
+MD5Sum: be3a76a7176e38cb1f0464be1f21d4d4
+Description: library for common error values and messages in GnuPG components
+
+Package: libgssapi-krb5-2
+Priority: standard
+Section: libs
+Installed-Size: 1604
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.7), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5-3 (= 1.8.3+dfsg~beta1-1), libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libkrb53
+Filename: pool/main/k/krb5/libgssapi-krb5-2_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1463772
+MD5Sum: 80f3ffe8e30991723a8009829e2aef10
+Description: MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
+
+Package: libgtk2.0-0
+Priority: optional
+Section: libs
+Installed-Size: 5864
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: gtk+2.0
+Version: 2.20.1-1
+Provides: gtk2.0-binver-2.10.0
+Depends: libgtk2.0-common, libatk1.0-0 (>= 1.29.3), libc6 (>= 2.7), libcairo2 (>= 1.6.4-6.1), libcups2 (>= 1.4.0), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.24.0), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.6.dfsg.2), libjasper1 (>= 1.900.1), libjpeg62, libpango1.0-0 (>= 1.20.0), libpng12-0 (>= 1.2.13-4), libtiff4, libx11-6 (>= 0), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxi6 (>= 0), libxinerama1, libxrandr2 (>= 2:1.2.99.3), libxrender1, zlib1g (>= 1:1.1.4), shared-mime-info
+Recommends: hicolor-icon-theme, libgtk2.0-bin
+Suggests: librsvg2-common, gvfs
+Filename: pool/main/g/gtk+2.0/libgtk2.0-0_2.20.1-1_i386.deb
+Size: 2503890
+MD5Sum: fc1fc5987ae2be51e9b4bcc4b57fc472
+Description: The GTK+ graphical user interface library
+
+Package: libgtk2.0-common
+Priority: optional
+Section: misc
+Installed-Size: 21484
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: gtk+2.0
+Version: 2.20.1-1
+Recommends: libgtk2.0-0
+Filename: pool/main/g/gtk+2.0/libgtk2.0-common_2.20.1-1_all.deb
+Size: 7104864
+MD5Sum: 68cf4472a1e7bed64241f466d6830bbc
+Description: Common files for the GTK+ graphical user interface library
+
+Package: libhunspell-1.2-0
+Priority: optional
+Section: libs
+Installed-Size: 376
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: hunspell
+Version: 1.2.11-1
+Depends: libc6 (>= 2.1.3), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Recommends: hunspell-en-us | hunspell-dictionary | myspell-dictionary
+Conflicts: openoffice.org-core (= 2.2.0~rc2-1)
+Filename: pool/main/h/hunspell/libhunspell-1.2-0_1.2.11-1_i386.deb
+Size: 154502
+MD5Sum: b8b8e5d0805a5e00b4cfdd64128d8054
+Description: spell checker and morphological analyzer (shared library)
+
+Package: libice6
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libice
+Version: 2:1.0.6-1
+Depends: libc6 (>= 2.3), x11-common
+Filename: pool/main/libi/libice/libice6_1.0.6-1_i386.deb
+Size: 50284
+MD5Sum: 7052cd2a95caeee0f83d0f1950fd5d42
+Description: X11 Inter-Client Exchange library
+
+Package: libjasper1
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Roland Stigge <stigge@antcom.de>
+Architecture: i386
+Source: jasper
+Version: 1.900.1-7
+Replaces: libjasper-1.700-2
+Depends: libc6 (>= 2.7), libjpeg62
+Suggests: libjasper-runtime
+Conflicts: libjasper-1.700-2
+Filename: pool/main/j/jasper/libjasper1_1.900.1-7_i386.deb
+Size: 145186
+MD5Sum: 1df984b14ac57be23d5a5ad0c40ab6cf
+Description: The JasPer JPEG-2000 runtime library
+
+Package: libjpeg62
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Bill Allombert <ballombe@debian.org>
+Architecture: i386
+Source: libjpeg6b
+Version: 6b1-1
+Depends: libc6 (>= 2.7)
+Filename: pool/main/libj/libjpeg6b/libjpeg62_6b1-1_i386.deb
+Size: 87974
+MD5Sum: ab36968379a350bdae98a3bf58aeda84
+Description: The Independent JPEG Group's JPEG runtime library (version 6.2)
+
+Package: libk5crypto3
+Priority: standard
+Section: libs
+Installed-Size: 1556
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.4), libkeyutils1, libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.8~aa), libkrb5-3 (<= 1.8~aa), libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libk5crypto3_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1439050
+MD5Sum: 463e89d5a6eacaa55f377575eb6f0a7c
+Description: MIT Kerberos runtime libraries - Crypto Library
+
+Package: libkeyutils1
+Priority: standard
+Section: libs
+Installed-Size: 56
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Source: keyutils
+Version: 1.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/k/keyutils/libkeyutils1_1.4-1_i386.deb
+Size: 6640
+MD5Sum: bc6dbf8f320151e67995e55c3e358b89
+Description: Linux Key Management Utilities (library)
+
+Package: libkrb5-3
+Priority: standard
+Section: libs
+Installed-Size: 2204
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.9), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5support0 (= 1.8.3+dfsg~beta1-1)
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Breaks: libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libkrb5-3_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1697246
+MD5Sum: 8894886ff9537684ef338ac9ab510467
+Description: MIT Kerberos runtime libraries
+
+Package: libkrb5support0
+Priority: standard
+Section: libs
+Installed-Size: 1436
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.8.3+dfsg~beta1-1
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.3.4), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Breaks: libkrb53 (<< 1.6.dfsg.4~beta1-9)
+Filename: pool/main/k/krb5/libkrb5support0_1.8.3+dfsg~beta1-1_i386.deb
+Size: 1385290
+MD5Sum: 5a9f10f57f35e8f34b4a7b7052244c14
+Description: MIT Kerberos runtime libraries - Support library
+
+Package: liblocale-gettext-perl
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.05-6
+Depends: libc6 (>= 2.2)
+Pre-Depends: perl-base (>= 5.10.0-25), perlapi-5.10.0
+Filename: pool/main/libl/liblocale-gettext-perl/liblocale-gettext-perl_1.05-6_i386.deb
+Size: 21596
+MD5Sum: a71c3dadecdf1b64b4cb050f91e032b5
+Description: Using libc functions for internationalization in Perl
+
+Package: liblzma2
+Priority: required
+Section: libs
+Installed-Size: 308
+Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Architecture: i386
+Source: xz-utils
+Version: 4.999.9beta+20100713-1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/x/xz-utils/liblzma2_4.999.9beta+20100713-1_i386.deb
+Size: 171540
+MD5Sum: fe14361cc247e9bb11b98e31e47cfbbe
+Description: XZ-format compression library
+
+Package: libmagic1
+Priority: standard
+Section: libs
+Installed-Size: 2032
+Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Architecture: i386
+Source: file
+Version: 5.04-5
+Depends: libc6 (>= 2.3.4), zlib1g (>= 1:1.1.4)
+Suggests: file
+Conflicts: file (<< 5.04-2)
+Filename: pool/main/f/file/libmagic1_5.04-5_i386.deb
+Size: 233668
+MD5Sum: def2786d4289068336826c75c514b2bc
+Description: File type determination library using "magic" numbers
+
+Package: libmozjs2d
+Priority: optional
+Section: libs
+Installed-Size: 948
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.1.11-1
+Depends: libc6 (>= 2.3.6-6~), libgcc1 (>= 1:4.1.1), libnspr4-0d (>= 1.8.0.10), libstdc++6 (>= 4.1.1)
+Breaks: xulrunner-1.9.1 (<< 1.9.1.10~)
+Filename: pool/main/x/xulrunner/libmozjs2d_1.9.1.11-1_i386.deb
+Size: 474718
+MD5Sum: 6a9032247eceb71c9b472bd6fc9961e2
+Description: The Mozilla SpiderMonkey JavaScript library
+
+Package: libncurses5
+Priority: required
+Section: libs
+Installed-Size: 592
+Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20100313-2
+Depends: libc6 (>= 2.3.4)
+Recommends: libgpm2
+Filename: pool/main/n/ncurses/libncurses5_5.7+20100313-2_i386.deb
+Size: 347766
+MD5Sum: f82378f1792c81e380689b932ea26c21
+Description: shared libraries for terminal handling
+
+Package: libnewt0.52
+Priority: important
+Section: libs
+Installed-Size: 960
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.11-1
+Replaces: libnewt-utf8, libnewt0, libnewt0.51
+Depends: libc6 (>= 2.3), libslang2 (>= 2.0.7-1)
+Recommends: libfribidi0
+Conflicts: libnewt0.51
+Filename: pool/main/n/newt/libnewt0.52_0.52.11-1_i386.deb
+Size: 68022
+MD5Sum: be04bedb79431088f0ed072317143fdd
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+
+Package: libnspr4-0d
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nspr
+Version: 4.8.6-1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/n/nspr/libnspr4-0d_4.8.6-1_i386.deb
+Size: 125500
+MD5Sum: 4f3c6c3c19b2f24a1734bd084b34f6f5
+Description: NetScape Portable Runtime Library
+
+Package: libnss3-1d
+Priority: optional
+Section: libs
+Installed-Size: 2324
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nss
+Version: 3.12.7-1
+Depends: libc6 (>= 2.3.6-6~), libnspr4-0d (>= 4.8.6), libsqlite3-0 (>= 3.7.0), zlib1g (>= 1:1.1.4)
+Filename: pool/main/n/nss/libnss3-1d_3.12.7-1_i386.deb
+Size: 986188
+MD5Sum: 3dbaa9f3c493b2e6bac6dccce0a56dc2
+Description: Network Security Service libraries
+
+Package: libpam-modules
+Priority: required
+Section: admin
+Installed-Size: 996
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: pam
+Version: 1.1.1-3
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Pre-Depends: libc6 (>= 2.4), libdb4.8, libpam0g (>= 1.1.0), libselinux1 (>= 2.0.85), debconf (>= 0.5) | debconf-2.0
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Filename: pool/main/p/pam/libpam-modules_1.1.1-3_i386.deb
+Size: 344512
+MD5Sum: d55b046bb3da59da7fb94c7325bc07d1
+Description: Pluggable Authentication Modules for PAM
+
+Package: libpam0g
+Priority: required
+Section: libs
+Installed-Size: 244
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: pam
+Version: 1.1.1-3
+Replaces: libpam0g-util
+Depends: libc6 (>= 2.3), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Filename: pool/main/p/pam/libpam0g_1.1.1-3_i386.deb
+Size: 114334
+MD5Sum: 4850e1ffc833914e164f0c14ceb91010
+Description: Pluggable Authentication Modules library
+
+Package: libpango1.0-0
+Priority: optional
+Section: libs
+Installed-Size: 836
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: pango1.0
+Version: 1.28.1-1
+Provides: pango1.0-modver-1.6.0
+Depends: libpango1.0-common (>= 1.28.1-1), libc6 (>= 2.3.6-6~), libcairo2 (>= 1.8.10-3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.24.0), libthai0 (>= 0.1.12), libx11-6, libxft2 (>> 2.1.1), libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: pango-libthai
+Filename: pool/main/p/pango1.0/libpango1.0-0_1.28.1-1_i386.deb
+Size: 303342
+MD5Sum: fdc1d8650b049d88bb7cdc2f7af425f0
+Description: Layout and rendering of internationalized text
+
+Package: libpango1.0-common
+Priority: optional
+Section: misc
+Installed-Size: 252
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: pango1.0
+Version: 1.28.1-1
+Replaces: libpango-common (<< 1.0.0), libpango0
+Depends: debconf | debconf-2.0, defoma (>= 0.11.1), fontconfig (>= 2.1.91)
+Recommends: x-ttcidfont-conf, libpango1.0-0
+Suggests: ttf-japanese-gothic, ttf-japanese-mincho, ttf-thryomanes, ttf-baekmuk, ttf-arphic-gbsn00lp, ttf-arphic-bsmi00lp, ttf-arphic-gkai00mp, ttf-arphic-bkai00mp
+Conflicts: pango-libthai (<< 0.1.6-2)
+Filename: pool/main/p/pango1.0/libpango1.0-common_1.28.1-1_all.deb
+Size: 112638
+MD5Sum: 521e4171155dd465866ff400cb9a37bc
+Description: Modules and configuration files for the Pango
+
+Package: libpcre3
+Priority: standard
+Section: libs
+Installed-Size: 480
+Maintainer: Mark Baker <mark@mnb.org.uk>
+Architecture: i386
+Source: pcre3
+Version: 8.02-1.1
+Depends: libc6 (>= 2.3)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+Filename: pool/main/p/pcre3/libpcre3_8.02-1.1_i386.deb
+Size: 231418
+MD5Sum: 3be0351b7ecd8a5e2140318237d923d0
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+
+Package: libpixman-1-0
+Priority: optional
+Section: libs
+Installed-Size: 508
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: pixman
+Version: 0.16.4-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/p/pixman/libpixman-1-0_0.16.4-1_i386.deb
+Size: 236004
+MD5Sum: 46f6f180adfbbeabc95c774386c3006f
+Description: pixel-manipulation library for X and cairo
+
+Package: libpng12-0
+Priority: optional
+Section: libs
+Installed-Size: 320
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libpng
+Version: 1.2.44-1
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.1.3), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Filename: pool/main/libp/libpng/libpng12-0_1.2.44-1_i386.deb
+Size: 175970
+MD5Sum: e871ef14b295cad4ac8ceedbce00c818
+Description: PNG library - runtime
+
+Package: libpopt0
+Priority: important
+Section: libs
+Installed-Size: 208
+Maintainer: Paul Martin <pm@debian.org>
+Architecture: i386
+Source: popt
+Version: 1.16-1
+Replaces: popt
+Depends: libc6 (>= 2.3)
+Conflicts: libpopt-dev (<= 1.4-1), popt, rpm (<= 4.0.2-3)
+Filename: pool/main/p/popt/libpopt0_1.16-1_i386.deb
+Size: 52890
+MD5Sum: 935b9a8eea67b75326002f75b374383d
+Description: lib for parsing cmdline parameters
+
+Package: libreadline6
+Priority: important
+Section: libs
+Installed-Size: 356
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: i386
+Source: readline6
+Version: 6.1-3
+Depends: readline-common, libc6 (>= 2.3), libncurses5 (>= 5.7+20100313)
+Filename: pool/main/r/readline6/libreadline6_6.1-3_i386.deb
+Size: 145914
+MD5Sum: 63c3a619ef1fd5ec1c04fd0992f3f71f
+Description: GNU readline and history libraries, run-time libraries
+
+Package: libselinux1
+Priority: required
+Section: libs
+Installed-Size: 216
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: i386
+Source: libselinux
+Version: 2.0.96-1
+Depends: libc6 (>= 2.3.4)
+Filename: pool/main/libs/libselinux/libselinux1_2.0.96-1_i386.deb
+Size: 82752
+MD5Sum: 65c82e5ad1ebe75c056eeb33147e1eeb
+Description: SELinux runtime shared libraries
+
+Package: libslang2
+Priority: important
+Section: libs
+Installed-Size: 1264
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: slang2
+Version: 2.2.2-4
+Depends: libc6 (>= 2.3)
+Recommends: libpng12-0
+Filename: pool/main/s/slang2/libslang2_2.2.2-4_i386.deb
+Size: 507014
+MD5Sum: 2cd4ae18b2f0e4a04c0e98d4913d5fd7
+Description: The S-Lang programming library - runtime version
+
+Package: libsm6
+Priority: optional
+Section: libs
+Installed-Size: 144
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libsm
+Version: 2:1.1.1-1
+Depends: libc6 (>= 2.1.3), libice6 (>= 1:1.0.0), libuuid1 (>= 2.16)
+Filename: pool/main/libs/libsm/libsm6_1.1.1-1_i386.deb
+Size: 23976
+MD5Sum: eda3e07bf434262ba270bb1ae12e71e0
+Description: X11 Session Management library
+
+Package: libsqlite3-0
+Priority: standard
+Section: libs
+Installed-Size: 684
+Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.hu>
+Architecture: i386
+Source: sqlite3
+Version: 3.7.0-1.1
+Depends: libc6 (>= 2.3.6-6~)
+Filename: pool/main/s/sqlite3/libsqlite3-0_3.7.0-1.1_i386.deb
+Size: 380004
+MD5Sum: 4706e644e7f3f2b183db0ce001a7bbaa
+Description: SQLite 3 shared library
+
+Package: libstartup-notification0
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ondřej Surý <ondrej@debian.org>
+Architecture: i386
+Source: startup-notification
+Version: 0.10-1
+Depends: libc6 (>= 2.1.3), libice6 (>= 1:1.0.0), libsm6, libx11-6, libxcb-atom1 (>= 0.3.3), libxcb-aux0 (>= 0.3.3), libxcb-event1 (>= 0.3.3), libxcb1 (>= 1.1.92)
+Filename: pool/main/s/startup-notification/libstartup-notification0_0.10-1_i386.deb
+Size: 21230
+MD5Sum: 0e62e87fe56b93c30e7dee751fc7a59f
+Description: library for program launch feedback (shared library)
+
+Package: libstdc++6
+Priority: required
+Section: libs
+Installed-Size: 1204
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.4
+Version: 4.4.4-8
+Depends: gcc-4.4-base (= 4.4.4-8), libc6 (>= 2.3.2), libgcc1
+Conflicts: scim (<< 1.4.2-1)
+Filename: pool/main/g/gcc-4.4/libstdc++6_4.4.4-8_i386.deb
+Size: 347294
+MD5Sum: c5ad981710bbe349c2847b1cc00cafc1
+Description: The GNU Standard C++ Library v3
+
+Package: libtasn1-3
+Priority: important
+Section: libs
+Installed-Size: 152
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 2.7-1
+Depends: libc6 (>= 2.3)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Filename: pool/main/libt/libtasn1-3/libtasn1-3_2.7-1_i386.deb
+Size: 61424
+MD5Sum: 0120dbb8123bef3fe7cb4155e95e4307
+Description: Manage ASN.1 structures (runtime)
+
+Package: libtext-charwidth-perl
+Priority: required
+Section: perl
+Installed-Size: 92
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Version: 0.04-6
+Depends: libc6 (>= 2.1.3), perl-base (>= 5.10.0-23), perlapi-5.10.0
+Filename: pool/main/libt/libtext-charwidth-perl/libtext-charwidth-perl_0.04-6_i386.deb
+Size: 11582
+MD5Sum: 6aa5a252db205de6817ee954f5193fbf
+Description: get display widths of characters on the terminal
+
+Package: libtext-iconv-perl
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Version: 1.7-2
+Depends: libc6 (>= 2.1.3), perl-base (>= 5.10.0-23), perlapi-5.10.0
+Filename: pool/main/libt/libtext-iconv-perl/libtext-iconv-perl_1.7-2_i386.deb
+Size: 18076
+MD5Sum: 707f244dc1df10391dd9679b2645a911
+Description: converts between character sets in Perl
+
+Package: libtext-wrapi18n-perl
+Priority: required
+Section: perl
+Installed-Size: 28
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: all
+Version: 0.06-7
+Depends: libtext-charwidth-perl
+Filename: pool/main/libt/libtext-wrapi18n-perl/libtext-wrapi18n-perl_0.06-7_all.deb
+Size: 9004
+MD5Sum: 5608c08e10e79269e391f02856f96ec5
+Description: internationalized substitute of Text::Wrap
+
+Package: libthai-data
+Priority: optional
+Section: libs
+Installed-Size: 596
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: all
+Source: libthai
+Version: 0.1.14-2
+Conflicts: libthai0 (<< 0.1.10)
+Filename: pool/main/libt/libthai/libthai-data_0.1.14-2_all.deb
+Size: 198282
+MD5Sum: 201f73aac77afd1eef48bbf858964586
+Description: Data files for Thai language support library
+
+Package: libthai0
+Priority: optional
+Section: libs
+Installed-Size: 108
+Maintainer: Theppitak Karoonboonyanan <thep@debian.org>
+Architecture: i386
+Source: libthai
+Version: 0.1.14-2
+Depends: libc6 (>= 2.1.3), libdatrie1 (>= 0.2.0), libthai-data (>= 0.1.10)
+Conflicts: libdatrie0 (<< 0.1.4)
+Filename: pool/main/libt/libthai/libthai0_0.1.14-2_i386.deb
+Size: 40222
+MD5Sum: 7f65a895b5a232442969584c8aa6635d
+Description: Thai language support library
+Enhances: kdelibs5
+
+Package: libtiff4
+Priority: optional
+Section: libs
+Installed-Size: 488
+Maintainer: Jay Berkenbilt <qjb@debian.org>
+Architecture: i386
+Source: tiff
+Version: 3.9.4-1
+Depends: libc6 (>= 2.3), libjpeg62, zlib1g (>= 1:1.1.4)
+Filename: pool/main/t/tiff/libtiff4_3.9.4-1_i386.deb
+Size: 182070
+MD5Sum: 4438501f82789f341c245d79b40c175f
+Description: Tag Image File Format (TIFF) library
+
+Package: libuuid1
+Priority: required
+Section: libs
+Installed-Size: 112
+Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.17.2-3.1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.3)
+Recommends: uuid-runtime
+Filename: pool/main/u/util-linux/libuuid1_2.17.2-3.1_i386.deb
+Size: 58126
+MD5Sum: cea424e8f6340a5ee8d4e64da2d6c953
+Description: Universally Unique ID library
+
+Package: libx11-6
+Priority: optional
+Section: libs
+Installed-Size: 1356
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libx11
+Version: 2:1.3.3-3
+Depends: libc6 (>= 2.3.2), libxcb1 (>= 1.2), libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Filename: pool/main/libx/libx11/libx11-6_1.3.3-3_i386.deb
+Size: 816814
+MD5Sum: 40f5b42f6af2ad1550d3a2d6f634218f
+Description: X11 client-side library
+
+Package: libx11-data
+Priority: optional
+Section: x11
+Installed-Size: 2504
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: libx11
+Version: 2:1.3.3-3
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Filename: pool/main/libx/libx11/libx11-data_1.3.3-3_all.deb
+Size: 232336
+MD5Sum: 5f5b2da7a114ada3bb7310f2b40cce51
+Description: X11 client-side library
+
+Package: libxau6
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxau
+Version: 1:1.0.6-1
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libx/libxau/libxau6_1.0.6-1_i386.deb
+Size: 16144
+MD5Sum: ad33495d6208f5dd07bee9cdb07b29d1
+Description: X11 authorisation library
+
+Package: libxcb-atom1
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-atom1_0.3.6-1_i386.deb
+Size: 9526
+MD5Sum: 79337f41329668bc137a7e4e2f273dd8
+Description: utility libraries for X C Binding -- atom
+
+Package: libxcb-aux0
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-aux0_0.3.6-1_i386.deb
+Size: 8472
+MD5Sum: 88d95e67be4ca3a7601db394241ab486
+Description: utility libraries for X C Binding -- aux
+
+Package: libxcb-event1
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb1
+Filename: pool/main/x/xcb-util/libxcb-event1_0.3.6-1_i386.deb
+Size: 8514
+MD5Sum: 8dc0f269f8b0cea17f6207cce0964a51
+Description: utility libraries for X C Binding -- event
+
+Package: libxcb-render-util0
+Priority: extra
+Section: libs
+Installed-Size: 64
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.3.6-1
+Depends: libc6 (>= 2.1.3), libxcb-render0, libxcb1
+Filename: pool/main/x/xcb-util/libxcb-render-util0_0.3.6-1_i386.deb
+Size: 9334
+MD5Sum: 8f0afaba8747efba1ae99d995e03b7c5
+Description: utility libraries for X C Binding -- render-util
+
+Package: libxcb-render0
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.1.3), libxcb1 (>= 0)
+Filename: pool/main/libx/libxcb/libxcb-render0_1.6-1_i386.deb
+Size: 14916
+MD5Sum: 882950cf440b422d17fe5f784745c3fb
+Description: X C Binding, render extension
+
+Package: libxcb1
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.3.2), libxau6, libxdmcp6
+Breaks: libxcb-xlib0
+Filename: pool/main/libx/libxcb/libxcb1_1.6-1_i386.deb
+Size: 40500
+MD5Sum: 8b1bd1c23264932b7e2c639302366a06
+Description: X C Binding
+
+Package: libxcomposite1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcomposite
+Version: 1:0.4.2-1
+Depends: libc6 (>= 2.1.3), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1)
+Filename: pool/main/libx/libxcomposite/libxcomposite1_0.4.2-1_i386.deb
+Size: 15116
+MD5Sum: 43b75f3d05d774ae791977cd20ce1624
+Description: X11 Composite extension library
+
+Package: libxcursor1
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcursor
+Version: 1:1.1.10-2
+Depends: libc6 (>= 2.3), libx11-6 (>= 0), libxfixes3 (>= 1:4.0.1), libxrender1
+Filename: pool/main/libx/libxcursor/libxcursor1_1.1.10-2_i386.deb
+Size: 24942
+MD5Sum: 8aadf2988320b81f3422bddd68c97f1b
+Description: X cursor management library
+
+Package: libxdamage1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdamage
+Version: 1:1.1.3-1
+Depends: libc6 (>= 2.1.3), libx11-6, libxfixes3 (>= 1:4.0.1)
+Filename: pool/main/libx/libxdamage/libxdamage1_1.1.3-1_i386.deb
+Size: 13568
+MD5Sum: 7b5b7a9937adff801f15857d2e1c7bce
+Description: X11 damaged region extension library
+
+Package: libxdmcp6
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdmcp
+Version: 1:1.0.3-2
+Depends: libc6 (>= 2.1.3)
+Filename: pool/main/libx/libxdmcp/libxdmcp6_1.0.3-2_i386.deb
+Size: 18426
+MD5Sum: cecbdad4e8a639735cf7e148681fb667
+Description: X11 Display Manager Control Protocol library
+
+Package: libxext6
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxext
+Version: 2:1.1.2-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxext/libxext6_1.1.2-1_i386.deb
+Size: 41694
+MD5Sum: 9c8bc9d73ed6ad2697df80f72edfd3c3
+Description: X11 miscellaneous extension library
+
+Package: libxfixes3
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxfixes
+Version: 1:4.0.5-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxfixes/libxfixes3_4.0.5-1_i386.deb
+Size: 17976
+MD5Sum: 8e0bf9a4ed5a0b6361085795e69ae248
+Description: X11 miscellaneous 'fixes' extension library
+
+Package: libxft2
+Priority: optional
+Section: libs
+Installed-Size: 140
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xft
+Version: 2.1.14-2
+Depends: libc6 (>= 2.3), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libx11-6 (>= 0), libxrender1
+Filename: pool/main/x/xft/libxft2_2.1.14-2_i386.deb
+Size: 52030
+MD5Sum: 23a966a6319e50b8b8b9857da75cae5b
+Description: FreeType-based font drawing library for X
+
+Package: libxi6
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxi
+Version: 2:1.3-4
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 2:1.2.99.901), libxext6 (>= 0)
+Filename: pool/main/libx/libxi/libxi6_1.3-4_i386.deb
+Size: 53936
+MD5Sum: 83cac8ca145398686339817466e11ffd
+Description: X11 Input extension library
+
+Package: libxinerama1
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxinerama
+Version: 2:1.1-3
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 0), libxext6 (>= 0)
+Filename: pool/main/libx/libxinerama/libxinerama1_1.1-3_i386.deb
+Size: 12186
+MD5Sum: 1fbe54b8d05b1096a4ea70cd50e1510b
+Description: X11 Xinerama extension library
+
+Package: libxml2
+Priority: standard
+Section: libs
+Installed-Size: 1588
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Version: 2.7.7.dfsg-4
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.2.3.3.dfsg)
+Recommends: xml-core
+Filename: pool/main/libx/libxml2/libxml2_2.7.7.dfsg-4_i386.deb
+Size: 826866
+MD5Sum: 7153d99951b5d33f66eaa20a657e033b
+Description: GNOME XML library
+
+Package: libxrandr2
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrandr
+Version: 2:1.3.0-3
+Depends: libc6 (>= 2.1.3), libx11-6 (>= 0), libxext6 (>= 0), libxrender1
+Filename: pool/main/libx/libxrandr/libxrandr2_1.3.0-3_i386.deb
+Size: 26618
+MD5Sum: ccd579d696aad72be69bdf1be92541f4
+Description: X11 RandR extension library
+
+Package: libxrender1
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrender
+Version: 1:0.9.6-1
+Depends: libc6 (>= 2.1.3), libx11-6
+Filename: pool/main/libx/libxrender/libxrender1_0.9.6-1_i386.deb
+Size: 29280
+MD5Sum: ef296f771209c82ed1245c67798b6081
+Description: X Rendering Extension client library
+
+Package: libxt6
+Priority: optional
+Section: libs
+Installed-Size: 452
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxt
+Version: 1:1.0.7-1
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6 (>= 0)
+Filename: pool/main/libx/libxt/libxt6_1.0.7-1_i386.deb
+Size: 171518
+MD5Sum: aa8e8f0a7ee7b57c2d58786af72da142
+Description: X11 toolkit intrinsics library
+
+Package: lsb-base
+Priority: required
+Section: misc
+Installed-Size: 72
+Maintainer: Chris Lawrence <lawrencc@debian.org>
+Architecture: all
+Source: lsb
+Version: 3.2-23.1
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Filename: pool/main/l/lsb/lsb-base_3.2-23.1_all.deb
+Size: 20462
+MD5Sum: 60637dd487aedfaa48e3a38bc1a0ea4c
+Description: Linux Standard Base 3.2 init script functionality
+
+Package: ncurses-bin
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 500
+Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20100313-2
+Pre-Depends: libc6 (>= 2.3), libncurses5 (>= 5.7+20100313)
+Filename: pool/main/n/ncurses/ncurses-bin_5.7+20100313-2_i386.deb
+Size: 314788
+MD5Sum: 408a001ec8f30f40e19caa35772c3e3b
+Description: terminal-related programs and man pages
+
+Package: passwd
+Priority: required
+Section: admin
+Installed-Size: 2208
+Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: shadow
+Version: 1:4.1.4.2-1
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.3), libpam0g (>= 0.99.7.1), libselinux1 (>= 2.0.82), libpam-modules, debianutils (>= 2.15.2)
+Filename: pool/main/s/shadow/passwd_4.1.4.2-1_i386.deb
+Size: 975188
+MD5Sum: 2ae7b750afe852093fd38009f054b9f7
+Description: change and administer password and group data
+
+Package: perl-base
+Essential: yes
+Priority: required
+Section: perl
+Installed-Size: 4488
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: i386
+Source: perl
+Version: 5.10.1-14
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<< 5.10.1-12), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0, perlapi-5.10.1
+Pre-Depends: libc6 (>= 2.4), dpkg (>= 1.14.20)
+Suggests: perl
+Conflicts: autoconf2.13 (<< 2.13-45), libfile-spec-perl (<< 3.30), libscalar-list-utils-perl (<< 1:1.21), libxsloader-perl (<< 0.10), safe-rm (<< 0.8)
+Filename: pool/main/p/perl/perl-base_5.10.1-14_i386.deb
+Size: 985868
+MD5Sum: 4f62d14690a767e771baf2cffca803a5
+Description: minimal Perl system
+
+Package: perl-modules
+Priority: standard
+Section: perl
+Installed-Size: 15856
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: all
+Source: perl
+Version: 5.10.1-14
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libclass-isa-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-spec-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-plainer-perl, libpod-simple-perl, libswitch-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libtime-local-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libclass-isa-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-spec-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-plainer-perl, libpod-simple-perl, libswitch-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libtime-local-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.1-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<< 1.52), libattribute-handlers-perl (<< 0.85), libautodie-perl (<< 2.06.01), libcgi-pm-perl (<< 3.43), libclass-isa-perl (<< 0.33), libcpanplus-perl (<< 0.88), libextutils-cbuilder-perl (<< 0.2602), libextutils-parsexs-perl (<< 2.2002), libfile-spec-perl (<< 3.30), libfile-temp-perl (<< 0.22), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.09), liblocale-codes-perl (<< 2.07), liblocale-maketext-perl (<< 1.13), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.89), libmodule-build-perl (<< 0.340201), libmodule-corelist-perl (<< 2.18), libmodule-load-conditional-perl (<< 0.30), libmodule-load-perl (<< 0.16), libmodule-pluggable-perl (<< 3.9), libnet-perl (<= 1:1.22), libnet-ping-perl (<< 2.36), libparams-check-perl (<< 0.26-1), libparent-perl (<< 0.221), libparse-cpan-meta-perl (<< 1.39), libpod-escapes-perl (<< 1.04), libpod-parser-perl (<< 1.37), libpod-plainer-perl (<< 0.01), libpod-simple-perl (<< 3.07), libswitch-perl (<< 2.14), libtest-harness-perl (<< 3.17), libtest-simple-perl (<< 0.92), libthread-queue-perl (<< 2.11), libtime-local-perl (<< 1.1901), libversion-perl (<< 1:0.7700), podlators-perl (<= 2.2.2-1)
+Filename: pool/main/p/perl/perl-modules_5.10.1-14_all.deb
+Size: 3481026
+MD5Sum: c502e5cc355cd19e5d264ae74f3595e2
+Description: Core Perl modules
+Build-Essential: yes
+
+Package: perl
+Priority: standard
+Section: perl
+Installed-Size: 13168
+Maintainer: Niko Tyni <ntyni@debian.org>
+Architecture: i386
+Version: 5.10.1-14
+Replaces: libarchive-tar-perl (<= 1.38-2), libcompress-raw-bzip2-perl, libcompress-raw-zlib-perl, libcompress-zlib-perl, libdigest-md5-perl, libdigest-sha-perl, libio-compress-base-perl, libio-compress-bzip2-perl, libio-compress-perl, libio-compress-zlib-perl, libmime-base64-perl, libmodule-corelist-perl (<< 2.14-2), libstorable-perl, libsys-syslog-perl, libthreads-perl, libthreads-shared-perl, libtime-hires-perl, libtime-piece-perl, perl-base (<< 5.10.1-12), perl-doc (<< 5.8.0-1), perl-modules (<< 5.8.1-1)
+Provides: data-dumper, libcompress-raw-bzip2-perl, libcompress-raw-zlib-perl, libcompress-zlib-perl, libdigest-md5-perl, libdigest-sha-perl, libio-compress-base-perl, libio-compress-bzip2-perl, libio-compress-perl, libio-compress-zlib-perl, libmime-base64-perl, libstorable-perl, libsys-syslog-perl, libthreads-perl, libthreads-shared-perl, libtime-hires-perl, libtime-piece-perl, perl5
+Depends: perl-base (= 5.10.1-14), perl-modules (>= 5.10.1-14), libbz2-1.0, libc6 (>= 2.4), libdb4.7, libgdbm3 (>= 1.8.3), zlib1g (>= 1:1.2.3.3.dfsg)
+Recommends: netbase, make
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl
+Conflicts: libcompress-raw-bzip2-perl (<< 2.020), libcompress-raw-zlib-perl (<< 2.020), libcompress-zlib-perl (<< 2.020), libdigest-md5-perl (<< 2.39), libdigest-sha-perl (<< 5.47), libio-compress-base-perl (<< 2.020), libio-compress-bzip2-perl (<< 2.020), libio-compress-perl (<< 2.020), libio-compress-zlib-perl (<< 2.020), libmime-base64-perl (<< 3.08), libstorable-perl (<< 2.20), libsys-syslog-perl (<< 0.27), libthreads-perl (<< 1.72), libthreads-shared-perl (<< 1.29), libtime-hires-perl (<< 1.9719), libtime-piece-perl (<< 1.15), perl-doc (<< 5.10.1-1)
+Filename: pool/main/p/perl/perl_5.10.1-14_i386.deb
+Size: 3767054
+MD5Sum: c402cd511260c137a795afaeb6125876
+Description: Larry Wall's Practical Extraction and Report Language
+Build-Essential: yes
+
+Package: readline-common
+Priority: important
+Section: utils
+Installed-Size: 92
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: all
+Source: readline6
+Version: 6.1-3
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Depends: dpkg (>= 1.15.4) | install-info
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Filename: pool/main/r/readline6/readline-common_6.1-3_all.deb
+Size: 54028
+MD5Sum: 1ddfb1a719db7f302abe921e261b0288
+Description: GNU readline and history libraries, common files
+
+Package: sed
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 956
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 4.2.1-7
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.3), libselinux1 (>= 1.32)
+Filename: pool/main/s/sed/sed_4.2.1-7_i386.deb
+Size: 245832
+MD5Sum: 76a28a89a0684b09abd4c9622f9b0b5f
+Description: The GNU sed stream editor
+
+Package: sensible-utils
+Priority: required
+Section: utils
+Installed-Size: 112
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: all
+Version: 0.0.4
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+Filename: pool/main/s/sensible-utils/sensible-utils_0.0.4_all.deb
+Size: 5408
+MD5Sum: 6e1c38bc8506fb23d949a4df7e07d5e2
+Description: Utilities for sensible alternative selection
+
+Package: shared-mime-info
+Priority: optional
+Section: misc
+Installed-Size: 3348
+Maintainer: Filip Van Raemdonck <mechanix@debian.org>
+Architecture: i386
+Version: 0.71-3
+Depends: libc6 (>= 2.3), libglib2.0-0 (>= 2.24.0), libxml2 (>= 2.7.4)
+Conflicts: libglib2.0-0 (<< 2.17.2), libgnomevfs2-0 (<< 1:2.24.0), tracker (<< 0.6.90)
+Filename: pool/main/s/shared-mime-info/shared-mime-info_0.71-3_i386.deb
+Size: 842486
+MD5Sum: 783a1538ac9561e082a8dc67f29df778
+Description: FreeDesktop.org shared MIME database and spec
+
+Package: ttf-dejavu-core
+Priority: optional
+Section: fonts
+Installed-Size: 2592
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.31-1
+Replaces: ttf-dejavu (<< 2.20-1)
+Conflicts: ttf-dejavu (<< 2.20-1)
+Filename: pool/main/t/ttf-dejavu/ttf-dejavu-core_2.31-1_all.deb
+Size: 1451418
+MD5Sum: d3d8850ec0ef68d9b7655545ce0b2b22
+Description: Vera font family derivative with additional characters
+
+Package: ucf
+Priority: standard
+Section: utils
+Installed-Size: 260
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: all
+Version: 3.0025
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Filename: pool/main/u/ucf/ucf_3.0025_all.deb
+Size: 65960
+MD5Sum: 6e664d04fea09239d450ae9f3d246a0f
+Description: Update Configuration File: preserve user changes to config files.
+
+Package: whiptail
+Priority: important
+Section: utils
+Installed-Size: 100
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.11-1
+Replaces: newt0.10, newt0.21 (<< 0.21-4), whiptail-utf8
+Provides: whiptail-provider, whiptail-utf8
+Depends: libc6 (>= 2.1), libnewt0.52 (>= 0.52.11), libpopt0 (>= 1.16), libslang2 (>= 2.0.7-1)
+Conflicts: whiptail-provider
+Filename: pool/main/n/newt/whiptail_0.52.11-1_i386.deb
+Size: 39118
+MD5Sum: cac6b0f08d25c91011d5c267e35cb0d2
+Description: Displays user-friendly dialog boxes from shell scripts
+
+Package: x11-common
+Priority: optional
+Section: x11
+Installed-Size: 568
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg
+Version: 1:7.5+6
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.4~), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Breaks: gdm (<< 2.20.7-5)
+Filename: pool/main/x/xorg/x11-common_7.5+6_all.deb
+Size: 280238
+MD5Sum: 312093359c4f0f7decfb049768d6bb12
+Description: X Window System (X.Org) infrastructure
+
+Package: xulrunner-1.9.1
+Priority: optional
+Section: libs
+Installed-Size: 19060
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.1.11-1
+Replaces: xulrunner-1.9.1-gnome-support
+Depends: libasound2 (>> 1.0.18), libatk1.0-0 (>= 1.29.3), libbz2-1.0, libc6 (>= 2.3.6-6~), libcairo2 (>= 1.8.8), libdbus-1-3 (>= 1.0.2), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.24.0), libgtk2.0-0 (>= 2.18.0), libhunspell-1.2-0 (>= 1.2.11), libjpeg62 (>= 6b1), libmozjs2d (= 1.9.1.11-1), libnspr4-0d (>> 4.7.1-1), libnss3-1d (>= 3.12.6), libpango1.0-0 (>= 1.14.0), libpng12-0 (>= 1.2.13-4), libreadline6 (>= 6.0), libsqlite3-0 (>= 3.6.23.1), libstartup-notification0 (>= 0.10), libstdc++6 (>= 4.1.1), libx11-6, libxrender1, libxt6, zlib1g (>= 1:1.1.4)
+Suggests: libdbus-glib-1-2 (>= 0.78), libgconf2-4 (>= 2.27.0), libgnome2-0 (>= 2.17.3), libgnomevfs2-0 (>= 1:2.17.90), libgnomeui-0, libcanberra0
+Conflicts: j2re1.4, pango-graphite (<< 0.9.3), xulrunner-1.9.1-gnome-support
+Breaks: iceweasel (<< 3.5.5-1)
+Filename: pool/main/x/xulrunner/xulrunner-1.9.1_1.9.1.11-1_i386.deb
+Size: 7230878
+MD5Sum: d2b3c7b52aee7284290136e2c844ed7b
+Description: XUL + XPCOM application runner
+
+Package: xz-utils
+Priority: required
+Section: utils
+Installed-Size: 364
+Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Architecture: i386
+Version: 4.999.9beta+20100713-1
+Replaces: xz-lzma (<< 4.999.9beta+20091004-1)
+Depends: libc6 (>= 2.6), liblzma2 (>= 4.999.9beta+20100602)
+Suggests: xz-lzma
+Breaks: xz-lzma (<< 4.999.9beta+20091004-1)
+Filename: pool/main/x/xz-utils/xz-utils_4.999.9beta+20100713-1_i386.deb
+Size: 174098
+MD5Sum: a2a576f97035c84b78e7f269656cab86
+Description: XZ-format compression utilities
+
+Package: zlib1g
+Priority: required
+Section: libs
+Installed-Size: 160
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: i386
+Source: zlib
+Version: 1:1.2.3.4.dfsg-3
+Provides: libz1
+Depends: libc6 (>= 2.1.3)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Filename: pool/main/z/zlib/zlib1g_1.2.3.4.dfsg-3_i386.deb
+Size: 75952
+MD5Sum: 37246cd4fe5d4cb0f7c03ce3082164a3
+Description: compression library - runtime
+
diff --git a/test/integration/Packages-bug-593360-modifiers-in-names b/test/integration/Packages-bug-593360-modifiers-in-names
new file mode 100644
index 0000000..d2ac8d4
--- /dev/null
+++ b/test/integration/Packages-bug-593360-modifiers-in-names
@@ -0,0 +1,42 @@
+Package: g++
+Priority: optional
+Section: devel
+Installed-Size: 40
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-defaults (1.96)
+Version: 4:4.4.5-1
+Filename: pool/main/g/gcc-defaults/g++_4.4.5-1_i386.deb
+Size: 1372
+MD5sum: 37e129a4b130e8b96a9b9d5b26a3fffa
+SHA1: d98768d1547389a563e60433268143f42578c3e6
+SHA256: 18d933972392d233127bdd766cfcaaaa2e35f57de47c7af678d599be9613d562
+Description: The GNU C++ compiler
+
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: all
+Version: 0.8.8
+Filename: pool/main/a/apt/apt_0.8.8_i386.deb
+Size: 2140632
+MD5sum: 4283aa3bb751253faf1b2204e0229e4f
+SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a
+SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab
+Description: Advanced front-end for dpkg
+
+Package: apt+
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: all
+Version: 0.8.8
+Filename: pool/main/a/apt/apt_0.8.8_i386.deb
+Size: 2140632
+MD5sum: 4283aa3bb751253faf1b2204e0229e4f
+SHA1: 59d432f56901faa86e814a436b8da010ee1c7b8a
+SHA256: 072dcf4359dce9698aeaa54366eb20513f860c2bb6d44a95973c0b2ad413bfab
+Description: Advanced front-end for dpkg
diff --git a/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy b/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy
new file mode 100644
index 0000000..a249d6e
--- /dev/null
+++ b/test/integration/Packages-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,30 @@
+Package: exim4-daemon-heavy
+Priority: optional
+Section: mail
+Installed-Size: 1060
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: exim4
+Version: 4.72-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/e/exim4/exim4-daemon-heavy_4.72-1_i386.deb
+Size: 508988
+MD5sum: 7adf3b0ef8f134e70d19ee216e6f4452
+Description: Exim MTA (v4) daemon with extended features, including exiscan-acl
+
+Package: postfix
+Priority: extra
+Section: mail
+Installed-Size: 3196
+Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Version: 2.7.1-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/p/postfix/postfix_2.7.1-1_i386.deb
+Size: 1325662
+MD5sum: 1ef63b6a62b4be120a9cdc312b81a698
+Description: High-performance mail transport agent
diff --git a/test/integration/Packages-bug-605394-versioned-or-groups b/test/integration/Packages-bug-605394-versioned-or-groups
new file mode 100644
index 0000000..6032736
--- /dev/null
+++ b/test/integration/Packages-bug-605394-versioned-or-groups
@@ -0,0 +1,71 @@
+Package: apache2-mpm-prefork
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-prefork_2.2.16-4_i386.deb
+Size: 2276
+MD5Sum: c0db3e637052e59dbdb2fa08f4cdcea4
+Description: Apache HTTP Server - traditional non-threaded model
+Task: web-server
+
+Package: apache2-mpm-worker
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Filename: pool/main/a/apache2/apache2-mpm-worker_2.2.16-4_i386.deb
+Size: 2220
+MD5Sum: 71bccda875aa0afac700410b951370ba
+Description: Apache HTTP Server - high speed threaded model
+
+Package: libapache2-mod-php5
+Priority: optional
+Section: httpd
+Installed-Size: 7588
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Depends: apache2-mpm-prefork (>> 2.0.52)
+Filename: pool/main/p/php5/libapache2-mod-php5_5.3.3-4_i386.deb
+Size: 2886980
+MD5Sum: b41ec4b98aa08966288570e07cd864ab
+Description: server-side, HTML-embedded scripting language (Apache 2 module)
+Task: web-server
+
+Package: php5-cgi
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-4
+Filename: pool/main/p/php5/php5-cgi_5.3.3-4_i386.deb
+Size: 5713726
+MD5Sum: 9e579982032c7bb98508e16e314f45e9
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-4
+Depends: libapache2-mod-php5 (>= 5.3.3-4) | php5-cgi (>= 5.3.3-4)
+Filename: pool/main/p/php5/php5_5.3.3-4_all.deb
+Size: 1050
+MD5Sum: cbedd95ed5b868ba1ffd10747abc0ee3
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/Packages-bug-723705-tagfile-truncates-fields b/test/integration/Packages-bug-723705-tagfile-truncates-fields
new file mode 100644
index 0000000..c42b850
--- /dev/null
+++ b/test/integration/Packages-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,167 @@
+Package: cdebconf-gtk-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 92
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Description: Gtk+ frontend for Debian Configuration Management System
+Description-md5: 75d036e0a245499123544e2254b92e9c
+Section: debian-installer
+Priority: optional
+Filename: pool/main/c/cdebconf/cdebconf-gtk-udeb_0.185_amd64.udeb
+Size: 27278
+MD5sum: a1bbbc1d4fb8e0615b5621abac021924
+SHA1: b1a7ab55a90f61e5337847d02ff1d12d73559def
+SHA256: cd79f3205304a7932b3309c4df9898c9a53929bc651912659858e087ebe1c18a
+
+Package: cdebconf-newt-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 58
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Description: Newt frontend for Debian Configuration Management System
+Description-md5: e080be5e38cb8c57bca2f3effe9ee030
+Section: debian-installer
+Priority: optional
+Filename: pool/main/c/cdebconf/cdebconf-newt-udeb_0.185_amd64.udeb
+Size: 19192
+MD5sum: de27807f56dae2f2403b3322d5fe6bd2
+SHA1: 57883e223d46a9f25966f9b986e6a3bc2f67d8ef
+SHA256: 5f8b9c3a5430f2ec879484a7736582b152d76cc8ba9bc19328268f3635759a1b
+
+Package: cdebconf-udeb
+Source: cdebconf
+Version: 0.185
+Installed-Size: 245
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: debconf-2.0
+Description: Debian Configuration Management System (C-implementation)
+Description-md5: 9f3579e9d9f86ac89e667a8707d3cbd3
+Section: debian-installer
+Priority: standard
+Filename: pool/main/c/cdebconf/cdebconf-udeb_0.185_amd64.udeb
+Size: 77376
+MD5sum: e3883706fdbf54c2e5ea959c92b2d37f
+SHA1: 0232f1bdf1531db628516ed3a46a27466b267fdc
+SHA256: 96345575417a3e4df8a2cadaa55784ec8f6c042defb1e2fc002d941b6116ceab
+
+Package: cdebconf-gtk-terminal
+Source: cdebconf-terminal
+Version: 0.22
+Installed-Size: 64
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: cdebconf-terminal
+Depends: cdebconf-gtk-udeb, libc6-udeb (>= 2.17), libglib2.0-udeb (>= 2.36.4), libgtk2.0-0-udeb (>= 2.24.0), libvte9-udeb (>= 1:0.28.0), cdebconf-udeb, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal, cdebconf-gtk-terminal
+Description: cdebconf gtk plugin displaying a terminal
+Description-md5: 18c4446758aec003eb8cd0a43419f1aa
+Section: debian-installer
+Priority: extra
+Filename: pool/main/c/cdebconf-terminal/cdebconf-gtk-terminal_0.22_amd64.udeb
+Size: 14734
+MD5sum: f9c3a7354560cb88e0396e2b7ba54363
+SHA1: 9c1c93328e758bfd9de2752466b271aaf38c8177
+SHA256: ca749853fc3b93db1d08ccdc6b46de27633de52bc5b880fa65275897ebcaaf69
+
+Package: cdebconf-newt-terminal
+Source: cdebconf-terminal
+Version: 0.22
+Installed-Size: 43
+Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+Architecture: amd64
+Provides: cdebconf-terminal
+Depends: cdebconf-newt-udeb (>= 0.146), libc6-udeb (>= 2.17), libnewt0.52
+Description: cdebconf newt plugin to provide a clean terminal
+Description-md5: 4109a053022081b573d864d84d6eb16d
+Section: debian-installer
+Priority: extra
+Filename: pool/main/c/cdebconf-terminal/cdebconf-newt-terminal_0.22_amd64.udeb
+Size: 4538
+MD5sum: 20db6152fce5081fcbf49c7c08f21246
+SHA1: fa2a40f777a2f48b9634866bc780fb059e60b2fe
+SHA256: c4d99ef27285f0c9090005313165627e56e0972e687af7e68c2b1d1538e2ae09
+
+Package: libc6-udeb
+Source: eglibc (2.17-92)
+Version: 2.17-92+b1
+Installed-Size: 3126
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: amd64
+Provides: glibc-2.17-1, libc-udeb, libc6
+Description: Embedded GNU C Library: Shared libraries - udeb
+Description-md5: 9552ce73b7b3fb466e3d89fe8db9a563
+Section: debian-installer
+Priority: extra
+Filename: pool/main/e/eglibc/libc6-udeb_2.17-92+b1_amd64.udeb
+Size: 1056000
+MD5sum: 7fd7032eeeecf7f76eff79a0543fbd72
+SHA1: 724b6a81b8fbc9d4d2bb43d656c08de73f7ada25
+SHA256: 137d4c001bbfde8161315c36e6cb8653ae2c50a8d6b6d2d27396c492d91a1723
+
+Package: libglib2.0-udeb
+Source: glib2.0
+Version: 2.36.4-1
+Installed-Size: 10070
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Description: GLib library of C routines - minimal runtime
+Description-md5: 0244040042870a89aa49f037cce3f1e9
+Section: debian-installer
+Priority: optional
+Filename: pool/main/g/glib2.0/libglib2.0-udeb_2.36.4-1_amd64.udeb
+Size: 1714604
+MD5sum: 72da029f1bbb36057d874f1f82a5d00a
+SHA1: 32bce78a052ef19a620f43ecbe12404fa570c0f1
+SHA256: 8edbc7cb872c0a82705913563f93f9eec5750881e4378c5a48770cde840cd6eb
+
+Package: libgtk2.0-0-udeb
+Source: gtk+2.0
+Version: 2.24.20-1
+Installed-Size: 5035
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Provides: gtk2.0-binver-2.10.0
+Description: GTK+ graphical user interface library - minimal runtime
+Description-md5: 32e5112b80c02578837cff4f65dfec84
+Section: debian-installer
+Priority: extra
+Filename: pool/main/g/gtk+2.0/libgtk2.0-0-udeb_2.24.20-1_amd64.udeb
+Size: 1643046
+MD5sum: 25513478eb2e02e5766c0eea0b411ca9
+SHA1: 9274f05bfa930a3406403441ce061bade04e2064
+SHA256: d5f611f48928ae02f759105cf8cff467cde1cb44df56ad31067168b46a80f8bc
+
+Package: libvte9-udeb
+Source: vte
+Version: 1:0.28.2-5
+Installed-Size: 628
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: amd64
+Description: Terminal emulator widget for GTK+ 2.0 - minimal runtime
+Description-md5: e7993385c30bae6e96c8cb87795a513c
+Section: debian-installer
+Priority: extra
+Filename: pool/main/v/vte/libvte9-udeb_0.28.2-5_amd64.udeb
+Size: 216968
+MD5sum: 7da7201effaf5ced19abd9d0b45aa2c6
+SHA1: a424cf779e7614d79740c422b6342de04fed3646
+SHA256: 4963033cbda5a8ba7eb8ebf1debae34463b8e63b821259860cfb51c1ab99562d
+
+Package: zlib1g-udeb
+Source: zlib
+Version: 1:1.2.8.dfsg-1
+Installed-Size: 115
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: amd64
+Description: compression library - runtime for Debian installer
+Description-md5: 9cab974e3eab657c53bc17611b894c7a
+Section: debian-installer
+Priority: optional
+Filename: pool/main/z/zlib/zlib1g-udeb_1.2.8.dfsg-1_amd64.udeb
+Size: 45270
+MD5sum: c02884420f79a3ae4569cf67782f3e74
+SHA1: 7cd1a7c8be4e086de733a0ce76f87d42b8b2173b
+SHA256: 61641ee2b5e185232108333438b72bec71ef549fe0e0df1b2b3afa37174e53a7
+
diff --git a/test/integration/Packages-bug-lp1347721-dpkg-ordering b/test/integration/Packages-bug-lp1347721-dpkg-ordering
new file mode 100644
index 0000000..ea96b38
--- /dev/null
+++ b/test/integration/Packages-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,445 @@
+Package: init
+xEssential: yes
+Priority: required
+Section: metapackages
+Installed-Size: 29
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: pkg-systemd-maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: init-system-helpers
+Version: 1.20
+Pre-Depends: sysvinit-core | systemd-sysv | upstart
+Filename: pool/main/i/init-system-helpers/init_1.20_i386.deb
+Size: 3494
+MD5sum: a388b6f4f6ed0d01b3d459cfad6582fe
+SHA1: d0eb6414a6bb48bb886fcc19962f6a7f302977f3
+SHA256: 9f299b2bf18d6e4534f3a73cca97ef93850e1b5fa38f8519da7c2b825d581f4c
+Description: System-V-like init utilities - metapackage
+Description-md5: e52554c23609041bfbca72fe27a132f9
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+
+Package: libudev1
+Priority: required
+Section: libs
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 208-6ubuntu2
+Depends: libc6 (>= 2.17), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Filename: pool/main/s/systemd/libudev1_208-6ubuntu2_i386.deb
+Size: 36008
+MD5sum: b03338c052438a95919b9db4d6f9493e
+SHA1: a85242bfc653255b5fa73d0fbec92815dc9c09fc
+SHA256: d66d7948703b33bd617e16a1b9ac6f24ca564312890b1f9218330f638080a307
+Description: libudev shared library
+Multi-Arch: same
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: ace5b83d7b48187416c90173a93255b6
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: udev
+Priority: required
+Section: admin
+Installed-Size: 5879
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 208-6ubuntu2
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libkmod2 (>= 5~), libselinux1 (>= 2.0.65), libudev1 (= 208-6ubuntu2), lsb-base (>= 4.1+Debian11ubuntu7), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Filename: pool/main/s/systemd/udev_208-6ubuntu2_i386.deb
+Size: 799582
+MD5sum: 814bb3babdbe76994ce536384ca31f88
+SHA1: bbb662c89f2b1ff4fd450d1523cc21b5b1c339bc
+SHA256: e444350214c5c121b2ca8031f76c53809f95ebb5c4cec4cf4595c7520ac09529
+Description: /dev/ and hotplug management daemon
+Multi-Arch: foreign
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: e875ddb09f46f1f7672af537f0c875ca
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: initscripts
+Priority: required
+Section: admin
+Installed-Size: 246
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 4), lsb-base (>= 4.1+Debian11ubuntu7), sysvinit-utils (>= 2.86.ds1-64), sysv-rc | file-rc, coreutils (>= 5.93), passwd, init, mountall (>= 2.28)
+Recommends: psmisc, e2fsprogs
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Breaks: aide (<< 0.15.1-5), atm-tools (<< 1:2.5.1-1.3), bootchart (<< 0.10~svn407-3.3), console-common (<< 0.7.86), cruft (<< 0.9.16), eepc-acpi-scripts (<< 1.1.12), fcheck (<< 2.7.59-16), hostapd (<< 1:0.7.3-3), hostname (<< 2.95ubuntu1~boot2), ifupdown (<< 0.6.8ubuntu27), libpam-mount (<< 2.13-1), ltsp-client-core (<< 5.2.16-1), mdadm (<< 3.2.2-1), nbd-client (<< 1:2.9.23-1), nfs-common (<< 1:1.2.5-3), portmap (<< 6.0.0-2), readahead-fedora (<< 2:1.5.6-3), resolvconf (<< 1.49), rpcbind (<< 0.2.0-7), rsyslog (<< 5.8.2-2), selinux-policy-default (<= 2:0.2.20100524-9), splashy (<< 0.3.13-5.1+b1), sysklogd (<< 1.5-6.2), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4), wpasupplicant (<< 0.7.3-4), xymon (<< 4.3.0~beta2.dfsg-9)
+Filename: pool/main/s/sysvinit/initscripts_2.88dsf-41ubuntu16_i386.deb
+Size: 35150
+MD5sum: e78f1e7816f03ded97eacd469505ea45
+SHA1: 81f88f9258c680e9983316d75baff7572ecec75c
+SHA256: 996e4d86486cbe12a7b7852ec1a9fe459dbf0afab51dc13bd701b6d970fdc14a
+Description: scripts for initializing and shutting down the system
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: db9003c179cd2a623493209da58ea2ea
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libc6
+Priority: required
+Section: libs
+Installed-Size: 9284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: glibc
+Version: 2.19-4ubuntu1
+Replaces: libc6-i386, libc6-xen
+Provides: glibc-2.19-1, libc6-i686, libc6-xen
+Depends: libgcc1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: libc6-xen, prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Breaks: hurd (<< 1:0.5.git20140203-1), libtirpc1 (<< 0.2.3), nscd (<< 2.19)
+Filename: pool/main/g/glibc/libc6_2.19-4ubuntu1_i386.deb
+Size: 4012440
+MD5sum: 946665711bb0294bd2c7729b3174ba8b
+SHA1: 063e268e0d1e368e218d450a4bd2af7608b5e38e
+SHA256: 0e33f5c3b6da3a6ec52fb0274abfa0da5489808feb220b6e6640432cb84f948f
+Description: GNU C Library: Shared libraries
+Multi-Arch: same
+Homepage: http://www.gnu.org/software/libc/libc.html
+Description-md5: fc3001b0b90a1c8e6690b283a619d57f
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libmount1
+Priority: required
+Section: libs
+Installed-Size: 253
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.20.1-5.1ubuntu21
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.8), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Filename: pool/main/u/util-linux/libmount1_2.20.1-5.1ubuntu21_i386.deb
+Size: 60156
+MD5sum: d17af590ad06ac914a1024d54184cee6
+SHA1: 6eb2a281c409bd5181ce6b871795f8e4609565bc
+SHA256: 78ce54b9f644c365b95a7230e1e50762d628c9d0d3549211017a98d4cb5013c4
+Description: block device id library
+Multi-Arch: same
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Description-md5: 8f605597a2fb2fd7bffd09db537dd040
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libplymouth4
+Priority: required
+Section: libs
+Installed-Size: 315
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: plymouth
+Version: 0.9.0-0ubuntu2
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.9), libpng12-0 (>= 1.2.13-4), libudev1 (>= 183)
+Pre-Depends: multiarch-support
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Filename: pool/main/p/plymouth/libplymouth4_0.9.0-0ubuntu2_i386.deb
+Size: 85024
+MD5sum: 8d9e7001ba371bd802956de1e81d1997
+SHA1: 749bdaee4d8bd4c2383c703eb244caa473180d35
+SHA256: 59bd4492b6e71eee5c13ba9c63da12ece49c43106829556722ca503867ce7251
+Description: graphical boot animation and logger - shared libraries
+Multi-Arch: same
+Description-md5: 29e2ed45f3e127c38b58dae52061cc33
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libprocps3
+Priority: required
+Section: libs
+Installed-Size: 133
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Source: procps
+Version: 1:3.3.9-1ubuntu5
+Replaces: procps (<< 1:3.3.2-1)
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Filename: pool/main/p/procps/libprocps3_3.3.9-1ubuntu5_i386.deb
+Size: 30078
+MD5sum: 0df60f591dfe64ed23bb1f3a1546c0ce
+SHA1: db672ec37e88574bf1a1d5484d80cfd4ff04f9f6
+SHA256: b5df28501805a6833dc78e049159a7c560af6f24f18f51459bd8890c31e0fdc6
+Description: library for accessing process information from /proc
+Multi-Arch: same
+Homepage: http://gitorious.org/procps
+Description-md5: 195f4a1a493350f6f0732a65b3cda83f
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: libudev1
+Priority: required
+Section: libs
+Installed-Size: 131
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 204-14ubuntu2
+Depends: libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0)
+Pre-Depends: multiarch-support
+Filename: pool/main/s/systemd/libudev1_204-14ubuntu2_i386.deb
+Size: 35518
+MD5sum: a606f9e4aab028b9ab658b6e8a09d5fb
+SHA1: ef28d377e6cc8f1e98dd9cd8c40edda90e2eed20
+SHA256: c02c85725f64b6c804235329166bf66e40da948d96123336ec55e13e1654720f
+Description: libudev shared library
+Multi-Arch: same
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: ace5b83d7b48187416c90173a93255b6
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: lsb-base
+Priority: required
+Section: misc
+Installed-Size: 83
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian LSB Team <debian-lsb@lists.debian.org>
+Architecture: all
+Source: lsb
+Version: 4.1+Debian11ubuntu8
+Replaces: upstart (<< 1.12.1-0ubuntu8)
+Breaks: upstart (<< 1.12.1-0ubuntu8)
+Filename: pool/main/l/lsb/lsb-base_4.1+Debian11ubuntu8_all.deb
+Size: 13094
+MD5sum: 9ec51f910e6d8e86bfb489b71b237e66
+SHA1: 8091ba9ffc03999a3db1e2e0ee7d32ac5139a942
+SHA256: be8d24447147aa997b79353eaf8732b3d0967118c011b47476c841667eb15f7e
+Description: Linux Standard Base 4.1 init script functionality
+Multi-Arch: foreign
+Homepage: http://www.linuxfoundation.org/collaborate/workgroups/lsb
+Description-md5: 4ebb3d88f9f483751e70c55779c52d01
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: mount
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 410
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: i386
+Source: util-linux
+Version: 2.20.1-5.1ubuntu21
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.8), libmount1 (>= 2.20.1), libselinux1 (>= 2.0.15)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Filename: pool/main/u/util-linux/mount_2.20.1-5.1ubuntu21_i386.deb
+Size: 112598
+MD5sum: bdff5dbfbf17e2be281d64e2e7a4912b
+SHA1: 1ed4abb0d5de8a09c704ac2d33de123015e5318a
+SHA256: d2f023c763f7b6e91f3cd14073bfc5af7e7bfe3922fc5ca681d8038c80323f9e
+Description: Tools for mounting and manipulating filesystems
+Multi-Arch: foreign
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Description-md5: 46eb8e09a600d5eb98b6b40428349102
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: mountall
+Priority: required
+Section: admin
+Installed-Size: 248
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Version: 2.54build1
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth4 (>= 0.8.1-3), libudev1 (>= 183)
+Pre-Depends: dpkg (>= 1.15.7.2)
+Breaks: initscripts (<< 2.88dsf-24), policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Filename: pool/main/m/mountall/mountall_2.54build1_i386.deb
+Size: 54166
+MD5sum: a208d9dc5aef018087d5e00cea7f6c92
+SHA1: 13686aa81ebef6c3009ff618708d76bc68ff94e8
+SHA256: dee359411cd7cfad19581f380af6275d46a6c5ecf55f512523b75adaa4734d03
+Description: filesystem mounting tool
+Multi-Arch: foreign
+Description-md5: b5b5a27fc0e8063ef1226a39fb8ecf70
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: procps
+Priority: required
+Section: admin
+Installed-Size: 634
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Craig Small <csmall@debian.org>
+Architecture: i386
+Version: 1:3.3.9-1ubuntu5
+Provides: watch
+Depends: libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libncursesw5 (>= 5.6+20070908), libprocps3, libtinfo5, lsb-base (>= 4.1+Debian11ubuntu7), initscripts
+Recommends: psmisc
+Conflicts: pgrep (<< 3.3-5), w-bassman (<< 1.0-3)
+Breaks: guymager (<= 0.5.9-1), open-vm-tools (<= 2011.12.20-562307-1), xmem (<= 1.20-27.1)
+Filename: pool/main/p/procps/procps_3.3.9-1ubuntu5_i386.deb
+Size: 203368
+MD5sum: 17be371891f077e04075c6eb0af06b3c
+SHA1: a5c6171b5a6430aa9436e42f0e64226dd2e7a665
+SHA256: 41e03fd2d05161c402d9a5d2b5feecb30a42f8919eb43712ebdd4340433803c1
+Description: /proc file system utilities
+Multi-Arch: foreign
+Homepage: http://gitorious.org/procps
+Description-md5: 943f3288c1aaa379fca73a3ff1a35278
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: sysv-rc
+Priority: required
+Section: admin
+Installed-Size: 224
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: all
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: file-rc
+Depends: debconf (>= 0.5) | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Conflicts: file-rc
+Breaks: initscripts (<< 2.88dsf-41ubuntu14)
+Filename: pool/main/s/sysvinit/sysv-rc_2.88dsf-41ubuntu16_all.deb
+Size: 37784
+MD5sum: e57bc9887432f76266d7bf741cf9d813
+SHA1: 446d24cc86bdb7a779856c00f9dea966227a00e2
+SHA256: 072d2745b9c966d63cba5abf52357374e7a043b3cc1bbde0b8ccf68f82e45f60
+Description: System-V-like runlevel change mechanism
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: 195f2d617082a23f37cee0f50784eef9
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: sysvinit-utils
+Priority: required
+Section: admin
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: sysvinit
+Version: 2.88dsf-41ubuntu16
+Replaces: last, sysvinit (<= 2.86.ds1-65)
+Depends: libc6 (>= 2.15), libselinux1 (>= 1.32), lsb-base (>= 4.1+Debian11ubuntu7)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: bootlogd, sash
+Conflicts: chkconfig (<< 11.0-79.1-2), last, sysvconfig
+Breaks: upstart (<< 1.5-0ubuntu5)
+Filename: pool/main/s/sysvinit/sysvinit-utils_2.88dsf-41ubuntu16_i386.deb
+Size: 49652
+MD5sum: e1340ba69c7a5f0cf1a84b3f68993570
+SHA1: 7cbd535c1c010c2e84cb454562fb6632fb366ddc
+SHA256: 576c2bcfbf56871acd68576f07fd18b6bfccd8a5db6dfa04bcf62183f43e77a0
+Description: System-V-like utilities
+Multi-Arch: foreign
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Description-md5: 1d2bc4c9c32104729144c7578ecd30bd
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: udev
+Priority: required
+Section: admin
+Installed-Size: 5123
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: systemd
+Version: 204-14ubuntu2
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libkmod2 (>= 5~), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 2.0.65), libudev1 (= 204-14ubuntu2), lsb-base (>= 4.1+Debian11ubuntu7), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Filename: pool/main/s/systemd/udev_204-14ubuntu2_i386.deb
+Size: 739026
+MD5sum: a85b035885e1b316354f6e5d0b8eeb69
+SHA1: 970405e4c8838c3cf17d1834c8917705d977879e
+SHA256: 05fbd7f4b502fde9752b84b49364fe633b8377bcd996ec16462e0bc94adc9fcf
+Description: /dev/ and hotplug management daemon
+Multi-Arch: foreign
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Description-md5: e875ddb09f46f1f7672af537f0c875ca
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
+Package: upstart
+Priority: required
+Section: admin
+Installed-Size: 1721
+Maintainer: James Hunt <james.hunt@ubuntu.com>
+Architecture: i386
+Version: 1.13.1-0ubuntu1
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.15), libcgmanager0, libdbus-1-3 (>= 1.2.16), libjson-c2 (>= 0.10), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libudev1 (>= 183), sysvinit-utils, initscripts, mountall, ifupdown (>= 0.6.10ubuntu5), libjson0 (>= 0.10-1.1ubuntu1), debianutils (>= 4)
+Suggests: python3, graphviz, bash-completion, upstart-monitor
+Conflicts: lxcguest, startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Breaks: friendly-recovery (<< 0.2.13), libc6 (<< 2.12.1-0ubuntu12)
+Filename: pool/main/u/upstart/upstart_1.13.1-0ubuntu1_i386.deb
+Size: 388978
+MD5sum: 2ebf7fb1083b581707e445fee808e120
+SHA1: 901424ec0d304ca8d10a25321a55d1d69bd8e82d
+SHA256: c42fb117e90770c7163c9f4770e75e9c0d6a00d41c4b3afc2afebfa65ede80f8
+Description: event-based init daemon
+Multi-Arch: foreign
+Homepage: http://upstart.ubuntu.com/
+Orig-Maintainer: Steve Langasek <vorlon@debian.org>
+Description-md5: b776ec43b708c13dd0c2ab824471f478
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 9m
+Task: minimal
+
diff --git a/test/integration/Packages-github-23-too-long-dependency-line b/test/integration/Packages-github-23-too-long-dependency-line
new file mode 100644
index 0000000..967d6ed
--- /dev/null
+++ b/test/integration/Packages-github-23-too-long-dependency-line
@@ -0,0 +1,17 @@
+Package: network-manager-strongswan
+Architecture: amd64
+Version: 1.3.1-14
+Priority: extra
+Section: net
+Maintainer: Jean-Christophe Manciot <manciot.jeanchristophe@gmail.com>
+Installed-Size: 256
+Provides: network-manager-strongswan
+Depends: libart-2.0-2,libatk1.0-0,libavahi-client3,libavahi-common3,libavahi-glib1,libbonobo2-0,libbonoboui2-0,libc6,libcairo2,libcanberra0,libdatrie1,libdbus-1-3,libdbus-glib-1-2,libexpat1,libffi6,libfontconfig1,libfreetype6,libgail18,libgconf-2-4,libgcrypt20,libgdk-pixbuf2.0-0,libglib2.0-0,libglib2.0-0-dbg,libglib2.0-0-refdbg,libgmp10,libgnome-2-0,libgnomecanvas2-0,libgnome-keyring0,libgnomeui-0,libgnomevfs2-0,libgnutls30,libgpg-error0,libgraphite2-3,libgtk2.0-0,libharfbuzz0b,libhogweed4,libice6,libidn11,libltdl7,liblzma5,libnettle6,libnm-glib-vpn1,libnm-util2,libogg0,liborbit-2-0,libp11-kit0,libpango-1.0-0,libpangocairo-1.0-0,libpangoft2-1.0-0,libpcre3,libpixman-1-0,libpng12-0,libpopt0,libselinux1,libsm6,libsystemd0,libtasn1-6,libtdb1,libthai0,libuuid1,libvorbis0a,libvorbisfile3,libx11-6,libxau6,libxcb1,libxcb-render0,libxcb-shm0,libxcomposite1,libxcursor1,libxdamage1,libxdmcp6,libxext6,libxfixes3,libxi6,libxinerama1,libxml2,libxrandr2,libxrender1,zlib1g
+Filename: dists/xenial/stable/binary-amd64/network-manager-strongswan_1.3.1-14_amd64.deb
+Size: 34642
+MD5sum: 6f4482cb417e4c884a6715f315695937
+SHA1: 07dc0377c365f6ccb67d8e135ab32f27b5b5774d
+SHA256: e526bc8c6c8b29dc28e5783ad076119d3be0e804779b3ca3a68959b7ac23f163
+SHA512: 6e2eb65023301dcaf1813a3c5686a82bdb61bdd3597e1976e067e06a0b0eee96e6d2a2d8b890bf37b8120eb9ff671a5ac4ee49de83feb3199afeab2893b8dec6
+Description: This package provides an IKEv2 IPSec VPN plugin for strongswan
+Description-md5: 31abf1e375284c7ee36f25bf936125f1
diff --git a/test/integration/Packages-hashsum-verification b/test/integration/Packages-hashsum-verification
new file mode 100644
index 0000000..29a385f
--- /dev/null
+++ b/test/integration/Packages-hashsum-verification
@@ -0,0 +1,18 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: apt.deb
+Size: 0
+MD5sum: d41d8cd98f00b204e9800998ecf8427e
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
diff --git a/test/integration/Packages-pdiff-usage b/test/integration/Packages-pdiff-usage
new file mode 100644
index 0000000..ac962f2
--- /dev/null
+++ b/test/integration/Packages-pdiff-usage
@@ -0,0 +1,36 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), debian-archive-keyring
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: pool/main/a/apt/apt_0.7.25.3_i386.deb
+Size: 1750610
+MD5sum: 311aadc67d1b72428b54c9b4e1f76671
+SHA1: 3c695e028f74d5c55226f9ef30000bbbd881088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7811a9f68826326a529777fd660f28f050
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
+
+Package: oldstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 100
+Filename: pool/oldstuff_1.0_i386.deb
+Size: 100000
+MD5sum: 311aeeadf78324aaff54c9b4e1f76671
+SHA1: 3c695e028f74d5c544deeddaaa1242desa81088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool but old stuff
+ This package will disappear in the next mirror update
+Description-md5: 1948af60eda0a41dfa9fe83f60eb8389
diff --git a/test/integration/Packages-pdiff-usage-new b/test/integration/Packages-pdiff-usage-new
new file mode 100644
index 0000000..f8d7b19
--- /dev/null
+++ b/test/integration/Packages-pdiff-usage-new
@@ -0,0 +1,39 @@
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5672
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.0~pre1
+Replaces: manpages-pl (<< 20060617-3~)
+Provides: libapt-pkg4.10
+Depends: libc6 (>= 2.3.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), zlib1g (>= 1:1.1.4), debian-archive-keyring, gnupg
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conflicts: python-apt (<< 0.7.93.2~)
+Filename: pool/main/a/apt/apt_0.8.0~pre1_i386.deb
+Size: 2013046
+MD5sum: 6786ca6270c988f2c201716ededaedec
+SHA1: fe26559e745d4c2c977c27170938852041c9adff
+SHA256: a12f968467e1e3cec24191b72bfe84f7aeed3ce422e1a60bb4f1454f2b89b8ee
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
+
+Package: newstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 101
+Filename: pool/newstuff_1.0_i386.deb
+Size: 101100
+MD5sum: 311aeeadf78324aaff1ceaf3e1f76671
+SHA1: 3c695e028f7a1ae324deeddaaa1242desa81088c
+SHA256: b46fd154615edefab321cc56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool and shiny new stuff
+ This package will appear in the next mirror update
+Description-md5: d5f89fbbc2ac69c43d7e4c9b67d82b6b
diff --git a/test/integration/Packages-policy-pinning b/test/integration/Packages-policy-pinning
new file mode 100644
index 0000000..a9334e9
--- /dev/null
+++ b/test/integration/Packages-policy-pinning
@@ -0,0 +1,12 @@
+Package: oldstuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 100
+Filename: pool/oldstuff_1.0_i386.deb
+Size: 100000
+MD5sum: 311aeeadf78324aaff54c9b4e1f76671
+SHA1: 3c695e028f74d5c544deeddaaa1242desa81088c
+SHA256: b46fd1546151c545fe4bfa56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some old but cool stuff
+ This package will disappear in the next mirror update
diff --git a/test/integration/Packages-releasefile-verification b/test/integration/Packages-releasefile-verification
new file mode 100644
index 0000000..c013dcb
--- /dev/null
+++ b/test/integration/Packages-releasefile-verification
@@ -0,0 +1,20 @@
+Package: apt
+Version: 0.7.25.3
+Architecture: i386
+Maintainer: APT Development Team <deity@lists.debian.org>
+Installed-Size: 5244
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.9-6-4.8
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Filename: apt.deb
+Size: 3
+MD5sum: 583f72a833c7dfd63c03edba3776247a
+SHA256: 5009a047a11fbd680bb40d2f23cd3fcd626ac2d672c38e16f53bd622c3961534
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
diff --git a/test/integration/Packages-releasefile-verification-new b/test/integration/Packages-releasefile-verification-new
new file mode 100644
index 0000000..ca2657f
--- /dev/null
+++ b/test/integration/Packages-releasefile-verification-new
@@ -0,0 +1,23 @@
+Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5672
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.0~pre1
+Replaces: manpages-pl (<< 20060617-3~)
+Provides: libapt-pkg4.10
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conflicts: python-apt (<< 0.7.93.2~)
+Filename: apt.deb
+Size: 3
+MD5sum: 583f72a833c7dfd63c03edba3776247a
+SHA256: 5009a047a11fbd680bb40d2f23cd3fcd626ac2d672c38e16f53bd622c3961534
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c
diff --git a/test/integration/Packages-ubuntu-bug-614993 b/test/integration/Packages-ubuntu-bug-614993
new file mode 100644
index 0000000..f1d4593
--- /dev/null
+++ b/test/integration/Packages-ubuntu-bug-614993
@@ -0,0 +1,1819 @@
+Package: libx11-xcb1
+Priority: optional
+Section: libs
+Installed-Size: 184
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libx11
+Version: 2:1.3.3-3ubuntu1
+Depends: libc6 (>= 2.2.5), libx11-6
+Conflicts: libx11-6 (<< 2:1.1)
+Filename: pool/main/libx/libx11/libx11-xcb1_1.3.3-3ubuntu1_amd64.deb
+Size: 90286
+MD5sum: 56c300a1110d9b08ab7760e375724034
+SHA1: 81fd3a089e0141236ac4dd49e98f58d7b6db3af3
+SHA256: 97a7b225bbccc6a64e2264e7ca53bb585e12982e037d26f1b22fae2c79127dc0
+Description: Xlib/XCB interface library
+ libX11-xcb provides functions needed by clients which take advantage of
+ Xlib/XCB to mix calls to both Xlib and XCB over the same X connection.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ More information about XCB can be found at:
+ <URL:http://xcb.freedesktop.org>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libxcb-aux0
+Priority: extra
+Section: libdevel
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Julien Danjou <acid@debian.org>
+Architecture: amd64
+Source: xcb-util
+Version: 0.3.6-1build1
+Depends: libc6 (>= 2.2.5), libxcb1 (>= 0)
+Filename: pool/main/x/xcb-util/libxcb-aux0_0.3.6-1build1_amd64.deb
+Size: 8962
+MD5sum: a35d570e9231a01ff6de0ec872638787
+SHA1: c551ed6a9b1b6c1d201537b85f4003926aa2833d
+SHA256: 047ee120e83adbed4c57ff175e59ca02a772e7d4a5d1d014ff72d6f0da41e9ca
+Description: utility libraries for X C Binding -- aux
+ This package contains the library files needed to run software using
+ libxcb-aux, providing convenient access to connection setup and some
+ core requests.
+ .
+ The xcb-util module provides a number of libraries which sit on top of
+ libxcb, the core X protocol library, and some of the extension
+ libraries. These experimental libraries provide convenience functions
+ and interfaces which make the raw X protocol more usable. Some of the
+ libraries also provide client-side code which is not strictly part of
+ the X protocol but which have traditionally been provided by Xlib.
+Homepage: http://xcb.freedesktop.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, mythbuntu-frontend, ubuntu-netbook
+
+Package: libxcb-dri2-0
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: amd64
+Source: libxcb
+Version: 1.6-1
+Depends: libc6 (>= 2.2.5), libxcb1 (>= 0)
+Filename: pool/main/libx/libxcb/libxcb-dri2-0_1.6-1_amd64.deb
+Size: 10130
+MD5sum: 13f3278d872f700c5e2363cab9feb5db
+SHA1: cc51153c443558292604acb98043517075332263
+SHA256: 2fe00f4216eb408b0e70ffd7681b81fc750a242661790c636998dfe5738be05d
+Description: X C Binding, dri2 extension
+ This package contains the library files needed to run software using
+ libxcb-dri2, the dri2 extension for the X C Binding.
+ .
+ The XCB library provides an interface to the X Window System protocol,
+ designed to replace the Xlib interface. XCB provides several advantages over
+ Xlib:
+ .
+ * Size: small library and lower memory footprint
+ * Latency hiding: batch several requests and wait for the replies later
+ * Direct protocol access: one-to-one mapping between interface and protocol
+ * Thread support: access XCB from multiple threads, with no explicit locking
+ * Easy creation of new extensions: automatically generates interface from
+ machine-parsable protocol descriptions
+Homepage: http://xcb.freedesktop.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+
+Package: libmtdev1
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: mtdev
+Version: 1.0.9-0ubuntu1
+Depends: libc6 (>= 2.4)
+Filename: pool/main/m/mtdev/libmtdev1_1.0.9-0ubuntu1_amd64.deb
+Size: 10980
+MD5sum: 694e8cee8d0d21591fa308ddd1b1e41f
+SHA1: 7ea377dec6755a3e659c116a989145609fc7e9a9
+SHA256: 88075b13ad116e38d33c84e63fa5e6195c84df16f4741c4054520618d7f17797
+Description: Multitouch Protocol Translation Library - shared library
+ libmtdev is a library for translating evdev multitouch events using the legacy
+ protocol to the new multitouch slots protocol. This is necessary for kernel
+ drivers that have not been updated to use the newer protocol.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libutouch-grail1
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: utouch-grail
+Version: 1.0.11-0ubuntu1
+Depends: libc6 (>= 2.4), libmtdev1 (>= 1.0.8)
+Breaks: libutouch-geis1 (<= 1.0.8), xserver-xorg-input-gevdev (<= 1:2.3.2-6ubuntu1)
+Filename: pool/main/u/utouch-grail/libutouch-grail1_1.0.11-0ubuntu1_amd64.deb
+Size: 15360
+MD5sum: 210ad74aa06bf676d9ab0200fc2a1d19
+SHA1: 734014bca516535b85b3e3eb5f76734d1dca066a
+SHA256: 0905710584348b58ee88f520c874d4d5198b6be38daff8a761ad263b0c350a6a
+Description: Gesture Recognition And Instantiation Library
+ This library consists of an interface and tools for handling gesture
+ recognition and gesture instantiation. Applications can use the grail
+ callbacks to receive gesture primitives and raw input events from the
+ underlying kernel device.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: libdrm-intel1
+Priority: required
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.1)
+Filename: pool/main/libd/libdrm/libdrm-intel1_2.4.21-1ubuntu2_amd64.deb
+Size: 33178
+MD5sum: 2d647434700294708fcaa815bc75ca07
+SHA1: f808f92ca2c86d07e654f92cffe6a806bef53c64
+SHA256: 069eb06161ca6e17d29a8cc67c7eac21c6f935292d4f208e802d595da521566b
+Description: Userspace interface to intel-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the intel-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm-nouveau1
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Breaks: xserver-xorg-video-nouveau (<< 1:0.0.16)
+Filename: pool/main/libd/libdrm/libdrm-nouveau1_2.4.21-1ubuntu2_amd64.deb
+Size: 22290
+MD5sum: dd13107a609c4ef288aef8e0cf7c6bbe
+SHA1: 3c17fcf1421f2585f3b6385eb434f8caa2ee56b8
+SHA256: f02f625b172a871e2c93a01234cb608e2c21ba21a6f76d48fff0dc743156d3a5
+Description: Userspace interface to nouveau-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the nouveau-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm-radeon1
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Filename: pool/main/libd/libdrm/libdrm-radeon1_2.4.21-1ubuntu2_amd64.deb
+Size: 23196
+MD5sum: 7d8c85369e9d9deaaff960715fb8cb5d
+SHA1: b39304c4f1cce9c00b2c4e01845cc03760d97ca5
+SHA256: c282a95b5ee4361c3e1fd49cfe5f862ada91a9caa9c338b634aab2b792707800
+Description: Userspace interface to radeon-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the radeon-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libdrm2
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.21-1ubuntu2
+Depends: libc6 (>= 2.7)
+Filename: pool/main/libd/libdrm/libdrm2_2.4.21-1ubuntu2_amd64.deb
+Size: 32386
+MD5sum: a66179dec8fa282a72d323cb85386a0c
+SHA1: b06c48d149ad466c4e0c1f316573d8faa2924210
+SHA256: af7beb6b31b54371fdc6ec3c624199b323ac80d5043e4c5931ba1bf740462b10
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: minimal
+
+Package: libxfont1
+Priority: optional
+Section: libs
+Installed-Size: 332
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: libxfont
+Version: 1:1.4.2-1
+Depends: libbz2-1.0, libc6 (>= 2.4), libfontenc1, libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4)
+Conflicts: xprint (<< 2:1.6.0-1)
+Filename: pool/main/libx/libxfont/libxfont1_1.4.2-1_amd64.deb
+Size: 156844
+MD5sum: 4ad60ad1f3096f03eabcf30dedb2c2ce
+SHA1: 2a1e83c35583fe2f8351783a160326b48c4559b3
+SHA256: 97c121164fdef2e6f7332c27422fc07d2d7b3f137415b3ec3a6083e471f3290e
+Description: X11 font rasterisation library
+ libXfont provides various services for X servers, most notably font
+ selection and rasterisation (through external libraries).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfont
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, eucalyptus-cloud, eucalyptus-storage, print-server, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-common
+Priority: optional
+Section: x11
+Installed-Size: 176
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Replaces: xserver-xorg-core (<< 2:1.5.2)
+Depends: x11-common, xkb-data, x11-xkb-utils
+Recommends: xfonts-base, xauth
+Filename: pool/main/x/xorg-server/xserver-common_1.9.0-0ubuntu2_all.deb
+Size: 86390
+MD5sum: 278a92c5c0b5dc2189ab7b7493b69add
+SHA1: 46734bd7889084fe8a296ac50ed6c81bbdcb322a
+SHA256: f2757c722684626f21b638fe8de2347c3a4ce5e686af5d6ab38a8e12755762b1
+Description: common files used by various X servers
+ This package provides files necessary for all X.Org based X servers.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xephyr
+Priority: optional
+Section: x11
+Installed-Size: 2164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: xserver-common (>= 2:1.9.0-0ubuntu2), libc6 (>= 2.4), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libgl1-mesa-glx | libgl1, libpixman-1-0 (>= 0.15.16), libx11-6, libxau6, libxdmcp6, libxext6, libxfont1 (>= 1:1.4.2), libxv1
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Filename: pool/main/x/xorg-server/xserver-xephyr_1.9.0-0ubuntu2_amd64.deb
+Size: 1005784
+MD5sum: 93f42d8e5a4ccaac790908d9490aff49
+SHA1: 8c657f7ed9a5fea1bc72c341d690f89f7b2be852
+SHA256: 6ab0c82b3082bf3acfc9b54f63dbb472c55ca69b1dab06fc27e34ffd145c3881
+Description: nested X server
+ Xephyr is an X server that can be run inside another X server,
+ much like Xnest. It is based on the kdrive X server, and as a
+ result it supports newer extensions than Xnest, including render and
+ composite.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: edubuntu-desktop-gnome
+
+Package: xserver-xorg
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Replaces: x11-common (<< 1:7.3+11), xserver-common (<< 7)
+Depends: xserver-xorg-core (>= 2:1.8.99.905), xserver-xorg-video-all | xserver-xorg-video-8, xserver-xorg-input-all | xserver-xorg-input-11, xserver-xorg-input-evdev, libc6 (>= 2.7), xkb-data (>= 1.4), x11-xkb-utils, console-setup
+Recommends: libgl1-mesa-dri
+Conflicts: x11-common (<< 1:7.3+11), xserver-common (<< 7), xserver-xfree86 (<< 6.8.2.dfsg.1-1)
+Filename: pool/main/x/xorg/xserver-xorg_7.5+6ubuntu3_amd64.deb
+Size: 20560
+MD5sum: 5f4f0c969d2758cee7ce5244917df903
+SHA1: 58290e5672b6e3223dc63db33b3196d3eaa44df6
+SHA256: 35b04c220fe1b76f52fca42bb97abeed2c9e8554ff280e42f7c4ad3017985632
+Description: the X.Org X server
+ This package depends on the full suite of the server and drivers for the
+ X.Org X server. It does not provide the actual server itself.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-core
+Priority: optional
+Section: x11
+Installed-Size: 4108
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Provides: xorg-input-abi-11.0, xorg-video-abi-8.0, xserver
+Depends: xserver-common (>= 2:1.9.0-0ubuntu2), xserver-xorg, udev (>= 149), libc6 (>= 2.7), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libpciaccess0 (>= 0.10.7), libpixman-1-0 (>= 0.15.16), libudev0 (>= 147), libxau6, libxdmcp6, libxfont1 (>= 1:1.4.2)
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Breaks: xserver-xorg-input, xserver-xorg-input-2, xserver-xorg-input-2.1, xserver-xorg-input-4, xserver-xorg-input-7, xserver-xorg-input-joystick (<= 1:1.5.0-3), xserver-xorg-input-synaptics (<= 1.2.2-1ubuntu4), xserver-xorg-input-tslib (<= 0.0.6-3), xserver-xorg-input-vmmouse (<= 1:12.6.5-4ubuntu2), xserver-xorg-input-wacom (<< 0.7.8), xserver-xorg-video, xserver-xorg-video-1.0, xserver-xorg-video-1.9, xserver-xorg-video-2, xserver-xorg-video-4, xserver-xorg-video-5, xserver-xorg-video-6
+Filename: pool/main/x/xorg-server/xserver-xorg-core_1.9.0-0ubuntu2_amd64.deb
+Size: 1722082
+MD5sum: 22b1e5dcaa5a40520eb1c76996acde89
+SHA1: 26d0082a04d7c30791a8535643c08bd66cc71085
+SHA256: 073eacfdf298a76287cf9676212ac94eda9a2f7c9c1b62fc9ced3e110c06e88d
+Description: Xorg X server - core server
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-core-dbg
+Priority: extra
+Section: x11
+Installed-Size: 17404
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: xserver-xorg-core (= 2:1.9.0-0ubuntu2)
+Filename: pool/main/x/xorg-server/xserver-xorg-core-dbg_1.9.0-0ubuntu2_amd64.deb
+Size: 6305640
+MD5sum: fe080ab7fa64b8dc8446b6fe82af196d
+SHA1: ae450cf592342969903a42792d07914d2717f8dd
+SHA256: fd4007f1de919f1ed8f9e8bfe0235bdbbe14e3ba78bf3cd010f43d1c64a83d50
+Description: Xorg - the X.Org X server (debugging symbols)
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ This package provides debugging symbols for the Xorg X server and associated
+ modules.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-dev
+Priority: optional
+Section: x11
+Installed-Size: 1632
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.9.0-0ubuntu2
+Depends: libpixman-1-dev (>= 0.15.20), x11proto-core-dev (>= 7.0.17), x11proto-input-dev (>= 1.9.99.902), x11proto-xext-dev (>= 7.0.99.3), x11proto-video-dev, x11proto-randr-dev (>= 1.2.99.3), x11proto-render-dev (>= 2:0.11), x11proto-dri2-dev (>= 2.3), x11proto-fonts-dev, x11proto-xinerama-dev, x11proto-kb-dev, libxkbfile-dev, libpciaccess-dev
+Filename: pool/main/x/xorg-server/xserver-xorg-dev_1.9.0-0ubuntu2_amd64.deb
+Size: 315992
+MD5sum: 622dad3611cef47cad83b4a3c82c0a78
+SHA1: 35237aa66771f253e22ab46ed711d7feafc3e284
+SHA256: 94114cc3aa3e9601db43d92df263715c3141922ef04ce1886a56a8842765d5f2
+Description: Xorg X server - development files
+ This package provides development files for the X.Org ('Xorg') X server.
+ This is not quite the same as the DDK (Driver Development Kit) from the
+ XFree86 4.x and X.Org 6.7, 6.8 and 6.9 series of servers; it provides
+ headers and a pkg-config file for drivers using autotools to build
+ against.
+ .
+ Unless you are developing or building a driver, you probably want
+ xserver-xorg and/or xserver-xorg-core instead.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xserver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-all
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Depends: xserver-xorg-input-evdev, xserver-xorg-input-synaptics, xserver-xorg-input-vmmouse, xserver-xorg-input-wacom, x11-common
+Filename: pool/main/x/xorg/xserver-xorg-input-all_7.5+6ubuntu3_amd64.deb
+Size: 1014
+MD5sum: 33d323837d8dd94ec2e63b4944316c83
+SHA1: 27b0484d0282b728bd9905115da55548c2884008
+SHA256: 61338a072689a5c1565a1968811c87e370e37facb12f4055b64f8b65e35f48ea
+Description: the X.Org X server -- input driver metapackage
+ This package depends on the full suite of input drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-evdev
+Priority: optional
+Section: x11
+Installed-Size: 168
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.3.2-6ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-input-gevdev
+Provides: xserver-xorg-input-11
+Depends: libc6 (>= 2.7), libutouch-grail1 (>= 1.0.10), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3)
+Conflicts: xserver-xorg-input-gevdev
+Filename: pool/main/x/xserver-xorg-input-evdev/xserver-xorg-input-evdev_2.3.2-6ubuntu1_amd64.deb
+Size: 77602
+MD5sum: aa833ccaa08510e2cf02182157f49be4
+SHA1: 1b35f21aab75e0063a36bca95ecd36e4ca7cd6ef
+SHA256: 8d600abfff74e13126c3b61530e782aa9ab88a8aeb0a1eeb42e6ebe2aafe314e
+Description: X.Org X server -- evdev input driver
+ This package provides the driver for input devices using evdev, the Linux
+ kernel's event delivery mechanism. This driver allows for multiple keyboards
+ and mice to be treated as separate input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-evdev-dev
+Priority: optional
+Section: libdevel
+Installed-Size: 64
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xserver-xorg-input-evdev
+Version: 1:2.3.2-6ubuntu1
+Filename: pool/main/x/xserver-xorg-input-evdev/xserver-xorg-input-evdev-dev_2.3.2-6ubuntu1_all.deb
+Size: 8784
+MD5sum: fa1d8161aa475e16423413110209e183
+SHA1: 6781c1afc65ab072ff3dba19b691dcb2d2d49716
+SHA256: a5f5ec31050ba190900d71527717aff06270fd9b6ee93352df745231fc95147c
+Description: X.Org X server -- evdev input driver (development headers)
+ This package provides the development headers for the evdev input driver
+ found in xserver-xorg-input-evdev. Non-developers likely have little use
+ for this package.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-mouse
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.5.0-2build1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xorg-driver-input, xserver-xorg-input-11
+Depends: libc6 (>= 2.7), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904)
+Filename: pool/main/x/xserver-xorg-input-mouse/xserver-xorg-input-mouse_1.5.0-2build1_amd64.deb
+Size: 56550
+MD5sum: 3a94050557202448e164dc6aa2baa16d
+SHA1: 418432ceb03b803619743c0e90b8afd2c050d595
+SHA256: dec2aef614e6481ac91237e6ad43ef4101ab8d0c12af0281419cece33a1fab40
+Description: X.Org X server -- mouse input driver
+ This package provides the driver for mouse input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-mouse driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-synaptics
+Priority: optional
+Section: x11
+Installed-Size: 360
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1.2.2-2ubuntu3
+Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Provides: xfree86-driver-synaptics, xorg-driver-synaptics, xserver-xorg-input-11
+Depends: udev, libc6 (>= 2.4), libpciaccess0, libpixman-1-0, libx11-6, libxi6 (>= 2:1.2.0), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: gpointing-device-settings, touchfreeze
+Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Filename: pool/main/x/xserver-xorg-input-synaptics/xserver-xorg-input-synaptics_1.2.2-2ubuntu3_amd64.deb
+Size: 157472
+MD5sum: 208387c243ca97b983263f9ad1f997e4
+SHA1: 7c48f093dd3173afac8b7a44729828aad970173c
+SHA256: 9dbf323b790342bb5f3642104003acba7c2ce84279fcebfcafe9802cb872dd21
+Description: Synaptics TouchPad driver for X.Org server
+ This package provides an input driver for the X.Org X server to enable
+ advanced features of the Synaptics Touchpad including:
+ .
+ * Movement with adjustable, non-linear acceleration and speed
+ * Button events through short touching of the touchpad
+ * Double-Button events through double short touching of the touchpad
+ * Dragging through short touching and holding down the finger on the touchpad
+ * Middle and right button events on the upper and lower corner of the touchpad
+ * Vertical scrolling (button four and five events) through moving the finger
+ on the right side of the touchpad
+ * The up/down button sends button four/five events
+ * Horizontal scrolling (button six and seven events) through moving the finger
+ on the lower side of the touchpad
+ * The multi-buttons send button four/five events, and six/seven events for
+ horizontal scrolling
+ * Adjustable finger detection
+ * Multifinger taps: two finger for middle button and three finger for right
+ button events. (Needs hardware support. Not all models implement this
+ feature.)
+ * Run-time configuration using shared memory. This means you can change
+ parameter settings without restarting the X server (see synclient(1)).
+ * It also provides a daemon to disable touchpad while typing at the keyboard
+ and thus avoid unwanted mouse movements (see syndaemon(1)).
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-synaptics-dev
+Priority: optional
+Section: libdevel
+Installed-Size: 76
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xserver-xorg-input-synaptics
+Version: 1.2.2-2ubuntu3
+Depends: x11proto-core-dev
+Filename: pool/main/x/xserver-xorg-input-synaptics/xserver-xorg-input-synaptics-dev_1.2.2-2ubuntu3_all.deb
+Size: 16926
+MD5sum: 96c22d1c68e9037ee97b336edc572869
+SHA1: 8d921f825eaf88f55ca82dcb8271e71c0a3c36da
+SHA256: 62879769c7ea06cc3cc4952a3c80175ffd45a0883c661251ef869b4318132e16
+Description: Synaptics TouchPad driver for X.Org server (development headers)
+ This package contains the development headers for the Synaptics input
+ driver found in xserver-xorg-input-synaptics. Non-developers likely have
+ little use for this package.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-input-vmmouse
+Priority: optional
+Section: x11
+Installed-Size: 172
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:12.6.9-2build1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-11
+Depends: libc6 (>= 2.7), xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904), xserver-xorg-input-mouse, udev
+Filename: pool/main/x/xserver-xorg-input-vmmouse/xserver-xorg-input-vmmouse_12.6.9-2build1_amd64.deb
+Size: 31278
+MD5sum: 3a096dec7240837fec1bcdeece0d3523
+SHA1: 3c881221ccc56d3958d91da676f2ed177a4c31f6
+SHA256: 875498c91b8c3333a3277de41feba8ab9294912604d35aad3b35c3077ed18b5c
+Description: X.Org X server -- VMMouse input driver to use with VMWare
+ This package provides the driver for the X11 vmmouse input device.
+ .
+ The VMMouse driver enables support for the special VMMouse protocol
+ that is provided by VMware virtual machines to give absolute pointer
+ positioning.
+ .
+ The vmmouse driver is capable of falling back to the standard "mouse"
+ driver if a VMware virtual machine is not detected. This allows for
+ dual-booting of an operating system from a virtual machine to real hardware
+ without having to edit xorg.conf every time.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-input-vmmouse driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-input-wacom
+Priority: optional
+Section: x11
+Installed-Size: 308
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Ron Lee <ron@debian.org>
+Architecture: amd64
+Source: xf86-input-wacom
+Version: 1:0.10.8-0ubuntu1
+Replaces: wacom-tools (<< 0.10.0)
+Provides: xorg-driver-input, xserver-xorg-input-11
+Depends: xorg-input-abi-11.0, xserver-xorg-core (>= 2:1.8.99.904), libc6 (>= 2.7), libx11-6, libxi6 (>= 2:1.2.0)
+Suggests: xinput
+Conflicts: wacom-tools (<< 0.10.0)
+Filename: pool/main/x/xf86-input-wacom/xserver-xorg-input-wacom_0.10.8-0ubuntu1_amd64.deb
+Size: 85548
+MD5sum: ac0e00807ae94d5f2f7d23be578abb12
+SHA1: 1c6e1c7c12363517dc956bff94fd3137ccdc9c8f
+SHA256: 185bdca5588688037e8f9303dc3011db4b459c15bd57e14610414a7b6cc31178
+Description: X.Org X server -- Wacom input driver
+ This package provides the X.Org driver for Wacom tablet devices.
+Homepage: http://linuxwacom.sf.net
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-all
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+6ubuntu3
+Replaces: xserver-xorg-driver-all
+Depends: xserver-xorg-video-apm, xserver-xorg-video-ark, xserver-xorg-video-ati, xserver-xorg-video-chips, xserver-xorg-video-cirrus, xserver-xorg-video-fbdev, xserver-xorg-video-i128, xserver-xorg-video-intel, xserver-xorg-video-mga, xserver-xorg-video-neomagic, xserver-xorg-video-nouveau, xserver-xorg-video-nv, xserver-xorg-video-rendition, xserver-xorg-video-s3, xserver-xorg-video-s3virge, xserver-xorg-video-savage, xserver-xorg-video-siliconmotion, xserver-xorg-video-sis, xserver-xorg-video-sisusb, xserver-xorg-video-tdfx, xserver-xorg-video-trident, xserver-xorg-video-tseng, xserver-xorg-video-vesa, xserver-xorg-video-openchrome, xserver-xorg-video-voodoo, xserver-xorg-video-vmware, x11-common
+Conflicts: xserver-xorg-driver-all
+Filename: pool/main/x/xorg/xserver-xorg-video-all_7.5+6ubuntu3_amd64.deb
+Size: 1146
+MD5sum: f7bc46f83b91857efd62086ccce6e137
+SHA1: 19b30dfd8e98e0dd16921f3715ecc2c4bfef15c0
+SHA256: b70a091c6960244112c79f6ddf7ada8715b316da2b3df7931df86d3234893b08
+Description: the X.Org X server -- output driver metapackage
+ This package depends on the full suite of output drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-apm
+Priority: optional
+Section: x11
+Installed-Size: 220
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.3-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-apm
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-apm
+Filename: pool/main/x/xserver-xorg-video-apm/xserver-xorg-video-apm_1.2.3-0ubuntu1_amd64.deb
+Size: 75166
+MD5sum: d681c49714651d631bfdce3c8f8b4876
+SHA1: db29d20c5beb03f26d8fd0d0ff3bf6ad984fcde8
+SHA256: 0d0c328570db8eee1445bbd83848a7f7be1c4ef31be629b273758f027347c910
+Description: X.Org X server -- APM display driver
+ This package provides the driver for the Alliance Pro Motion family
+ of video cards; specifically, the 6420, 6422, AT24, AT25, and AT3D
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-apm driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ark
+Priority: optional
+Section: x11
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.7.2-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-ark
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-ark
+Filename: pool/main/x/xserver-xorg-video-ark/xserver-xorg-video-ark_0.7.2-2build2_amd64.deb
+Size: 18056
+MD5sum: 2805bc3e42b20b9212e8c2d3e904c8d1
+SHA1: bbdc07c1f02e15ccd22414dc5e6c2f3e389f7427
+SHA256: 683b9c5d142d4a9b21cf3a0a930cddf5ad59b5cff91a134728c9cfd74aabbfd5
+Description: X.Org X server -- ark display driver
+ This package provides the driver for the ark family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ark driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ati
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:6.13.1-1ubuntu4
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), libpciaccess0, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3), xserver-xorg-video-r128, xserver-xorg-video-mach64, xserver-xorg-video-radeon
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-ati_6.13.1-1ubuntu4_amd64.deb
+Size: 21368
+MD5sum: 91f93ce4df4bc83846763a00ef3c51dc
+SHA1: 47ff08c9ed28c3e3275b0710e373b95608f831a0
+SHA256: 87e558ebd7b1214425eaa4a3afed11a86c39058fee5d19bd19b1ea0f72ff6090
+Description: X.Org X server -- AMD/ATI display driver wrapper
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-ati-dbg
+Priority: extra
+Section: x11
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Depends: xserver-xorg-video-ati (= 1:6.13.1-1ubuntu4), xserver-xorg-video-mach64-dbg, xserver-xorg-video-r128-dbg, xserver-xorg-video-radeon-dbg
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-ati-dbg_6.13.1-1ubuntu4_amd64.deb
+Size: 25140
+MD5sum: 79ca46474fe815bc58ade6149c5213f0
+SHA1: 741ef65d6beb94f49213432bfb82dbfeeb70a375
+SHA256: 67c0f463dd9357578395832db8e432344d1639df41f6c80b010acb75b0af998b
+Description: X.Org X server -- AMD/ATI display driver wrapper (debugging symbols)
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ This package provides debugging symbols for this X.org X driver wrapper
+ and brings debugging symbols for sub-drivers through package dependencies.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-chips
+Priority: optional
+Section: x11
+Installed-Size: 236
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-chips
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-chips
+Filename: pool/main/x/xserver-xorg-video-chips/xserver-xorg-video-chips_1.2.3-1_amd64.deb
+Size: 84812
+MD5sum: 6b6abc6c3922bda0d0c35d24ebbb2edd
+SHA1: 92f73bb35f9f1e22d558c19c7de7c8388abf3702
+SHA256: 6f5dfd337a75db61a82704edbfadd063bce55970f7cfcb875d022d217ed76d09
+Description: X.Org X server -- Chips display driver
+ This package provides the driver for the Chips & Technologies family
+ of video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-chips driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-cirrus
+Priority: optional
+Section: x11
+Installed-Size: 164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.2-2ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-cirrus
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-cirrus
+Filename: pool/main/x/xserver-xorg-video-cirrus/xserver-xorg-video-cirrus_1.3.2-2ubuntu3_amd64.deb
+Size: 48284
+MD5sum: b206bde81987c40ec2acefafe1d02151
+SHA1: cc2cd0482c1f002901645d52955a64790af677e6
+SHA256: 9c763caf29269b89b60ccd2c338fb282ee035447930366dca03461a9cc95911a
+Description: X.Org X server -- Cirrus display driver
+ This package provides the driver for the Cirrus Logic family of video
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-cirrus driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-fbdev
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.4.2-2ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-fbdev
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-fbdev
+Filename: pool/main/x/xserver-xorg-video-fbdev/xserver-xorg-video-fbdev_0.4.2-2ubuntu2_amd64.deb
+Size: 22766
+MD5sum: c3595fdebc8771a1c1bb46c8ad703204
+SHA1: e6702adf49e636fe1afdecde9734525e39510367
+SHA256: fe8739839a641e80a688ee08c01a9fde82ece14bdde22fcd8d5b2bbed60aa49e
+Description: X.Org X server -- fbdev display driver
+ This package provides the driver for the Linux framebuffer device (aka
+ 'fbdev').
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-fbdev driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-i128
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i128
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-i128
+Filename: pool/main/x/xserver-xorg-video-i128/xserver-xorg-video-i128_1.3.3-2build2_amd64.deb
+Size: 35928
+MD5sum: 92cdb3768406395d7dc38c8d5254a24b
+SHA1: 4dd5b6fab1bec5e81d84d42f03286518fbbb603f
+SHA256: c79f25b4fd0d7e0a731ae32eb1ac376c32a5bf297d96024cc82aee7669e05cbc
+Description: X.Org X server -- i128 display driver
+ This package provides the driver for Number 9 Imagine (I128) video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-i128 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-i740
+Priority: optional
+Section: x11
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.2-2build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i740
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.3.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-i740
+Filename: pool/main/x/xserver-xorg-video-i740/xserver-xorg-video-i740_1.3.2-2build1_amd64.deb
+Size: 33110
+MD5sum: affdf50d2cb8d927caa1458a00167a04
+SHA1: 72ad34b92111061f3e1c2d9e5e1b2ab5030419e8
+SHA256: a9d0cd04ba1b145ae345d396e8113c5ba9391662e53928407727ab9886cb6083
+Description: X.Org X server -- i740 display driver
+ This package provides the driver for the Intel i740 family of video chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-i740 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-intel
+Priority: optional
+Section: x11
+Installed-Size: 1020
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 2:2.12.0-1ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.21), libdrm2 (>= 2.4.17), libpciaccess0 (>= 0.8.0+git20071002), libx11-6, libx11-xcb1, libxcb-aux0 (>= 0.3.6), libxcb-dri2-0, libxcb1, libxext6, libxfixes3 (>= 1:4.0.1), libxv1, libxvmc1, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Recommends: intel-gpu-tools
+Conflicts: 915resolution, xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.12.0-1ubuntu3_amd64.deb
+Size: 263918
+MD5sum: 982a8ed2c2b4499d6515cbd0ed345d4c
+SHA1: 0a364cdb73efc9229517d4f15c8fd2e07d81d76b
+SHA256: 570204fc03af24bdb3a5ed733b85575e519060719807d0f841c02d619b5041b6
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+ This package provides the driver for the Intel i8xx and i9xx family
+ of chipsets, including i810, i815, i830, i845, i855, i865, i915, i945
+ and i965 series chips.
+ .
+ This package also provides XvMC (XVideo Motion Compensation) drivers
+ for i810/i815 and i9xx and newer chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-intel driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-intel-dbg
+Priority: extra
+Section: x11
+Installed-Size: 2012
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-intel
+Version: 2:2.12.0-1ubuntu3
+Depends: xserver-xorg-video-intel (= 2:2.12.0-1ubuntu3)
+Recommends: intel-gpu-tools
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel-dbg_2.12.0-1ubuntu3_amd64.deb
+Size: 852222
+MD5sum: 1e2b9de8e535a1e79e28c0b365530054
+SHA1: e62911adc3695e111d21f152ee5d443f3388191d
+SHA256: ec72365988119977ae92c7ed651773a2d46db2654e645b3bd9f4d894b0cc9230
+Description: X.Org X server -- Intel i8xx, i9xx display driver (debug symbols)
+ This driver provides support for the Intel i8xx and i9xx family of chipsets,
+ including i810, i815, i830, i845, i855, i865, i915, and i945 series chips.
+ .
+ This package provides debugging symbols for this Xorg X driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-mach64
+Priority: optional
+Section: x11
+Installed-Size: 388
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 6.8.2-3build2
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Filename: pool/main/x/xserver-xorg-video-mach64/xserver-xorg-video-mach64_6.8.2-3build2_amd64.deb
+Size: 212368
+MD5sum: 293e572c7b07db7242cc3c90053ae082
+SHA1: 18236fb1abc2d6077ea9e9c2a60d0a7c7faa7723
+SHA256: 6f9f3276cdc916e4808db47b61d93ef8ff1f60f4f0bc95521446d2d448018f14
+Description: X.Org X server -- ATI Mach64 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-mach64 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-mach64-dbg
+Priority: extra
+Section: x11
+Installed-Size: 1916
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-mach64
+Version: 6.8.2-3build2
+Depends: xserver-xorg-video-mach64 (= 6.8.2-3build2)
+Filename: pool/main/x/xserver-xorg-video-mach64/xserver-xorg-video-mach64-dbg_6.8.2-3build2_amd64.deb
+Size: 949534
+MD5sum: 13879b58283b1afc6760cd9fe90dd1e1
+SHA1: 81fc81d66378f12d7e98cbd1fb82ead8ac22217f
+SHA256: ac66a5f2d697a533727a95d07bafe0416053af8815786c4e10fa2e1479887586
+Description: X.Org X server -- ATI display driver (debugging symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ This package provides debugging symbols for the Xorg X server ATI Mach64
+ display driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-mga
+Priority: optional
+Section: x11
+Installed-Size: 284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.4.11.dfsg-4build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-mga
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-driver-mga
+Filename: pool/main/x/xserver-xorg-video-mga/xserver-xorg-video-mga_1.4.11.dfsg-4build1_amd64.deb
+Size: 116770
+MD5sum: e7aad613e6d8566daee31386aaba9409
+SHA1: 7c9cdddc5eb80d338164e5c5c34337d82b9ca687
+SHA256: a7a02db1b18fb648cbe723666705128b912f97c12b0d471049f2b841ea248077
+Description: X.Org X server -- MGA display driver
+ This package provides the driver for the Matrox MGA family of chipsets,
+ including Matrox Millennium and Mystique cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-mga driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-neomagic
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-3build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-neomagic
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-neomagic
+Filename: pool/main/x/xserver-xorg-video-neomagic/xserver-xorg-video-neomagic_1.2.4-3build2_amd64.deb
+Size: 46042
+MD5sum: 883c95770dec8473fc44f0560937bde6
+SHA1: 47add4ef96ffcd0eab086fb5c09412e769088ae3
+SHA256: f560066d2d7de1ba74b71382169f6a2402308822f1a07fbc5bbad30a3b99d846
+Description: X.Org X server -- Neomagic display driver
+ This package provides the driver for Neomagic MagicGraph chipsets, which are
+ commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-neomagic driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-nouveau
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.0.16+git20100805+b96170a-0ubuntu1
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm-nouveau1 (>= 2.4.20-3~), libudev0 (>= 147), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Filename: pool/main/x/xserver-xorg-video-nouveau/xserver-xorg-video-nouveau_0.0.16+git20100805+b96170a-0ubuntu1_amd64.deb
+Size: 113304
+MD5sum: ade4a7afa72b9bfcea0cdaee5d18472e
+SHA1: f1cd5716bc00ffb0e55897a7aa9047a7537b9f42
+SHA256: 3f8a7eda416f6324495a74a04f3868a1251a1a4caa8ec002421adc0ec31268dc
+Description: X.Org X server -- Nouveau display driver (experimental)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package is built from the FreeDesktop.org xf86-video-nouveau driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-nouveau-dbg
+Priority: extra
+Section: debug
+Installed-Size: 1252
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-nouveau
+Version: 1:0.0.16+git20100805+b96170a-0ubuntu1
+Depends: xserver-xorg-video-nouveau (= 1:0.0.16+git20100805+b96170a-0ubuntu1)
+Filename: pool/main/x/xserver-xorg-video-nouveau/xserver-xorg-video-nouveau-dbg_0.0.16+git20100805+b96170a-0ubuntu1_amd64.deb
+Size: 522694
+MD5sum: d50e53f1832e2acd58ad5adc7c324a5a
+SHA1: 774ad386ef1cff56b346cde3b4c99d10f2bf2f93
+SHA256: 0e910561ac3913123fbaf1b8223f01d30c251138e7ba483e5ab77eb436988173
+Description: X.Org X server -- Nouveau display driver (debug symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package provides debugging symbols for this Xorg X driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-nv
+Priority: optional
+Section: x11
+Installed-Size: 288
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.1.17-3ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Provides: xf86-video-driver-riva128, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.4.3), libpciaccess0 (>= 0.8.0+git20071002), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Filename: pool/main/x/xserver-xorg-video-nv/xserver-xorg-video-nv_2.1.17-3ubuntu3_amd64.deb
+Size: 117648
+MD5sum: a04ed6409ff5fd3fb7beb30d922bb046
+SHA1: e817cab78e016a3c585ea77cb45f6de6b77a743a
+SHA256: 20a3fec830cf7ccafa31daf06a998fa550ed909359c4cf1f9590bd634030566e
+Description: X.Org X server -- NV display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Note that this is not the same as the binary-only 'nvidia' driver, which
+ adds 3D support, but is binary-only and not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-nv driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-openchrome
+Priority: optional
+Section: x11
+Installed-Size: 572
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.2.904+svn842-0ubuntu1
+Replaces: libchromexvmc1, libchromexvmcpro1
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6, libxext6, libxv1, libxvmc1, xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: libchromexvmc1, libchromexvmcpro1
+Filename: pool/main/x/xserver-xorg-video-openchrome/xserver-xorg-video-openchrome_0.2.904+svn842-0ubuntu1_amd64.deb
+Size: 195642
+MD5sum: 6b7ba8d6cea0d091c85c8677f57711df
+SHA1: 8aa58956d76f4177b30a64c2e36ad379371f3e93
+SHA256: 31476e9de3305a4c069f922a452be791f0ae8f015407125f8c09eeb6eebca0aa
+Description: X.Org X server -- VIA display driver
+ OpenChrome is a project for the development of free and open-source drivers
+ for the VIA UniChrome video chipsets.
+ .
+ Originally called the 'snapshot' release, since it was a snapshot of an
+ experimental branch of the unichrome cvs code, this is a continued development
+ of the open source unichrome driver (from http://unichrome.sf.net) which
+ also incorporates support for the unichrome-pro chipsets.
+ .
+ Support for hardware acceleration (XvMC) for all chipsets has subsequently
+ been ripped out of the unichrome.sf.net driver. Therefore your only option if
+ you wish to make use of the acceleration features of your VIA chip with free
+ and open-source drivers is to use this version of the driver.
+Homepage: http://www.openchrome.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-r128
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 6.8.1-3build1
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Filename: pool/main/x/xserver-xorg-video-r128/xserver-xorg-video-r128_6.8.1-3build1_amd64.deb
+Size: 179372
+MD5sum: bb1ced7f07b0df67f771005e2c778eb4
+SHA1: 622c864794e968edab180a122b7b158e0b8643b2
+SHA256: b3361b85020d8be4c3354872882c42debdc8d00a95a5ba6512c6418582334ae6
+Description: X.Org X server -- ATI r128 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-r128 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-r128-dbg
+Priority: extra
+Section: x11
+Installed-Size: 644
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-r128
+Version: 6.8.1-3build1
+Depends: xserver-xorg-video-r128 (= 6.8.1-3build1)
+Filename: pool/main/x/xserver-xorg-video-r128/xserver-xorg-video-r128-dbg_6.8.1-3build1_amd64.deb
+Size: 331644
+MD5sum: 53ba42b5e97d8ae41a1d0d28cbd9d737
+SHA1: 69d657096949d9028c2226e8af5facba4e7cf046
+SHA256: 2976cecbb0ad4f2837c801d3e5ef1791bf25743d7c5724e901538820aca6c64e
+Description: X.Org X server -- ATI r128 display driver (debugging symbols)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ This package provides debugging symbols for the Xorg X server ATI r128
+ display driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-radeon
+Priority: optional
+Section: x11
+Installed-Size: 1336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Replaces: xserver-xorg-video-ati (<= 1:6.8.191-1)
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.16), libpciaccess0 (>= 0.10.2), libpixman-1-0, libudev0 (>= 147), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.905-1ubuntu3)
+Suggests: firmware-linux
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-radeon_6.13.1-1ubuntu4_amd64.deb
+Size: 446340
+MD5sum: 5cbd60724971234d437d66152bd6f53d
+SHA1: 001f849426d1a04ce69ead3311ad72fa8a218223
+SHA256: b8ff48845a3c7ff814e3d3bd80e61d0c26d79deb8cde03f38462eb0be60060ab
+Description: X.Org X server -- AMD/ATI Radeon display driver
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ Note that this is not the same as the ATI-provided, binary-only, 'fglrx'
+ driver, which provides additional 3D functionality for some newer Radeon
+ cards, but is not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-radeon-dbg
+Priority: extra
+Section: x11
+Installed-Size: 3636
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.1-1ubuntu4
+Replaces: xserver-xorg-video-ati-dbg (<= 1:6.8.191-1)
+Depends: xserver-xorg-video-radeon (= 1:6.13.1-1ubuntu4)
+Filename: pool/main/x/xserver-xorg-video-ati/xserver-xorg-video-radeon-dbg_6.13.1-1ubuntu4_amd64.deb
+Size: 1622426
+MD5sum: 578f8055b90f4fffb4470536d0ee3816
+SHA1: ba25bf44d4db7e252452657beb9815fe498dc34b
+SHA256: 318952ff7e6ee96d41736388ba0aaab4c50de8faecb5263c7290ee761a926248
+Description: X.Org X server -- AMD/ATI Radeon display driver (debugging symbols)
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ This package provides debugging symbols for this X.org X driver.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: xserver-xorg-video-rendition
+Priority: optional
+Section: x11
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:4.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-rendition
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-rendition
+Filename: pool/main/x/xserver-xorg-video-rendition/xserver-xorg-video-rendition_4.2.4-0ubuntu1_amd64.deb
+Size: 32006
+MD5sum: 040f0b377d623d40fd33d3befcb12e77
+SHA1: a76e9747761a5225808bf96fcefdb0196d7c2540
+SHA256: 227537a5f5635d56e1b28f5455dda40ec01fbda04e67a6aab956cb455046dc16
+Description: X.Org X server -- Rendition display driver
+ This package provides the driver for the Rendition Verite family of chipsets,
+ commonly found in 3D accelerators such as the Creative 3D Blaster.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-rendition driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-s3
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.6.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-s3
+Filename: pool/main/x/xserver-xorg-video-s3/xserver-xorg-video-s3_0.6.3-2build2_amd64.deb
+Size: 43636
+MD5sum: 0318e0c20f32816e993115dcc15a9b6b
+SHA1: ff75f22d1054d73260f0968fd22ff978be6b215a
+SHA256: 04ccbe465f03732a9a30d80527dada04197035d2cde298e1dbc13bc2dc57f57e
+Description: X.Org X server -- legacy S3 display driver
+ This package provides the driver for certain legacy S3 video card chipsets,
+ including the Trio64 and 96x cards. It does not provide support for
+ ViRGE/Trio3D or Savage chipsets; support for these cards is provided by
+ xserver-xorg-video-s3virge and xserver-xorg-driver-savage, respectively.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-s3 driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-s3virge
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.10.4-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3virge
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-s3virge
+Filename: pool/main/x/xserver-xorg-video-s3virge/xserver-xorg-video-s3virge_1.10.4-2build2_amd64.deb
+Size: 48792
+MD5sum: 3da2e57ba1ae98bfe73473416ff030f5
+SHA1: 3296574523259de9c62dbbf771584b94f8d519c0
+SHA256: 0c4604ad77d36b8913e602372f1c4721c3ae8b2a187d2b3583ce4d53bba29e60
+Description: X.Org X server -- S3 ViRGE display driver
+ This package provides the driver for the S3 ViRGE and Trio3D family
+ of chipsets. It does not support Trio64 or S3 96x cards; support for
+ these can be found in the xserver-xorg-video-s3 package. Support for
+ S3 Savage chipsets can be found in xserver-xorg-video-savage.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-s3virge driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-savage
+Priority: optional
+Section: x11
+Installed-Size: 240
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.1-2ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-savage
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.3.4), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-savage
+Filename: pool/main/x/xserver-xorg-video-savage/xserver-xorg-video-savage_2.3.1-2ubuntu2_amd64.deb
+Size: 94910
+MD5sum: a57a30c861246f6c6d7bae87749bda30
+SHA1: aee96ab1c5817f881f7c30613efb6ff6c61590d4
+SHA256: 2465340a5607ff72b7088a4ad7a2f7254f02c4d17d0438c2823ff76c9ec5b01e
+Description: X.Org X server -- Savage display driver
+ This package provides the driver for the S3/VIA Savage/ProSavage/Twister family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-savage driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-siliconmotion
+Priority: optional
+Section: x11
+Installed-Size: 224
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.7.4-0ubuntu2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-siliconmotion
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-siliconmotion
+Filename: pool/main/x/xserver-xorg-video-siliconmotion/xserver-xorg-video-siliconmotion_1.7.4-0ubuntu2_amd64.deb
+Size: 89322
+MD5sum: 67bb40a85964b18216c30594cd260a6a
+SHA1: 39647585477ce517ce094fa346879cbe6c68a8f8
+SHA256: 9459d2f7d0be571881e18b7e24dae010f5a4d0c8210ea4bab306e476f77b7e63
+Description: X.Org X server -- SiliconMotion display driver
+ This package provides the driver for the SiliconMotion Lynx and Cougar family
+ of chipsets, commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-siliconmotion driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-sis
+Priority: optional
+Section: x11
+Installed-Size: 672
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.10.3-1build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sis
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-sis
+Filename: pool/main/x/xserver-xorg-video-sis/xserver-xorg-video-sis_0.10.3-1build1_amd64.deb
+Size: 297044
+MD5sum: 57f26ef639f3bc4dffce2e631f5edab3
+SHA1: fbeb26493846b2bd9f0dd306f411ded6b15e367a
+SHA256: b391011332abdff5241f0bef9b295a981d0f12ed575b34827cca3d22809b1d5a
+Description: X.Org X server -- SiS display driver
+ This package provides the driver for all SiS and XGI Volari cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-sis driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-sisusb
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:0.9.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sisusb
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-sisusb
+Filename: pool/main/x/xserver-xorg-video-sisusb/xserver-xorg-video-sisusb_0.9.4-0ubuntu1_amd64.deb
+Size: 49900
+MD5sum: e17bb0f9c542a826ae6ae9364e4651c0
+SHA1: 695515870f6b7c19e9e2b9a2c6aa63d188f9f0a3
+SHA256: fd6cfff10a85c55661e29b91aec99f538940d5cf55dc9fa138ea0dc83fda5b47
+Description: X.Org X server -- SiS USB display driver
+ This package provides the driver for SiS USB-attached video devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-sisusb driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-tdfx
+Priority: optional
+Section: x11
+Installed-Size: 152
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.4.3-2build2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tdfx
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-tdfx
+Filename: pool/main/x/xserver-xorg-video-tdfx/xserver-xorg-video-tdfx_1.4.3-2build2_amd64.deb
+Size: 46392
+MD5sum: 0adaf52a840699116197b796a8eb5492
+SHA1: f2026af7d453518705f049ef9750ba3f08df1c62
+SHA256: 620e5143574d0820641004e9c386748c35344bb3ec95833d884685c022dabe87
+Description: X.Org X server -- tdfx display driver
+ This package provides the driver for 3dfx Voodoo video cards and their
+ derivatives.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tdfx driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-trident
+Priority: optional
+Section: x11
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.3.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-trident
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.7), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-trident
+Filename: pool/main/x/xserver-xorg-video-trident/xserver-xorg-video-trident_1.3.4-0ubuntu1_amd64.deb
+Size: 82352
+MD5sum: 5389ff7eb1757dda92a35b8cec818b23
+SHA1: f731b2a951e5a64b990ddd88275a9158ddfdee30
+SHA256: 9757b882d296eed853c152d79546ad61eec9162abe0f32007dfa666c774cb408
+Description: X.Org X server -- Trident display driver
+ This package provides the driver for Trident Blade/Image/ProVidia/TGUI/9xxx
+ video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-trident driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-tseng
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tseng
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-tseng
+Filename: pool/main/x/xserver-xorg-video-tseng/xserver-xorg-video-tseng_1.2.4-0ubuntu1_amd64.deb
+Size: 37086
+MD5sum: 49454fcbc2be113329a7d7c4baa451ec
+SHA1: ba126de1cb3ce5f3348de11bc2aa5656b59b1e63
+SHA256: 66b15338b13dd04c4f987326103b14f647824c368f197db5cdbd4e8038b4e764
+Description: X.Org X server -- Tseng display driver
+ This package provides the driver for Tseng Labs cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-tseng driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:2.3.0-3build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vesa
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), libdrm2 (>= 2.4.3), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-vesa
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-3build1_amd64.deb
+Size: 27648
+MD5sum: 11f9542a9848c934781ff4c7e526b4eb
+SHA1: 7d04bd52102ba4bc279121dda3b23bf0bb365494
+SHA256: 8960650901beb1b9cebae21d4f7c505039b4e8b584acf7d495948d8c064c078a
+Description: X.Org X server -- VESA display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the standard VESA interface provided on all video cards, but runs
+ unaccelerated. This driver is not recommended for use unless you have a
+ problem with the normal driver for your card, because it will peform very
+ badly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-vesa driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-vmware
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:11.0.1-2build1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vmware
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-vmware
+Filename: pool/main/x/xserver-xorg-video-vmware/xserver-xorg-video-vmware_11.0.1-2build1_amd64.deb
+Size: 46210
+MD5sum: 324e418b02bfaab852d05363b63beb7b
+SHA1: 533ba227f0c038e7f4eb63689fb27ab48c8a3915
+SHA256: 5a9910e91c7f0c6c51bbbd93b95a933a13e14412b0c5d10d6c6d406acf036835
+Description: X.Org X server -- VMware display driver
+ This package provides the driver for VMware client sessions, i.e. if Linux
+ is running inside a VMware session.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-vmware driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
+
+Package: xserver-xorg-video-voodoo
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: amd64
+Version: 1:1.2.4-0ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-voodoo
+Provides: xorg-driver-video, xserver-xorg-video-8
+Depends: libc6 (>= 2.2.5), xorg-video-abi-8.0, xserver-xorg-core (>= 2:1.8.99.904)
+Conflicts: xserver-xorg-driver-voodoo
+Filename: pool/main/x/xserver-xorg-video-voodoo/xserver-xorg-video-voodoo_1.2.4-0ubuntu1_amd64.deb
+Size: 25076
+MD5sum: 8fc0fa8abb44151231be76434bf3451e
+SHA1: cb618ff8a5eff6389aa660f5a51643ed3ba8b3d6
+SHA256: dfdda11e40c533f6636084385882d114347336766e7fc4bb14f515df5b858982
+Description: X.Org X server -- Voodoo display driver
+ This package provides the driver for 3dfx Voodoo1 and Voodoo2 chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ .
+ This package is built from the X.org xf86-video-voodoo driver module.
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: ubuntu-desktop, ubuntu-uec-live, kubuntu-desktop, kubuntu-mobile, kubuntu-netbook, edubuntu-desktop, edubuntu-uec-live, xubuntu-desktop, mythbuntu-backend-master, mythbuntu-backend-slave, mythbuntu-desktop, mythbuntu-frontend, ubuntu-netbook
diff --git a/test/integration/Packages-xorg-break-providers b/test/integration/Packages-xorg-break-providers
new file mode 100644
index 0000000..f6e1d81
--- /dev/null
+++ b/test/integration/Packages-xorg-break-providers
@@ -0,0 +1,52 @@
+Package: xserver-xorg-video-intel
+Priority: optional
+Section: x11
+Installed-Size: 1292
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 2:2.13.901-2
+Provides: xserver-xorg-video-8
+Filename: pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.13.901-2_i386.deb
+Size: 586964
+MD5sum: 72527f4b2c9d734e53202736e3177865
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 1:2.3.0-4
+Provides: xserver-xorg-video-8
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-4_i386.deb
+Size: 27158
+MD5sum: 77bf2935c40b3b7739d431930e53d185
+Description: X.Org X server -- VESA display driver
+
+Package: xserver-xorg-video-vesa
+Priority: optional
+Section: x11
+Installed-Size: 104
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 1:2.3.0-3
+Provides: xserver-xorg-video-6
+Filename: pool/main/x/xserver-xorg-video-vesa/xserver-xorg-video-vesa_2.3.0-3_i386.deb
+Size: 27122
+MD5sum: 0cd97be927c7d75f2a7230739f8f866c
+Description: X.Org X server -- VESA display driver
+
+Package: xserver-xorg-core
+Priority: optional
+Section: x11
+Installed-Size: 4436
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xorg-server
+Version: 2:1.7.7-8
+Breaks: xserver-xorg-video-6
+Filename: pool/main/x/xorg-server/xserver-xorg-core_1.7.7-8_i386.deb
+Size: 2405050
+MD5sum: 976ddb13473e52903dd839d1f7ec390b
+Description: Xorg X server - core server
diff --git a/test/integration/apt.pem b/test/integration/apt.pem
new file mode 100644
index 0000000..bb9fcbe
--- /dev/null
+++ b/test/integration/apt.pem
@@ -0,0 +1,49 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNffaUyxfa1Hun
+CdYRi7uIdiEbOPokUhSfLS8MR2idVeVzIIc+AV4OX/gvxyPzcLIea0eF1noglwc5
+veN7gHxCJyi9gTDURhGL9Nm4UTvsbROgABos9eqyoi0jmzzAUQeSlp7yu+VM9hvV
+woEGbIbI4bBfUWRgtUqaSetJWD4m36QNqb5x4VAqSQJbyLMmdCxcTwRDgtXRvkuy
+MbRMZ8yNJvkHKzfxAZQOOqHhA8+4WuwREDSH+A8JYuum21YTaxKeqU0b2jIK5PwV
+CqrbQUmPoM7jeHiosQPHG8ZsOPhZQBhmwMqAjRO/Vyk0kurp6UtmNN6/hArCjGbR
+QhpFjSttAgMBAAECggEAJALoHIk+4/WKueoqXqbLNY3mHVwt0gGkZYTIkvFMrw3n
+iPZxXPdmYUSGPPE8JqRgQp5wSU8d1epBtOfHHtSUcg9kv1kNkpW463r8UKXDx5oR
+7181Nx3dhHKRUIUa72UD27eToVw2Qfd7R0mvzM1mDXwnqXydB6mdqk478n2JXsxP
+w4bazKMIDm42UDOx9oCwhUP6aTyvXSx+oYhTcznk1QD/Fcz68CTDJdqGIFLvGcwK
+E19efaTM6++asew+M/u9l6JEAd8ccnxpAecNnOhRtlB5Lt7GmpX0NkD0oIJgLKUR
+OROk/wA2qp/cA4OV6IDOhTpYm4hOmZn3i8TrRGY3TQKBgQD6a4RZQ9iaWhotdl6Q
+3AiI+LpcRrsCoYJ0a+5gM/gp7U39febf1PrSkzFGx8IGPIAMErlFv5GQaNum1aB9
+fEhJ2w7eHu3nwdwtrHCTnRr/1cnQdTCOVlq++2EkRGAGBk9DeqJIXSt03c1ROPhh
+Ss4k0HRKQAeAk6TVd/ici+QmtwKBgQDSEilbBuWLI9TDgDIdmvvrp2uPjYeBTF3n
+gD13dRC+4+zGKAO1i9Evwe0GmdLztPshoNLHWgOalaOhPfB2MpCdwihW3gEUX/lT
+ePvSGamVkIKX0pB1YWozUNz2bG78u6GYC5h0e30iQvTBGuKojtc7lNGuHKHqxICE
+oImkCNh6+wKBgB2QPeKv8M1gH8EIPWfKojNRcebc7s0Dtjv6Vf0DhaOlgVSQ3YXF
+RgtAF0ws3woPcGp8d2T1lcC/sFbE15qY5ovZkarFaf63U0ANIIk8vehAHABBJYdY
+SIRNdw1qCRANBKSJwMjcPvogCVIycJhD1YxhE6mEX55dT9Nnw3DvzvKHAoGAMWky
+LwX9QfAIoH9rykjlDnXPt/FLOR90Svp/+rQfXzcPP0C0NqSPbJNJpC7UTpx4IV3J
+ljhW9qpR1aBTCgo0t9auVFhdmqREadzgJngAynw2K23Mqr9iEnXns1Kn/GxJwxCf
+KG7PbRqgpTckrw8CEzKa60Ay2Zykug1ksp+eA7cCgYEAwI6oAHdTEtwH3wDlNmZE
+Dh7mvLfg9WYZgfl6iIcQD+1OdeyVMBHU+OJSY8hykNqEOhy8Oa/qcBNjGAcT6X18
+QzbB4Ul5Bs5yD+d5mKEsKPsy5BGSEL+eQsj/Rgz/EYtxRYrTqXMc0UkWMv+4Fwgl
+UoqcJ3Z/vpVy0+SoFpK3NKI=
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDiTCCAnGgAwIBAgIUEm8A7oUmNHghPkuDzAfEA9pbyB4wDQYJKoZIhvcNAQEL
+BQAwUzESMBAGA1UEAwwJbG9jYWxob3N0MRswGQYDVQQKDBJBUFQgVGVzdGNhc2Vz
+IEdtYkgxEzARBgNVBAgMClNvbWUtU3RhdGUxCzAJBgNVBAYTAkRFMCAXDTIwMDQw
+NjA3NTk0OFoYDzIxMjAwMzEzMDc1OTQ4WjBTMRIwEAYDVQQDDAlsb2NhbGhvc3Qx
+GzAZBgNVBAoMEkFQVCBUZXN0Y2FzZXMgR21iSDETMBEGA1UECAwKU29tZS1TdGF0
+ZTELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDN
+ffaUyxfa1HunCdYRi7uIdiEbOPokUhSfLS8MR2idVeVzIIc+AV4OX/gvxyPzcLIe
+a0eF1noglwc5veN7gHxCJyi9gTDURhGL9Nm4UTvsbROgABos9eqyoi0jmzzAUQeS
+lp7yu+VM9hvVwoEGbIbI4bBfUWRgtUqaSetJWD4m36QNqb5x4VAqSQJbyLMmdCxc
+TwRDgtXRvkuyMbRMZ8yNJvkHKzfxAZQOOqHhA8+4WuwREDSH+A8JYuum21YTaxKe
+qU0b2jIK5PwVCqrbQUmPoM7jeHiosQPHG8ZsOPhZQBhmwMqAjRO/Vyk0kurp6Utm
+NN6/hArCjGbRQhpFjSttAgMBAAGjUzBRMB0GA1UdDgQWBBRKod2DPZOmtyMqyc+4
+f5Upu73pRDAfBgNVHSMEGDAWgBRKod2DPZOmtyMqyc+4f5Upu73pRDAPBgNVHRMB
+Af8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAJTu3wOWz7qIqhc6QrYH5+kdUa
+6OQXdh9lDGgvgXo4WrIYitL83HR7untGQ+P3Lch8/8mBzFnYXZsKoq1+Nc8CPmUz
+pkFsT+KdTnDoxt8dNNFEztq4cFWt1Dg95OXYS/AO/uQnthpd4fd3vb8d2D8/oz5F
+T1QIp3mb+fnOpKEahcuZwfhMwb2DpkrYElQW4+bfg00dW0VB+WTYjHzT+V2PbXnJ
+xbqbJpSIzpGw1YPUHKVZmtfdyWp7QFCfcMSZp17ba5yZ/UNi1dTn+i1KXy691krz
+s2h4YI0MNFXdoYZckqg5cg4nTm5lTy/nzhF6HxSD7SixMbdb4oV+lKbENOi5
+-----END CERTIFICATE-----
diff --git a/test/integration/cachedb-lp1274466-old-format.db b/test/integration/cachedb-lp1274466-old-format.db
new file mode 100644
index 0000000..88da5f1
--- /dev/null
+++ b/test/integration/cachedb-lp1274466-old-format.db
Binary files differ
diff --git a/test/integration/create-test-data b/test/integration/create-test-data
new file mode 100755
index 0000000..0eca399
--- /dev/null
+++ b/test/integration/create-test-data
@@ -0,0 +1,58 @@
+#!/bin/sh
+set +e # its okay to fail in these script, most of the time the apt* stuff will generate errors
+
+if [ -z "$1" -o -z "$2" ]; then
+ echo "Usage: $0 file codename pkg…"
+ exit 1
+fi
+
+CHECK_ARGS='no'
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+GENERATE="$1"
+CODENAME="$2"
+shift 2
+
+WORKDIR="$(mktemp -d)"
+cleanupworkdir() {
+ if [ -z "$WORKDIR" ]; then return; fi
+ rm -rf "$WORKDIR"
+}
+trap "cleanupworkdir;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+touch "$WORKDIR/status"
+TMPGEN="$WORKDIR/Packages"
+export LANG=C.UTF-8
+
+aptgetinstall() {
+ aptget install "$@" --no-install-recommends -t "$CODENAME" -s \
+ -o Dir::state::status="$WORKDIR/status" \
+ -o Dir::Cache="$WORKDIR" \
+ -o pkgCacheGen::Essential=none \
+ -o APT::Immediate-Configure=0
+}
+LISTOFPKGS="$(aptgetinstall "$@" 2> /dev/null | awk '/^Inst/ {print $2}' | sed -e "s#\$#/$CODENAME#")"
+if [ -z "$LISTOFPKGS" ]; then
+ echo "List of packages is empty: run apt-get install command again for you now"
+ aptgetinstall
+ exit 1
+fi
+aptcache show $LISTOFPKGS --no-all-versions 2> "$WORKDIR/error.lst" | sed -e '/^ / d' \
+ -e '/^SHA1: / d' -e '/^SHA256: / d' \
+ -e '/^Homepage: / d' -e '/^Tag: / d' \
+ -e '/^Xul-Appid: / d' \
+ -e '/^Status: / d' \
+ -e 's/^Description-en:/Description:/' \
+ > "$TMPGEN"
+
+if [ "$CODENAME" = "experimental" ]; then
+ aptcache show $(cut -d"'" -f 4 "$WORKDIR/error.lst" | sed -e 's#$#/sid#') --no-all-versions 2> /dev/null >> "$TMPGEN"
+fi
+
+if echo "$GENERATE" | grep '^status-' > /dev/null; then
+ sed -i "$TMPGEN" -e '/^Package: / a\
+Status: install ok installed' \
+ -e '/^Filename: / d' -e '/^Size: / d' -e '/^MD5sum: / d'
+fi
+
+apt-sortpkgs "$TMPGEN" > "$GENERATE"
diff --git a/test/integration/deb-bug-330162-encoded-tar-header.deb b/test/integration/deb-bug-330162-encoded-tar-header.deb
new file mode 100644
index 0000000..f38b1aa
--- /dev/null
+++ b/test/integration/deb-bug-330162-encoded-tar-header.deb
Binary files differ
diff --git a/test/integration/deb-lp1274466-cachedb.deb b/test/integration/deb-lp1274466-cachedb.deb
new file mode 100644
index 0000000..43d7ee6
--- /dev/null
+++ b/test/integration/deb-lp1274466-cachedb.deb
Binary files differ
diff --git a/test/integration/edsp-ubuntu-bug-1974196 b/test/integration/edsp-ubuntu-bug-1974196
new file mode 100644
index 0000000..aecf2ad
--- /dev/null
+++ b/test/integration/edsp-ubuntu-bug-1974196
@@ -0,0 +1,10755 @@
+Request: EDSP 0.5
+Architecture: arm64
+Architectures: arm64
+Install: libudev-dev:arm64
+Solver: dump
+
+Package: dpkg
+Architecture: arm64
+Version: 1.21.1ubuntu2.1
+APT-ID: 64794
+Essential: yes
+Multi-Arch: foreign
+Source: dpkg
+Source-Version: 1.21.1ubuntu2.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tar (>= 1.28-1)
+Pre-Depends: libbz2-1.0, libc6 (>= 2.34), liblzma5 (>= 5.2.2), libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Suggests: apt, debsig-verify
+Breaks: libapt-pkg5.0 (<< 1.7~b), lsb-base (<< 10.2019031300)
+
+Package: telnet
+Architecture: arm64
+Version: 0.17-44build1
+APT-ID: 5630
+Source: netkit-telnet
+Source-Version: 0.17-44build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libstdc++6 (>= 5), netbase
+Replaces: netstd
+Provides: telnet-client
+
+Package: cloud-initramfs-dyn-netconf
+Architecture: all
+Version: 0.47ubuntu1
+APT-ID: 188
+Source: cloud-initramfs-tools
+Source-Version: 0.47ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: initramfs-tools
+
+Package: libnetfilter-conntrack3
+Architecture: arm64
+Version: 1.0.9-1
+APT-ID: 2964
+Multi-Arch: same
+Source: libnetfilter-conntrack
+Source-Version: 1.0.9-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libmnl0 (>= 1.0.3-4~), libnfnetlink0
+
+Package: python3-incremental
+Architecture: all
+Version: 21.3.0-1
+APT-ID: 5146
+Source: incremental
+Source-Version: 21.3.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Recommends: python3-click, python3-twisted
+
+Package: lsb-release
+Architecture: all
+Version: 11.1.0ubuntu4
+APT-ID: 4484
+Multi-Arch: foreign
+Source: lsb
+Source-Version: 11.1.0ubuntu4
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, distro-info-data
+Recommends: apt
+
+Package: tcpdump
+Architecture: arm64
+Version: 4.99.1-3build2
+APT-ID: 5627
+Multi-Arch: foreign
+Source: tcpdump
+Source-Version: 4.99.1-3build2
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libc6 (>= 2.34), libpcap0.8 (>= 1.9.0), libssl3 (>= 3.0.0~~alpha1)
+Suggests: apparmor (>= 2.3)
+Replaces: apparmor-profiles-extra (<< 1.12~)
+Breaks: apparmor-profiles-extra (<< 1.12~)
+
+Package: libperl5.34
+Architecture: arm64
+Version: 5.34.0-3ubuntu1
+APT-ID: 3173
+Multi-Arch: same
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libgdbm-compat4 (>= 1.18-3), libgdbm6 (>= 1.18-3), zlib1g (>= 1:1.2.2.3), perl-modules-5.34 (>= 5.34.0-3ubuntu1)
+Suggests: sensible-utils
+Replaces: libarchive-tar-perl (<= 1.38-2), libcompress-raw-bzip2-perl (<< 2.101), libcompress-raw-zlib-perl (<< 2.101), libcompress-zlib-perl (<< 2.102), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.08), libio-compress-base-perl (<< 2.102), libio-compress-bzip2-perl (<< 2.102), libio-compress-perl (<< 2.102), libio-compress-zlib-perl (<< 2.102), libmime-base64-perl (<< 3.16), libmodule-corelist-perl (<< 2.14-2), libstorable-perl (<< 3.23), libsys-syslog-perl (<< 0.36), libthreads-perl (<< 2.26), libthreads-shared-perl (<< 1.62), libtime-hires-perl (<< 1.9767), libtime-piece-perl (<< 1.3401), perl (<< 5.22.0~), perl-base (<< 5.22.0~)
+Breaks: libcompress-raw-bzip2-perl (<< 2.101), libcompress-raw-zlib-perl (<< 2.101), libcompress-zlib-perl (<< 2.102), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.08), libfilter-perl (<< 1.60), libio-compress-base-perl (<< 2.102), libio-compress-bzip2-perl (<< 2.102), libio-compress-perl (<< 2.102), libio-compress-zlib-perl (<< 2.102), libmime-base64-perl (<< 3.16), libstorable-perl (<< 3.23), libsys-syslog-perl (<< 0.36), libthreads-perl (<< 2.26), libthreads-shared-perl (<< 1.62), libtime-hires-perl (<< 1.9767), libtime-piece-perl (<< 1.3401)
+
+Package: dmidecode
+Architecture: arm64
+Version: 3.3-3
+APT-ID: 319
+Multi-Arch: foreign
+Source: dmidecode
+Source-Version: 3.3-3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libwrap0
+Architecture: arm64
+Version: 7.6.q-31build2
+APT-ID: 4018
+Multi-Arch: same
+Source: tcp-wrappers
+Source-Version: 7.6.q-31build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.33), libnsl2 (>= 1.0)
+
+Package: libkeyutils1
+Architecture: arm64
+Version: 1.6.1-2ubuntu3
+APT-ID: 2702
+Multi-Arch: same
+Source: keyutils
+Source-Version: 1.6.1-2ubuntu3
+Priority: important
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: python3-blinker
+Architecture: all
+Version: 1.4+dfsg1-0.4
+APT-ID: 5040
+Source: blinker
+Source-Version: 1.4+dfsg1-0.4
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-blinker-doc
+
+Package: libxtables12
+Architecture: arm64
+Version: 1.8.7-1ubuntu5
+APT-ID: 4182
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: iptables (<< 1.4.16.3-3), libxtables11 (>= 1.6.0+snapshot20161117-1)
+Breaks: iptables (<< 1.4.16.3-3), libxtables11 (>= 1.6.0+snapshot20161117-1)
+
+Package: libcurl4
+Architecture: arm64
+Version: 7.81.0-1ubuntu1.3
+APT-ID: 64910
+Multi-Arch: same
+Source: curl
+Source-Version: 7.81.0-1ubuntu1.3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libidn2-0 (>= 0.6), libldap-2.5-0 (>= 2.5.4), libnghttp2-14 (>= 1.12.0), libpsl5 (>= 0.16.0), librtmp1 (>= 2.4+20131018.git79459a2-3~), libssh-4 (>= 0.9.0), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+Conflicts: libcurl3
+Replaces: libcurl3
+
+Package: libpolkit-agent-1-0
+Architecture: arm64
+Version: 0.105-33
+APT-ID: 3220
+Multi-Arch: same
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.37.3), libpolkit-gobject-1-0 (= 0.105-33)
+
+Package: dmeventd
+Architecture: arm64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 318
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdevmapper-event1.02.1 (>= 2:1.02.110), libdevmapper1.02.1 (>= 2:1.02.110), liblvm2cmd2.03 (>= 2.03.11)
+
+Package: u-boot-tools
+Architecture: arm64
+Version: 2022.01+dfsg-2ubuntu2
+APT-ID: 5750
+Multi-Arch: foreign
+Source: u-boot
+Source-Version: 2022.01+dfsg-2ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+Recommends: device-tree-compiler, libubootenv-tool
+Replaces: u-boot (<< 2010.12-2), uboot-envtools (<< 20081215-3~), uboot-mkimage (<= 0.4build1)
+Breaks: u-boot (<< 2010.12-2), uboot-envtools (<< 20081215-3~), uboot-mkimage (<= 0.4build1)
+
+Package: networkd-dispatcher
+Architecture: all
+Version: 2.1-2ubuntu0.22.04.2
+APT-ID: 66060
+Source: networkd-dispatcher
+Source-Version: 2.1-2ubuntu0.22.04.2
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, gir1.2-glib-2.0, python3-dbus, python3-gi, python3:any
+Suggests: iw | wireless-tools
+
+Package: systemd-standalone-tmpfiles
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 67123
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libacl1 (>= 2.2.23), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libselinux1 (>= 3.1~)
+Conflicts: systemd (<< 249.3-3), systemd-tmpfiles
+Replaces: systemd (<< 249.3-3), systemd-tmpfiles
+Provides: systemd-tmpfiles (= 249.11-0ubuntu3.4)
+
+Package: initramfs-tools-core
+Architecture: all
+Version: 0.140ubuntu13
+APT-ID: 1091
+Multi-Arch: foreign
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: busybox-initramfs (>= 1:1.30.1-4ubuntu5~), initramfs-tools-bin (= 0.140ubuntu13), klibc-utils (>= 2.0.4-8~), cpio (>= 2.12), zstd, kmod, udev, coreutils (>= 8.24), logsave | e2fsprogs (<< 1.45.3-1~)
+Suggests: bash-completion
+Replaces: initramfs-tools (<< 0.121~)
+Breaks: busybox-initramfs (<< 1:1.30.1-4ubuntu5~), initramfs-tools (<< 0.121~)
+
+Package: pastebinit
+Architecture: all
+Version: 1.5.1-1ubuntu1
+APT-ID: 4735
+Source: pastebinit
+Source-Version: 1.5.1-1ubuntu1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3, python3-distro
+Replaces: bikeshed (<< 1.21)
+Breaks: bikeshed (<< 1.21)
+
+Package: libsmartcols1
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 3618
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: debconf-i18n
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 266
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (= 1.5.79ubuntu1), liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+
+Package: console-setup
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 201
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: console-setup-linux | console-setup-freebsd | hurd, xkb-data (>= 0.9), keyboard-configuration (= 1.205ubuntu3)
+Pre-Depends: debconf (>= 1.5.34)
+Suggests: lsb-base (>= 3.0-6), locales
+Conflicts: console-setup-mini
+Breaks: lsb (<< 2.0-6), lsb-base (<< 3.0-6), lsb-core (<< 2.0-6)
+
+Package: ssh-import-id
+Architecture: all
+Version: 5.11-0ubuntu1
+APT-ID: 5576
+Source: ssh-import-id
+Source-Version: 5.11-0ubuntu1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: ca-certificates, openssh-client, python3-distro, wget, python3:any
+Recommends: openssh-server
+
+Package: zstd
+Architecture: arm64
+Version: 1.4.8+dfsg-3build1
+APT-ID: 5965
+Source: libzstd
+Source-Version: 1.4.8+dfsg-3build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), liblz4-1 (>= 0.0~r127), liblzma5 (>= 5.1.1alpha+20120614), libstdc++6 (>= 12), zlib1g (>= 1:1.1.4)
+
+Package: libpam-runtime
+Architecture: all
+Version: 1.4.0-11ubuntu2
+APT-ID: 3116
+Multi-Arch: foreign
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, debconf (>= 1.5.19) | cdebconf, libpam-modules (>= 1.0.1-6)
+Conflicts: libpam0g-util
+Replaces: libpam0g-dev, libpam0g-util
+
+Package: udev
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66284
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libkmod2 (>= 5~), libselinux1 (>= 3.1~), adduser, libudev1 (= 249.11-0ubuntu3.4), util-linux (>= 2.27.1)
+Conflicts: hal
+Breaks: systemd (<< 249.11-0ubuntu3.4)
+
+Package: udev
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 68004
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libkmod2 (>= 5~), libselinux1 (>= 3.1~), adduser, libudev1 (= 249.11-0ubuntu3.1), util-linux (>= 2.27.1)
+Conflicts: hal
+Breaks: systemd (<< 249.11-0ubuntu3.1)
+
+Package: systemd-oomd
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66183
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4), adduser
+
+Package: coreutils
+Architecture: arm64
+Version: 8.32-4.1ubuntu1
+APT-ID: 204
+Essential: yes
+Multi-Arch: foreign
+Source: coreutils
+Source-Version: 8.32-4.1ubuntu1
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libattr1 (>= 1:2.4.44), libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libselinux1 (>= 3.1~)
+
+Package: libgdbm-compat4
+Architecture: arm64
+Version: 1.23-1
+APT-ID: 2263
+Multi-Arch: same
+Source: gdbm
+Source-Version: 1.23-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgdbm6 (>= 1.16)
+
+Package: python3.10
+Architecture: arm64
+Version: 3.10.4-3
+APT-ID: 5427
+Multi-Arch: allowed
+Source: python3.10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3.10-minimal (= 3.10.4-3), libpython3.10-stdlib (= 3.10.4-3), media-types | mime-support
+Suggests: python3.10-venv, python3.10-doc, binutils
+Breaks: python3-all (<< 3.6.5~rc1-1), python3-dev (<< 3.6.5~rc1-1), python3-venv (<< 3.6.5-2)
+
+Package: python3-colorama
+Architecture: all
+Version: 0.4.4-1
+APT-ID: 5065
+Source: python-colorama
+Source-Version: 0.4.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.6~)
+
+Package: libfdt1
+Architecture: arm64
+Version: 1.6.1-1
+APT-ID: 2138
+Multi-Arch: same
+Source: device-tree-compiler
+Source-Version: 1.6.1-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libmm-glib0
+Architecture: arm64
+Version: 1.18.6-1
+APT-ID: 2873
+Multi-Arch: same
+Source: modemmanager
+Source-Version: 1.18.6-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.56.0)
+Recommends: modemmanager (>= 1.18.6-1)
+
+Package: python3-gi
+Architecture: arm64
+Version: 3.42.1-0ubuntu1
+APT-ID: 67535
+Multi-Arch: allowed
+Source: pygobject
+Source-Version: 3.42.1-0ubuntu1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.48.0), python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17), libffi8 (>= 3.4), libgirepository-1.0-1 (>= 1.62.0-4~), libgirepository-1.0-1-with-libffi8 (>= 1.62.0-4~), libglib2.0-0 (>= 2.56.0)
+
+Package: python3-tz
+Architecture: all
+Version: 2022.1-1
+APT-ID: 5393
+Source: python-tz
+Source-Version: 2022.1-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: tzdata, python3:any
+
+Package: hdparm
+Architecture: arm64
+Version: 9.60+ds-1build3
+APT-ID: 919
+Source: hdparm
+Source-Version: 9.60+ds-1build3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), lsb-base
+Recommends: powermgmt-base
+
+Package: libext2fs2
+Architecture: arm64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 64946
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: e2fslibs (<< 1.43.9-1~)
+Breaks: e2fslibs (<< 1.43.9-1~)
+Provides: e2fslibs (= 1.46.5-2ubuntu1.1)
+
+Package: bind9-host
+Architecture: arm64
+Version: 1:9.18.1-1ubuntu1.1
+APT-ID: 64756
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bind9-libs (= 1:9.18.1-1ubuntu1.1), libc6 (>= 2.34), libidn2-0 (>= 2.0.0)
+Replaces: bind-host (<< 1:9.13.6~)
+Breaks: bind-host (<< 1:9.13.6~)
+Provides: host
+
+Package: libffi8
+Architecture: arm64
+Version: 3.4.2-4
+APT-ID: 2140
+Multi-Arch: same
+Source: libffi
+Source-Version: 3.4.2-4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27)
+Replaces: libffi8ubuntu1 (<< 3.4.2-1)
+Breaks: libffi8ubuntu1 (<< 3.4.2-1)
+Provides: libffi8ubuntu1 (= 3.4.2-4)
+
+Package: pciutils
+Architecture: arm64
+Version: 1:3.7.0-6
+APT-ID: 4740
+Multi-Arch: foreign
+Source: pciutils
+Source-Version: 1:3.7.0-6
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libkmod2 (>= 5~), libpci3 (= 1:3.7.0-6)
+Suggests: bzip2, wget | curl | lynx-cur
+
+Package: libnftnl11
+Architecture: arm64
+Version: 1.2.1-1build1
+APT-ID: 2981
+Multi-Arch: same
+Source: libnftnl
+Source-Version: 1.2.1-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libmnl0 (>= 1.0.3-4~)
+
+Package: libgssapi-krb5-2
+Architecture: arm64
+Version: 1.19.2-2
+APT-ID: 2444
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcom-err2 (>= 1.43.9), libk5crypto3 (>= 1.16), libkrb5-3 (= 1.19.2-2), libkrb5support0 (>= 1.15~beta1)
+Suggests: krb5-doc, krb5-user
+Breaks: moonshot-gss-eap (<= 1.0)
+
+Package: netbase
+Architecture: all
+Version: 6.3
+APT-ID: 4618
+Multi-Arch: foreign
+Source: netbase
+Source-Version: 6.3
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ebtables (<< 2.0.11-2)
+Breaks: ebtables (<< 2.0.11-2)
+
+Package: readline-common
+Architecture: all
+Version: 8.1.2-1
+APT-ID: 5460
+Multi-Arch: foreign
+Source: readline
+Source-Version: 8.1.2-1
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dpkg (>= 1.15.4) | install-info
+Suggests: readline-doc
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+
+Package: libnghttp2-14
+Architecture: arm64
+Version: 1.43.0-1build3
+APT-ID: 2982
+Multi-Arch: same
+Source: nghttp2
+Source-Version: 1.43.0-1build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libcurl3-gnutls
+Architecture: arm64
+Version: 7.81.0-1ubuntu1.3
+APT-ID: 64908
+Multi-Arch: same
+Source: curl
+Source-Version: 7.81.0-1ubuntu1.3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.34), libgnutls30 (>= 3.7.2), libgssapi-krb5-2 (>= 1.17), libidn2-0 (>= 0.6), libldap-2.5-0 (>= 2.5.4), libnettle8, libnghttp2-14 (>= 1.12.0), libpsl5 (>= 0.16.0), librtmp1 (>= 2.4+20131018.git79459a2-3~), libssh-4 (>= 0.9.0), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+
+Package: open-iscsi
+Architecture: arm64
+Version: 2.1.5-1ubuntu1
+APT-ID: 4681
+Multi-Arch: foreign
+Source: open-iscsi
+Source-Version: 2.1.5-1ubuntu1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, init-system-helpers (>= 1.51), libc6 (>= 2.34), libisns0, libkmod2 (>= 5~), libmount1 (>= 2.24.2), libopeniscsiusr (>= 2.1.5), libssl3 (>= 3.0.0~~alpha1), libsystemd0, udev
+Pre-Depends: debconf | debconf-2.0
+Recommends: busybox-initramfs, finalrd (>= 3)
+
+Package: python3-pyasn1
+Architecture: all
+Version: 0.4.8-1
+APT-ID: 5287
+Source: pyasn1
+Source-Version: 0.4.8-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Breaks: python3-pysnmp4 (<< 4.3.4)
+
+Package: openssh-client
+Architecture: arm64
+Version: 1:8.9p1-3
+APT-ID: 4696
+Multi-Arch: foreign
+Source: openssh
+Source-Version: 1:8.9p1-3
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser (>= 3.10), dpkg (>= 1.7.0), passwd, libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libfido2-1 (>= 1.8.0), libgssapi-krb5-2 (>= 1.17), libselinux1 (>= 3.1~), libssl3 (>= 3.0.1), zlib1g (>= 1:1.1.4)
+Suggests: keychain, libpam-ssh, monkeysphere, ssh-askpass
+Recommends: xauth
+Conflicts: sftp
+Replaces: openssh-sk-helper, ssh, ssh-krb5
+Breaks: openssh-sk-helper
+Provides: ssh-client, rsh-client
+
+Package: iptables
+Architecture: arm64
+Version: 1.8.7-1ubuntu5
+APT-ID: 1100
+Multi-Arch: foreign
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libip4tc2 (= 1.8.7-1ubuntu5), libip6tc2 (= 1.8.7-1ubuntu5), libxtables12 (= 1.8.7-1ubuntu5), netbase (>= 6.0), libc6 (>= 2.34), libmnl0 (>= 1.0.3-4~), libnetfilter-conntrack3 (>= 1.0.6), libnfnetlink0, libnftnl11 (>= 1.1.5)
+Suggests: firewalld, kmod, nftables
+Replaces: iptables-nftables-compat (<< 1.6.2~)
+Breaks: iptables-nftables-compat (<< 1.6.2~)
+
+Package: dosfstools
+Architecture: arm64
+Version: 4.2-1build3
+APT-ID: 331
+Source: dosfstools
+Source-Version: 4.2-1build3
+Priority: standard
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: iputils-ping
+Architecture: arm64
+Version: 3:20211215-1
+APT-ID: 1103
+Multi-Arch: foreign
+Source: iputils
+Source-Version: 3:20211215-1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcap2-bin, libc6 (>= 2.34), libcap2 (>= 1:2.10), libidn2-0 (>= 0.6)
+Provides: ping
+
+Package: python-babel-localedata
+Architecture: all
+Version: 2.8.0+dfsg.1-7
+APT-ID: 4880
+Source: python-babel
+Source-Version: 2.8.0+dfsg.1-7
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+
+Package: python3-distupgrade
+Architecture: all
+Version: 1:22.04.11
+APT-ID: 66132
+Source: ubuntu-release-upgrader
+Source-Version: 1:22.04.11
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-update-manager (>= 1:19.04.2~), python3-apt (>= 0.8.5~), python3-dbus, python3-distro-info, python3-yaml, gpgv, lsb-release, sensible-utils, procps
+Replaces: python3-update-manager (<< 1:0.165)
+Breaks: python3-update-manager (<< 1:0.165)
+
+Package: libaudit-common
+Architecture: all
+Version: 1:3.0.7-1build1
+APT-ID: 1613
+Multi-Arch: foreign
+Source: audit
+Source-Version: 1:3.0.7-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libnl-3-200
+Architecture: arm64
+Version: 3.5.0-0.1
+APT-ID: 2991
+Multi-Arch: same
+Source: libnl3
+Source-Version: 3.5.0-0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libctf-nobfd0
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 1889
+Multi-Arch: same
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), zlib1g (>= 1:1.2.0)
+Replaces: libbinutils (<< 2.33.50.20191128-1~)
+Breaks: libbinutils (<< 2.33.50.20191128-1~)
+
+Package: systemd-container
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66182
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libacl1 (>= 2.2.23), libbz2-1.0, libc6 (>= 2.34), libcurl3-gnutls (>= 7.16.3), libgcrypt20 (>= 1.9.0), liblzma5 (>= 5.1.1alpha+20120614), libseccomp2 (>= 2.3.1), libselinux1 (>= 3.1~), systemd (= 249.11-0ubuntu3.4), zlib1g (>= 1:1.1.4), default-dbus-system-bus | dbus-system-bus
+Recommends: libnss-mymachines
+
+Package: libnl-genl-3-200
+Architecture: arm64
+Version: 3.5.0-0.1
+APT-ID: 2996
+Multi-Arch: same
+Source: libnl3
+Source-Version: 3.5.0-0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnl-3-200 (= 3.5.0-0.1), libc6 (>= 2.17)
+
+Package: apt
+Architecture: arm64
+Version: 2.4.6
+APT-ID: 67176
+Essential: yes
+Source: apt
+Source-Version: 2.4.6
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, gpgv | gpgv2 | gpgv1, libapt-pkg6.0 (>= 2.4.6), ubuntu-keyring, libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libgnutls30 (>= 3.7.0), libseccomp2 (>= 2.4.2), libstdc++6 (>= 11), libsystemd0
+Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base
+Recommends: ca-certificates
+Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)
+Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)
+Provides: apt-transport-https (= 2.4.6)
+
+Package: libssh-4
+Architecture: arm64
+Version: 0.9.6-2build1
+APT-ID: 3668
+Multi-Arch: same
+Source: libssh
+Source-Version: 0.9.6-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgssapi-krb5-2 (>= 1.17), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.1.4)
+Breaks: remmina (<< 1.2.31.2+dfsg-1+), remmina-plugin-nx (<< 1.2.31.2+dfsg-1+), x2goclient (<< 4.1.2.1-1+)
+
+Package: packagekit-tools
+Architecture: arm64
+Version: 1.2.5-2ubuntu2
+APT-ID: 4729
+Multi-Arch: foreign
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: packagekit (= 1.2.5-2ubuntu2), libc6 (>= 2.34), libglib2.0-0 (>= 2.54), libpackagekit-glib2-18 (>= 1.2.5)
+
+Package: libintl-perl
+Architecture: all
+Version: 1.26-3build2
+APT-ID: 2594
+Source: libintl-perl
+Source-Version: 1.26-3build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+Recommends: libintl-xs-perl
+
+Package: xkb-data
+Architecture: all
+Version: 2.33-1
+APT-ID: 5914
+Multi-Arch: foreign
+Source: xkeyboard-config
+Source-Version: 2.33-1
+Priority: required
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libx11-6 (<< 2:1.4.3), x11-xkb-utils (<< 7.7+5)
+
+Package: dbus-user-session
+Architecture: arm64
+Version: 1.12.20-2ubuntu4
+APT-ID: 257
+Multi-Arch: foreign
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus (>= 1.12.20-2ubuntu4), libpam-systemd, systemd
+Recommends: systemd-sysv
+Breaks: dbus-x11 (<< 1.9.10-2~), policykit-1 (<< 0.105-12~), udisks2 (<< 2.1.5-2~)
+Provides: default-dbus-session-bus, dbus-session-bus
+
+Package: libnss-myhostname
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66769
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: extra
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34)
+
+Package: libnftables1
+Architecture: arm64
+Version: 1.0.2-1ubuntu2
+APT-ID: 2978
+Multi-Arch: same
+Source: nftables
+Source-Version: 1.0.2-1ubuntu2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgmp10 (>= 2:6.2.1+dfsg), libjansson4 (>= 2.3), libmnl0 (>= 1.0.3-4~), libnftnl11 (>= 1.2.1), libxtables12 (>= 1.6.0+snapshot20161117)
+
+Package: libqmi-proxy
+Architecture: arm64
+Version: 1.30.4-1
+APT-ID: 3279
+Multi-Arch: foreign
+Source: libqmi
+Source-Version: 1.30.4-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libqmi-glib5 (= 1.30.4-1), libc6 (>= 2.34), libglib2.0-0 (>= 2.56)
+
+Package: libblockdev-part2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1684
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-part-err2 (>= 2.14), libblockdev-utils2 (>= 2.14), libc6 (>= 2.29), libglib2.0-0 (>= 2.42.2), libparted2 (>= 3.1), gdisk (>= 0.8.6), fdisk | util-linux (<< 2.29.2-3~)
+
+Package: libnettle8
+Architecture: arm64
+Version: 3.7.3-1build2
+APT-ID: 2967
+Multi-Arch: same
+Source: nettle
+Source-Version: 3.7.3-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: sosreport
+Architecture: arm64
+Version: 4.3-1ubuntu2
+APT-ID: 5554
+Source: sosreport
+Source-Version: 4.3-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-pexpect, python3:any
+
+Package: ftp
+Architecture: all
+Version: 20210827-4build1
+APT-ID: 554
+Multi-Arch: foreign
+Source: tnftp
+Source-Version: 20210827-4build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tnftp
+Replaces: ftp (<= 0.17-35)
+
+Package: modemmanager
+Architecture: arm64
+Version: 1.18.6-1
+APT-ID: 4534
+Source: modemmanager
+Source-Version: 1.18.6-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56.0), libgudev-1.0-0 (>= 232), libmbim-glib4 (>= 1.26.0), libmbim-proxy, libmm-glib0 (>= 1.18.2), libpolkit-gobject-1-0 (>= 0.99), libqmi-glib5 (>= 1.30.2), libqmi-proxy, libsystemd0 (>= 209), policykit-1
+Recommends: usb-modeswitch
+
+Package: cryptsetup-bin
+Architecture: arm64
+Version: 2:2.4.3-1ubuntu1
+APT-ID: 230
+Multi-Arch: foreign
+Source: cryptsetup
+Source-Version: 2:2.4.3-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.24.2), libc6 (>= 2.34), libcryptsetup12 (>= 2:2.4), libjson-c5 (>= 0.15), libpopt0 (>= 1.14), libssh-4 (>= 0.8.0), libuuid1 (>= 2.16)
+
+Package: git
+Architecture: arm64
+Version: 1:2.34.1-1ubuntu1.2
+APT-ID: 64844
+Multi-Arch: foreign
+Source: git
+Source-Version: 1:2.34.1-1ubuntu1.2
+Priority: optional
+Section: vcs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcurl3-gnutls (>= 7.56.1), libexpat1 (>= 2.0.1), libpcre2-8-0 (>= 10.34), zlib1g (>= 1:1.2.0), perl, liberror-perl, git-man (>> 1:2.34.1), git-man (<< 1:2.34.1-.)
+Suggests: gettext-base, git-daemon-run | git-daemon-sysvinit, git-doc, git-email, git-gui, gitk, gitweb, git-cvs, git-mediawiki, git-svn
+Recommends: ca-certificates, patch, less, ssh-client
+Breaks: bash-completion (<< 1:1.90-1), cogito (<= 0.18.2+), dgit (<< 5.1~), git-buildpackage (<< 0.6.5), git-el (<< 1:2.32.0~rc2-1~), gitosis (<< 0.2+20090917-7), gitpkg (<< 0.15), guilt (<< 0.33), openssh-client (<< 1:6.8), stgit (<< 0.15), stgit-contrib (<< 0.15)
+Provides: git-core, git-completion
+
+Package: libacl1
+Architecture: arm64
+Version: 2.3.1-1
+APT-ID: 1513
+Multi-Arch: same
+Source: acl
+Source-Version: 2.3.1-1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libtss2-tcti-cmd0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3830
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: gpg
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64866
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libreadline8 (>= 6.0), libsqlite3-0 (>= 3.7.15), zlib1g (>= 1:1.1.4)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4)
+
+Package: libglib2.0-bin
+Architecture: arm64
+Version: 2.72.1-1
+APT-ID: 2320
+Multi-Arch: foreign
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-data, libc6 (>= 2.34), libelf1 (>= 0.142), libglib2.0-0 (= 2.72.1-1)
+
+Package: systemd-timesyncd
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66185
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4), adduser
+Conflicts: time-daemon
+Replaces: systemd (<< 245.4-2~), time-daemon
+Breaks: systemd (<< 245.4-2~)
+Provides: time-daemon
+
+Package: systemd-timesyncd
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 68003
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.1), adduser
+Conflicts: time-daemon
+Replaces: systemd (<< 245.4-2~), time-daemon
+Breaks: systemd (<< 245.4-2~)
+Provides: time-daemon
+
+Package: perl
+Architecture: arm64
+Version: 5.34.0-3ubuntu1
+APT-ID: 4742
+Multi-Arch: allowed
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (= 5.34.0-3ubuntu1), perl-modules-5.34 (>= 5.34.0-3ubuntu1), libperl5.34 (= 5.34.0-3ubuntu1)
+Pre-Depends: dpkg (>= 1.17.17)
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl, make, libtap-harness-archive-perl
+Recommends: netbase
+Conflicts: libjson-pp-perl (<< 2.27200-2)
+Replaces: perl-base (<< 5.34.0-2), perl-modules (<< 5.22.0~)
+Breaks: apt-show-versions (<< 0.22.10), libdist-inkt-perl (<< 0.024-5), libmarc-charset-perl (<< 1.35-3), libperl-dev (<< 5.24.0~), perl-doc (<< 5.34.0-1), perl-modules-5.22, perl-modules-5.24, perl-modules-5.26 (<< 5.26.2-5)
+Provides: podlators-perl (= 4.14), libversion-requirements-perl, libversion-perl (= 1:0.9928), libunicode-collate-perl (= 1.29), libtime-piece-perl (= 1.3401), libtime-local-perl (= 1.3000), libtime-hires-perl (= 1.9767), libthreads-shared-perl (= 1.62), libthreads-perl (= 2.26), libthread-queue-perl (= 3.14), libtest-use-ok-perl (= 1.302183), libtest-tester-perl (= 1.302183), libtest-simple-perl (= 1.302183), libtest-harness-perl (= 3.43), libsys-syslog-perl (= 0.36), libstorable-perl (= 3.23), libpod-simple-perl (= 3.42), libpod-escapes-perl (= 1.07), libperl-ostype-perl (= 1.010), libparse-cpan-meta-perl (= 2.150010), libparent-perl (= 0.238), libparams-check-perl (= 0.38), libnet-ping-perl (= 2.74), libnet-perl (= 1:3.13), libmodule-metadata-perl (= 1.000037), libmodule-load-perl (= 0.36), libmodule-load-conditional-perl (= 0.74), libmodule-corelist-perl (= 5.20210520), libmime-base64-perl (= 3.16), libmath-complex-perl (= 1.5902), libmath-bigint-perl (= 1.999818), liblocale-maketext-simple-perl (= 0.21.01), liblocale-maketext-perl (= 1.29), libjson-pp-perl (= 4.06000), libio-zlib-perl (= 1.11), libio-compress-zlib-perl (= 2.102), libio-compress-perl (= 2.102), libio-compress-bzip2-perl (= 2.102), libio-compress-base-perl (= 2.102), libi18n-langtags-perl (= 0.45), libhttp-tiny-perl (= 0.076), libfile-spec-perl (= 3.8000), libextutils-parsexs-perl (= 3.430000), libextutils-install-perl (= 2.20), libextutils-command-perl (= 7.62), libextutils-cbuilder-perl (= 0.280236), libexperimental-perl (= 0.024), libencode-perl (= 3.08), libdigest-sha-perl (= 6.02), libdigest-perl (= 1.19), libdigest-md5-perl (= 2.58), libcpan-meta-yaml-perl (= 0.018), libcpan-meta-requirements-perl (= 2.140), libcpan-meta-perl (= 2.150010), libcompress-zlib-perl (= 2.102), libcompress-raw-zlib-perl (= 2.101), libcompress-raw-bzip2-perl (= 2.101), libautodie-perl (= 2.34), libattribute-handlers-perl (= 1.01), libarchive-tar-perl (= 2.38), libansicolor-perl (= 5.01)
+
+Package: polkitd
+Architecture: arm64
+Version: 0.105-33
+APT-ID: 4812
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, default-logind | logind, libc6 (>= 2.34), libexpat1 (>= 2.0.1), libglib2.0-0 (>= 2.37.3), libpam0g (>= 0.99.7.1), libpolkit-agent-1-0 (= 0.105-33), libpolkit-gobject-1-0 (= 0.105-33), libsystemd0 (>= 213)
+Replaces: policykit-1 (<< 0.105-32~)
+Breaks: policykit-1 (<< 0.105-32~)
+Provides: polkitd-pkla (= 0.105-33)
+
+Package: lxd-agent-loader
+Architecture: all
+Version: 0.5
+APT-ID: 4492
+Source: lxd-agent-loader
+Source-Version: 0.5
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libtinfo6
+Architecture: arm64
+Version: 6.3-2
+APT-ID: 3792
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libtirpc-common
+Architecture: all
+Version: 1.3.2-2build1
+APT-ID: 3793
+Multi-Arch: foreign
+Source: libtirpc
+Source-Version: 1.3.2-2build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
+Breaks: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
+
+Package: tzdata
+Architecture: all
+Version: 2022a-0ubuntu1
+APT-ID: 5746
+Multi-Arch: foreign
+Source: tzdata
+Source-Version: 2022a-0ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+Provides: tzdata-bookworm
+
+Package: libntfs-3g89
+Architecture: arm64
+Version: 1:2021.8.22-3ubuntu1.1
+APT-ID: 65024
+Source: ntfs-3g
+Source-Version: 1:2021.8.22-3ubuntu1.1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libblockdev-swap2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1686
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.23.0), libblockdev-utils2 (>= 2.14), libc6 (>= 2.17), libglib2.0-0 (>= 2.42.2)
+
+Package: libunwind8
+Architecture: arm64
+Version: 1.3.2-2build2
+APT-ID: 3882
+Multi-Arch: same
+Source: libunwind
+Source-Version: 1.3.2-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.1.1alpha+20110809)
+Conflicts: libunwind1-dev
+Replaces: libgcc1 (<< 1:4.0.0-2)
+
+Package: ntfs-3g
+Architecture: arm64
+Version: 1:2021.8.22-3ubuntu1.1
+APT-ID: 66085
+Source: ntfs-3g
+Source-Version: 1:2021.8.22-3ubuntu1.1
+Priority: standard
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libntfs-3g89 (= 1:2021.8.22-3ubuntu1.1)
+Pre-Depends: fuse3
+
+Package: libmagic-mgc
+Architecture: arm64
+Version: 1:5.41-3
+APT-ID: 2808
+Multi-Arch: foreign
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libmagic1 (<< 1:5.28-4~)
+Breaks: libmagic1 (<< 1:5.28-4~)
+
+Package: libpcre3
+Architecture: arm64
+Version: 2:8.39-13ubuntu0.22.04.1
+APT-ID: 65033
+Multi-Arch: same
+Source: pcre3
+Source-Version: 2:8.39-13ubuntu0.22.04.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+
+Package: systemd-tests
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 67124
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaudit1 (>= 1:2.2.1), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libcrypt1 (>= 1:4.4.0), libdbus-1-3 (>= 1.9.14), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.26.0), libgpg-error0 (>= 1.14), libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.1.1alpha+20120614), libmount1 (>= 2.30), libpam0g (>= 0.99.7.1), libseccomp2 (>= 2.4.1), libselinux1 (>= 3.1~), libsystemd0 (= 249.11-0ubuntu3.4), libudev1 (>= 247), libzstd1 (>= 1.4.0), systemd (= 249.11-0ubuntu3.4), zlib1g (>= 1:1.1.4), python3
+
+Package: libunistring2
+Architecture: arm64
+Version: 1.0-1
+APT-ID: 3863
+Multi-Arch: same
+Source: libunistring
+Source-Version: 1.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: zerofree
+Architecture: arm64
+Version: 1.1.1-1build3
+APT-ID: 5954
+Source: zerofree
+Source-Version: 1.1.1-1build3
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libext2fs2 (>= 1.42)
+
+Package: kbd
+Architecture: arm64
+Version: 2.3.0-3ubuntu4
+APT-ID: 1126
+Source: kbd
+Source-Version: 2.3.0-3ubuntu4
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), console-setup | console-setup-mini
+Conflicts: console-utilities
+Provides: console-utilities
+
+Package: libidn2-0
+Architecture: arm64
+Version: 2.3.2-2build1
+APT-ID: 2567
+Multi-Arch: same
+Source: libidn2
+Source-Version: 2.3.2-2build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libunistring2 (>= 0.9.7)
+
+Package: python3-cffi-backend
+Architecture: arm64
+Version: 1.15.0-1build2
+APT-ID: 5056
+Multi-Arch: same
+Source: python-cffi
+Source-Version: 1.15.0-1build2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.34), libffi8 (>= 3.4)
+Provides: python3-cffi-backend-api-min (= 9729), python3-cffi-backend-api-max (= 10495), python3-cffi-backend-api-9729
+
+Package: libldap-common
+Architecture: all
+Version: 2.5.12+dfsg-0ubuntu0.22.04.1
+APT-ID: 64998
+Multi-Arch: foreign
+Source: openldap
+Source-Version: 2.5.12+dfsg-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libldap-2.4-2 (<< 2.4.44+dfsg-1)
+
+Package: libgusb2
+Architecture: arm64
+Version: 0.3.10-1
+APT-ID: 2496
+Multi-Arch: same
+Source: libgusb
+Source-Version: 0.3.10-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.44.0), libusb-1.0-0 (>= 2:1.0.22)
+Recommends: usb.ids
+
+Package: libtasn1-6
+Architecture: arm64
+Version: 4.18.0-4build1
+APT-ID: 3742
+Multi-Arch: same
+Source: libtasn1-6
+Source-Version: 4.18.0-4build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libaio1
+Architecture: arm64
+Version: 0.3.112-13build1
+APT-ID: 1520
+Multi-Arch: same
+Source: libaio
+Source-Version: 0.3.112-13build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: python3-minimal
+Architecture: arm64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5198
+Multi-Arch: allowed
+Source: python3-defaults
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dpkg (>= 1.13.20)
+Pre-Depends: python3.10-minimal (>= 3.10.4-1~)
+
+Package: libmbim-glib4
+Architecture: arm64
+Version: 1.26.2-1build1
+APT-ID: 2826
+Multi-Arch: same
+Source: libmbim
+Source-Version: 1.26.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.56)
+
+Package: libpam-systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65031
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libpam0g (>= 0.99.7.1), systemd (= 249.11-0ubuntu3.4), libpam-runtime (>= 1.0.1-6), default-dbus-system-bus | dbus-system-bus, systemd-sysv
+Provides: logind (= 249.11-0ubuntu3.4), default-logind (= 249.11-0ubuntu3.4)
+
+Package: libpam-systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 67998
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libpam0g (>= 0.99.7.1), systemd (= 249.11-0ubuntu3.1), libpam-runtime (>= 1.0.1-6), default-dbus-system-bus | dbus-system-bus, systemd-sysv
+Provides: logind (= 249.11-0ubuntu3.1), default-logind (= 249.11-0ubuntu3.1)
+
+Package: usb-modeswitch-data
+Architecture: all
+Version: 20191128-4
+APT-ID: 5807
+Source: usb-modeswitch-data
+Source-Version: 20191128-4
+Priority: extra
+Section: comm
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: udev, usb-modeswitch (>= 2.4.0)
+Conflicts: usb-modeswitch-data-packed
+Replaces: usb-modeswitch-data-packed
+Breaks: usb-modeswitch (<< 2.4.0)
+Provides: usb-modeswitch-data-packed
+
+Package: libubootenv-tool
+Architecture: arm64
+Version: 0.3.2-1build1
+APT-ID: 3844
+Multi-Arch: foreign
+Source: libubootenv
+Source-Version: 0.3.2-1build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libubootenv0.1 (= 0.3.2-1build1)
+Conflicts: u-boot-tools (<< 2019.10)
+
+Package: libtss2-tcti-device0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3831
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: byobu
+Architecture: all
+Version: 5.133-1
+APT-ID: 144
+Source: byobu
+Source-Version: 5.133-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, python3:any, gettext-base, iproute2, python3, python3-newt, tmux (>= 1.5), gawk
+Suggests: apport, ccze, gnome-terminal | xterm, gnupg, lsb-release, po-debconf, screen, speedometer, ttf-ubuntu-font-family (>= 0.80-0ubuntu1~medium), update-notifier-common, vim, wireless-tools
+Recommends: less, pastebinit, sensible-utils, run-one
+Replaces: bikeshed (<< 1.64), byobu-extras (<< 2.17), screen-profiles (<< 2.0), screen-profiles-extras (<< 2.0)
+Breaks: bikeshed (<< 1.64), byobu-extras (<< 2.17), screen-profiles (<< 2.0), screen-profiles-extras (<< 2.0)
+Enhances: screen
+Provides: screen-profiles-extras, screen-profiles, byobu-extras
+
+Package: liblzo2-2
+Architecture: arm64
+Version: 2.10-2build3
+APT-ID: 2801
+Multi-Arch: same
+Source: lzo2
+Source-Version: 2.10-2build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: device-tree-compiler
+Architecture: arm64
+Version: 1.6.1-1
+APT-ID: 292
+Multi-Arch: foreign
+Source: device-tree-compiler
+Source-Version: 1.6.1-1
+Priority: extra
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfdt1 (>= 1.6.1), libyaml-0-2
+
+Package: libmpdec3
+Architecture: arm64
+Version: 2.5.1-2build2
+APT-ID: 2894
+Multi-Arch: same
+Source: mpdecimal
+Source-Version: 2.5.1-2build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+Breaks: libpython3.8-stdlib (<< 2.8.5-2)
+
+Package: libselinux1
+Architecture: arm64
+Version: 3.3-1build2
+APT-ID: 3586
+Multi-Arch: same
+Source: libselinux
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpcre2-8-0 (>= 10.22)
+
+Package: libarchive13
+Architecture: arm64
+Version: 3.6.0-1ubuntu1
+APT-ID: 1560
+Multi-Arch: same
+Source: libarchive
+Source-Version: 3.6.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libbz2-1.0, libc6 (>= 2.33), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.2.2), libnettle8, libxml2 (>= 2.7.4), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Suggests: lrzip
+
+Package: python3-lib2to3
+Architecture: all
+Version: 3.10.4-0ubuntu1
+APT-ID: 5176
+Multi-Arch: foreign
+Source: python3-stdlib-extensions
+Source-Version: 3.10.4-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3:any (>= 3.10.1-0~), python3:any (<< 3.11)
+Replaces: libpython3.6-stdlib (<< 3.6.4~rc1-2), libpython3.7-stdlib (<< 3.7.0~a3-3), python3.6-2to3 (<< 3.6.4-2), python3.7-2to3 (<< 3.7.0~a3-3)
+Breaks: libpython3.10-stdlib (<< 3.10.0~b1), libpython3.6-stdlib (<< 3.6.4~rc1-2), libpython3.7-stdlib (<< 3.7.0~a3-3), python3.6-2to3 (<< 3.6.4-2), python3.7-2to3 (<< 3.7.0~a3-3)
+Provides: python3.10-lib2to3
+
+Package: libxmlb2
+Architecture: arm64
+Version: 0.3.6-2build1
+APT-ID: 4148
+Multi-Arch: same
+Source: libxmlb
+Source-Version: 0.3.6-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.53.2), liblzma5 (>= 5.1.1alpha+20120614)
+
+Package: usb.ids
+Architecture: all
+Version: 2022.04.02-1
+APT-ID: 5808
+Multi-Arch: foreign
+Source: usb.ids
+Source-Version: 2022.04.02-1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: usbutils (<< 1:008-1)
+Breaks: usbutils (<< 1:008-1)
+
+Package: liblzma5
+Architecture: arm64
+Version: 5.2.5-2ubuntu1
+APT-ID: 2800
+Multi-Arch: same
+Source: xz-utils
+Source-Version: 5.2.5-2ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~)
+
+Package: sed
+Architecture: arm64
+Version: 4.8-1ubuntu2
+APT-ID: 5526
+Essential: yes
+Multi-Arch: foreign
+Source: sed
+Source-Version: 4.8-1ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+
+Package: lsb-base
+Architecture: all
+Version: 11.1.0ubuntu4
+APT-ID: 4482
+Multi-Arch: foreign
+Source: lsb
+Source-Version: 11.1.0ubuntu4
+Priority: important
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: tar
+Architecture: arm64
+Version: 1.34+dfsg-1build3
+APT-ID: 5618
+Essential: yes
+Multi-Arch: foreign
+Source: tar
+Source-Version: 1.34+dfsg-1build3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: bzip2, ncompress, xz-utils, tar-scripts, tar-doc
+Conflicts: cpio (<= 2.4.2-38)
+Replaces: cpio (<< 2.4.2-39)
+Breaks: dpkg-dev (<< 1.14.26)
+
+Package: tcl
+Architecture: arm64
+Version: 8.6.11+1build2
+APT-ID: 5621
+Multi-Arch: foreign
+Source: tcltk-defaults
+Source-Version: 8.6.11+1build2
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tcl8.6 (>= 8.6.11+dfsg-1~)
+Breaks: tcl8.3 (<< 8.3.5-15), tcl8.4 (<< 8.4.20-2), tcl8.5 (<< 8.5.14-3), tcl8.6 (<< 8.6.0-2)
+Provides: tclsh
+
+Package: ucf
+Architecture: all
+Version: 3.0043
+APT-ID: 5784
+Multi-Arch: foreign
+Source: ucf
+Source-Version: 3.0043
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91), sensible-utils
+
+Package: ufw
+Architecture: all
+Version: 0.36.1-4build1
+APT-ID: 5788
+Source: ufw
+Source-Version: 0.36.1-4build1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: iptables, lsb-base (>= 3.0-6), ucf, python3:any, debconf (>= 0.5) | debconf-2.0
+Suggests: rsyslog
+
+Package: python3-lazr.restfulclient
+Architecture: all
+Version: 0.14.4-1
+APT-ID: 5170
+Source: lazr.restfulclient
+Source-Version: 0.14.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-httplib2 (>= 0.7.7), python3-lazr.uri, python3-wadllib (>= 1.1.4), python3-distro, python3-oauthlib, python3-pkg-resources, python3-six, python3:any
+
+Package: sg3-utils
+Architecture: arm64
+Version: 1.46-1build1
+APT-ID: 5530
+Source: sg3-utils
+Source-Version: 1.46-1build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsgutils2-2 (>= 1.46)
+Conflicts: cdwrite, sg-utils
+Replaces: sg-utils
+
+Package: libcap2-bin
+Architecture: arm64
+Version: 1:2.44-1build3
+APT-ID: 1784
+Multi-Arch: foreign
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.33)
+Recommends: libpam-cap
+Replaces: libcap-bin
+Breaks: libcap-bin
+
+Package: vim
+Architecture: arm64
+Version: 2:8.2.3995-1ubuntu2
+APT-ID: 5820
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: vim-common (= 2:8.2.3995-1ubuntu2), vim-runtime (= 2:8.2.3995-1ubuntu2), libacl1 (>= 2.2.23), libc6 (>= 2.34), libgpm2 (>= 1.20.7), libpython3.10 (>= 3.10.0), libselinux1 (>= 3.1~), libsodium23 (>= 1.0.14), libtinfo6 (>= 6)
+Suggests: ctags, vim-doc, vim-scripts
+Provides: editor
+
+Package: whiptail
+Architecture: arm64
+Version: 0.52.21-5ubuntu2
+APT-ID: 5845
+Multi-Arch: foreign
+Source: newt
+Source-Version: 0.52.21-5ubuntu2
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libnewt0.52 (>= 0.52.21), libpopt0 (>= 1.14), libslang2 (>= 2.2.4)
+
+Package: gir1.2-glib-2.0
+Architecture: arm64
+Version: 1.72.0-1
+APT-ID: 660
+Multi-Arch: same
+Source: gobject-introspection
+Source-Version: 1.72.0-1
+Priority: required
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgirepository-1.0-1 (>= 1.72.0), libglib2.0-0 (>= 2.71.2)
+Provides: gir1.2-gobject-2.0 (= 1.72.0-1), gir1.2-gmodule-2.0 (= 1.72.0-1), gir1.2-girepository-2.0 (= 1.72.0-1), gir1.2-gio-2.0 (= 1.72.0-1)
+
+Package: base-passwd
+Architecture: arm64
+Version: 3.5.52build1
+APT-ID: 85
+Essential: yes
+Multi-Arch: foreign
+Source: base-passwd
+Source-Version: 3.5.52build1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libdebconfclient0 (>= 0.145)
+Recommends: debconf (>= 0.5) | debconf-2.0
+Replaces: base
+
+Package: libsasl2-modules
+Architecture: arm64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3570
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libssl3 (>= 3.0.0~~alpha1)
+Suggests: libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal, libsasl2-modules-ldap, libsasl2-modules-otp, libsasl2-modules-sql
+Breaks: logcheck-database (<= 1.3.16~)
+
+Package: libsasl2-2
+Architecture: arm64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3568
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsasl2-modules-db (>= 2.1.27+dfsg2-3ubuntu1), libc6 (>= 2.34)
+Recommends: libsasl2-modules (>= 2.1.27+dfsg2-3ubuntu1)
+Replaces: libsasl2
+Breaks: postfix (<= 2.8.3-1), slapd (<= 2.4.25-3)
+
+Package: libatm1
+Architecture: arm64
+Version: 1:2.5.1-4build2
+APT-ID: 1599
+Multi-Arch: same
+Source: linux-atm
+Source-Version: 1:2.5.1-4build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: xxd
+Architecture: arm64
+Version: 2:8.2.3995-1ubuntu2
+APT-ID: 5944
+Multi-Arch: foreign
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: vim-common (<< 2:7.4.2347-1~)
+Breaks: vim-common (<< 2:7.4.2347-1~)
+
+Package: libexpat1
+Architecture: arm64
+Version: 2.4.7-1
+APT-ID: 2119
+Multi-Arch: same
+Source: expat
+Source-Version: 2.4.7-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+
+Package: libdb5.3
+Architecture: arm64
+Version: 5.3.28+dfsg1-0.8ubuntu3
+APT-ID: 1936
+Multi-Arch: same
+Source: db5.3
+Source-Version: 5.3.28+dfsg1-0.8ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libbinutils
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 1655
+Multi-Arch: same
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), zlib1g (>= 1:1.2.0), binutils-common (= 2.38-3ubuntu1)
+Replaces: binutils (<< 2.29-6)
+Breaks: binutils (<< 2.29-6)
+
+Package: libgcab-1.0-0
+Architecture: arm64
+Version: 1.4-3build2
+APT-ID: 2229
+Multi-Arch: same
+Source: gcab
+Source-Version: 1.4-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.61.2), zlib1g (>= 1:1.1.4)
+
+Package: libp11-kit0
+Architecture: arm64
+Version: 0.24.0-6build1
+APT-ID: 3095
+Multi-Arch: same
+Source: p11-kit
+Source-Version: 0.24.0-6build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libffi8 (>= 3.4)
+Breaks: opencryptoki (<= 3.6.1+dfsg-1)
+
+Package: python3-jeepney
+Architecture: all
+Version: 0.7.1-3
+APT-ID: 5154
+Source: jeepney
+Source-Version: 0.7.1-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: libpython3.10-minimal
+Architecture: arm64
+Version: 3.10.4-3
+APT-ID: 3272
+Multi-Arch: same
+Source: python3.10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libssl3 (>= 3.0.0~~alpha1)
+Recommends: libpython3.10-stdlib
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: libfwupd2
+Architecture: arm64
+Version: 1.7.5-3
+APT-ID: 2214
+Multi-Arch: same
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libcurl3-gnutls (>= 7.63.0), libglib2.0-0 (>= 2.53.2), libjcat1 (>= 0.1.0), libjson-glib-1.0-0 (>= 1.5.2)
+
+Package: libapt-pkg6.0
+Architecture: arm64
+Version: 2.4.6
+APT-ID: 67194
+Multi-Arch: same
+Source: apt
+Source-Version: 2.4.6
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r127), liblzma5 (>= 5.1.1alpha+20120614), libstdc++6 (>= 11), libsystemd0 (>= 221), libudev1 (>= 183), libxxhash0 (>= 0.7.1), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.2.2.3)
+Recommends: apt (>= 2.4.6)
+Breaks: appstream (<< 0.9.0-3~), apt (<< 1.6~), aptitude (<< 0.8.9), dpkg (<< 1.20.8), libapt-inst1.5 (<< 0.9.9~)
+Provides: libapt-pkg (= 2.4.6)
+
+Package: python3-ptyprocess
+Architecture: all
+Version: 0.7.0-3
+APT-ID: 5286
+Source: ptyprocess
+Source-Version: 0.7.0-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: libxmuu1
+Architecture: arm64
+Version: 2:1.1.3-3
+APT-ID: 4160
+Multi-Arch: same
+Source: libxmu
+Source-Version: 2:1.1.3-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libx11-6
+
+Package: initramfs-tools-bin
+Architecture: arm64
+Version: 0.140ubuntu13
+APT-ID: 1090
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libudev1 (>= 183)
+
+Package: libefivar1
+Architecture: arm64
+Version: 37-6ubuntu2
+APT-ID: 2070
+Multi-Arch: same
+Source: efivar
+Source-Version: 37-6ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: efibootmgr (<< 0.12-2)
+
+Package: python3-hyperlink
+Architecture: all
+Version: 21.0.0-3
+APT-ID: 5139
+Source: hyperlink
+Source-Version: 21.0.0-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-idna (>= 2.5), python3:any
+
+Package: apparmor
+Architecture: arm64
+Version: 3.0.4-2ubuntu2.1
+APT-ID: 64744
+Source: apparmor
+Source-Version: 3.0.4-2ubuntu2.1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf, lsb-base, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34)
+Suggests: apparmor-profiles-extra, apparmor-utils
+Replaces: fcitx-data (<< 1:4.2.9.1-1ubuntu2)
+Breaks: apparmor-profiles-extra (<< 1.21), fcitx-data (<< 1:4.2.9.1-1ubuntu2), snapd (<< 2.44.3+20.04~)
+
+Package: python3-twisted
+Architecture: all
+Version: 22.1.0-2ubuntu2.1
+APT-ID: 66144
+Source: twisted
+Source-Version: 22.1.0-2ubuntu2.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-bcrypt (>= 3.0.0), python3-cryptography (>= 2.5), python3-hamcrest, python3-idna, python3-openssl, python3-service-identity (>= 18.1.0), python3-attr (>= 19.2.0), python3-automat (>= 0.8.0), python3-constantly, python3-hyperlink, python3-incremental (>= 21.3.0), python3-zope.interface (>= 4.4.2), python3:any
+Suggests: python3-pampy, python3-serial, python3-tk, python3-wxgtk4.0
+Conflicts: python3-twisted-experimental
+Replaces: python3-twisted-experimental
+Breaks: python3-h2 (<< 3.0.0), python3-treq (<< 20.9.0)
+
+Package: patch
+Architecture: arm64
+Version: 2.7.6-7build2
+APT-ID: 4736
+Multi-Arch: foreign
+Source: patch
+Source-Version: 2.7.6-7build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: ed, diffutils-doc
+
+Package: libfido2-1
+Architecture: arm64
+Version: 1.10.0-1
+APT-ID: 2147
+Multi-Arch: same
+Source: libfido2
+Source-Version: 1.10.0-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcbor0.8 (>= 0.5.0), libssl3 (>= 3.0.0~~alpha1), libudev1 (>= 183), zlib1g (>= 1:1.2.0)
+
+Package: kmod
+Architecture: arm64
+Version: 29-1ubuntu1
+APT-ID: 1138
+Multi-Arch: foreign
+Source: kmod
+Source-Version: 29-1ubuntu1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.1.1alpha+20120614), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0), libkmod2 (= 29-1ubuntu1), lsb-base
+
+Package: libtss2-tcti-swtpm0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3833
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: busybox-static
+Architecture: arm64
+Version: 1:1.30.1-7ubuntu3
+APT-ID: 142
+Source: busybox
+Source-Version: 1:1.30.1-7ubuntu3
+Priority: standard
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: busybox
+Replaces: busybox
+Provides: busybox
+
+Package: libblockdev-fs2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1670
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.24.2), libblockdev-part-err2 (>= 2.14), libblockdev-utils2 (>= 2.16), libc6 (>= 2.17), libglib2.0-0 (>= 2.42.2), libmount1 (>= 2.30.2), libparted-fs-resize0 (>= 3.1), libparted2 (>= 3.1), e2fsprogs
+
+Package: libmagic1
+Architecture: arm64
+Version: 1:5.41-3
+APT-ID: 2809
+Multi-Arch: same
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.33), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.1.4), libmagic-mgc (= 1:5.41-3)
+Suggests: file
+
+Package: python3-distro
+Architecture: all
+Version: 1.7.0-1
+APT-ID: 5093
+Multi-Arch: foreign
+Source: python-distro
+Source-Version: 1.7.0-1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-release, python3:any
+
+Package: libjansson4
+Architecture: arm64
+Version: 2.13.1-1.1build3
+APT-ID: 2658
+Multi-Arch: same
+Source: jansson
+Source-Version: 2.13.1-1.1build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libfribidi0
+Architecture: arm64
+Version: 1.0.8-2ubuntu3.1
+APT-ID: 64953
+Multi-Arch: same
+Source: fribidi
+Source-Version: 1.0.8-2ubuntu3.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libpython3.10-stdlib
+Architecture: arm64
+Version: 3.10.4-3
+APT-ID: 3273
+Multi-Arch: same
+Source: python3.10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3), media-types | mime-support, libbz2-1.0, libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libdb5.3, libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1)
+Replaces: python3-gdbm (<< 3.9.9-1~)
+Breaks: python3-gdbm (<< 3.9.9-1~)
+
+Package: librtmp1
+Architecture: arm64
+Version: 2.4+20151223.gitfa8646d.1-2build4
+APT-ID: 3552
+Multi-Arch: same
+Source: rtmpdump
+Source-Version: 2.4+20151223.gitfa8646d.1-2build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libgmp10 (>= 2:6.2.1+dfsg), libgnutls30 (>= 3.7.2), libhogweed6, libnettle8, zlib1g (>= 1:1.1.4)
+
+Package: debconf
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 264
+Multi-Arch: foreign
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: perl-base (>= 5.20.1-3~)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog, libterm-readline-gnu-perl, libgtk3-perl, libnet-ldap-perl, perl, debconf-kde-helper (>= 0.1+git20110702)
+Recommends: apt-utils (>= 0.5.1), debconf-i18n
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Replaces: debconf-tiny
+Breaks: apt-listchanges (<< 3.14), ubiquity (<< 17.10.2), update-notifier-common (<< 3.187~)
+Provides: debconf-2.0
+
+Package: libgpm2
+Architecture: arm64
+Version: 1.20.7-10build1
+APT-ID: 2415
+Multi-Arch: same
+Source: gpm
+Source-Version: 1.20.7-10build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: gpm
+
+Package: vim-common
+Architecture: all
+Version: 2:8.2.3995-1ubuntu2
+APT-ID: 5821
+Multi-Arch: foreign
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xxd
+Recommends: vim | vim-gtk3 | vim-athena | vim-nox | vim-tiny
+
+Package: liblvm2cmd2.03
+Architecture: arm64
+Version: 2.03.11-2.1ubuntu4
+APT-ID: 2792
+Multi-Arch: same
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaio1 (>= 0.3.93), libblkid1 (>= 2.24.2), libc6 (>= 2.33), libselinux1 (>= 3.1~), libsystemd0 (>= 222), libudev1 (>= 183), dmeventd
+
+Package: libsigsegv2
+Architecture: arm64
+Version: 2.13-1ubuntu3
+APT-ID: 3609
+Multi-Arch: same
+Source: libsigsegv
+Source-Version: 2.13-1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libip4tc2
+Architecture: arm64
+Version: 1.8.7-1ubuntu5
+APT-ID: 2608
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28)
+
+Package: software-properties-common
+Architecture: all
+Version: 0.99.22.2
+APT-ID: 66176
+Source: software-properties
+Source-Version: 0.99.22.2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ca-certificates, gir1.2-glib-2.0, gir1.2-packagekitglib-1.0 (>= 1.1.0-2), packagekit, python-apt-common (>= 0.9), python3, python3-dbus, python3-gi, python3-software-properties (= 0.99.22.2), python3:any
+Replaces: python-software-properties (<< 0.85), python3-software-properties (<< 0.85)
+Breaks: python-software-properties (<< 0.85), python3-software-properties (<< 0.85)
+
+Package: libsystemd0
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65263
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: important
+Section: libs
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libzstd1 (>= 1.4.0)
+
+Package: libsystemd0
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 67999
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libzstd1 (>= 1.4.0)
+
+Package: pci.ids
+Architecture: all
+Version: 0.0~2022.01.22-1
+APT-ID: 4739
+Multi-Arch: foreign
+Source: pci.ids
+Source-Version: 0.0~2022.01.22-1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: pciutils (<< 1:3.6.2-4~)
+Breaks: pciutils (<< 1:3.6.2-4~)
+
+Package: libtcl8.6
+Architecture: arm64
+Version: 8.6.12+dfsg-1build1
+APT-ID: 3745
+Multi-Arch: same
+Source: tcl8.6
+Source-Version: 8.6.12+dfsg-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tzdata, libc6 (>= 2.35), zlib1g (>= 1:1.2.2)
+Suggests: tcl8.6
+Conflicts: tcl74 (<= 7.4p3-2), tcl8.6 (<< 8.6.0-2)
+Replaces: tcl8.6 (<< 8.6.0-2)
+Breaks: nsf (<< 2.2.0)
+Provides: libtcl
+
+Package: libmount1
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 2884
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: cryptsetup-bin
+
+Package: udisks2
+Architecture: arm64
+Version: 2.9.4-1ubuntu2
+APT-ID: 5786
+Multi-Arch: foreign
+Source: udisks2
+Source-Version: 2.9.4-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, libblockdev-fs2, libblockdev-loop2, libblockdev-part2, libblockdev-swap2, parted, udev, libacl1 (>= 2.2.23), libatasmart4 (>= 0.13), libblockdev-utils2 (>= 2.24), libblockdev2 (>= 2.25), libc6 (>= 2.34), libglib2.0-0 (>= 2.50), libgudev-1.0-0 (>= 165), libmount1 (>= 2.30), libpolkit-agent-1-0 (>= 0.102), libpolkit-gobject-1-0 (>= 0.102), libsystemd0 (>= 209), libudisks2-0 (>= 2.9.0), libuuid1 (>= 2.16)
+Suggests: btrfs-progs, f2fs-tools, libblockdev-mdraid2, mdadm, nilfs-tools, reiserfsprogs, udftools, udisks2-bcache, udisks2-btrfs, udisks2-lvm2, udisks2-zram, xfsprogs, exfatprogs
+Recommends: dosfstools, e2fsprogs, eject, libblockdev-crypto2, ntfs-3g, policykit-1, libpam-systemd
+
+Package: libxau6
+Architecture: arm64
+Version: 1:1.0.9-1build5
+APT-ID: 4030
+Multi-Arch: same
+Source: libxau
+Source-Version: 1:1.0.9-1build5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: file
+Architecture: arm64
+Version: 1:5.41-3
+APT-ID: 407
+Multi-Arch: foreign
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libmagic1 (= 1:5.41-3)
+Breaks: debhelper (<< 12.2~)
+
+Package: python3-requests
+Architecture: all
+Version: 2.25.1+dfsg-2
+APT-ID: 5331
+Source: requests
+Source-Version: 2.25.1+dfsg-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-certifi, python3-chardet (>= 3.0.2), python3-idna, python3-urllib3 (>= 1.21.1), python3:any, ca-certificates
+Suggests: python3-cryptography, python3-idna (>= 2.5), python3-openssl, python3-socks, python-requests-doc
+Breaks: awscli (<< 1.11.139)
+
+Package: libpipeline1
+Architecture: arm64
+Version: 1.5.5-1
+APT-ID: 3189
+Multi-Arch: same
+Source: libpipeline
+Source-Version: 1.5.5-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.26)
+
+Package: libnss-systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65023
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4)
+
+Package: libnss-systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 67997
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.1)
+
+Package: debianutils
+Architecture: arm64
+Version: 5.5-1ubuntu2
+APT-ID: 269
+Essential: yes
+Multi-Arch: foreign
+Source: debianutils
+Source-Version: 5.5-1ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34)
+Breaks: ifupdown (<< 0.8.36+nmu1), printer-driver-pnm2ppa (<< 1.13-12), x11-common (<< 1:7.7+23~)
+
+Package: libpopt0
+Architecture: arm64
+Version: 1.18-3build1
+APT-ID: 3233
+Multi-Arch: same
+Source: popt
+Source-Version: 1.18-3build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libxcb1
+Architecture: arm64
+Version: 1.14-3ubuntu3
+APT-ID: 4094
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libxau6 (>= 1:1.0.9), libxdmcp6
+Breaks: alsa-utils (<< 1.0.24.2-5)
+
+Package: python3-importlib-metadata
+Architecture: all
+Version: 4.6.4-1
+APT-ID: 5144
+Source: python-importlib-metadata
+Source-Version: 4.6.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-zipp (>= 0.5), python3:any
+
+Package: logrotate
+Architecture: arm64
+Version: 3.19.0-1ubuntu1.1
+APT-ID: 66040
+Multi-Arch: foreign
+Source: logrotate
+Source-Version: 3.19.0-1ubuntu1.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cron | anacron | cron-daemon | systemd-sysv, libacl1 (>= 2.2.23), libc6 (>= 2.34), libpopt0 (>= 1.14), libselinux1 (>= 3.1~)
+Suggests: bsd-mailx | mailx
+
+Package: libapparmor1
+Architecture: arm64
+Version: 3.0.4-2ubuntu2.1
+APT-ID: 64893
+Multi-Arch: same
+Source: apparmor
+Source-Version: 3.0.4-2ubuntu2.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: libapparmor-perl (<< 3.0.3-3)
+Breaks: libapparmor-perl (<< 3.0.3-3)
+
+Package: install-info
+Architecture: arm64
+Version: 6.8-4build1
+APT-ID: 1093
+Multi-Arch: foreign
+Source: texinfo
+Source-Version: 6.8-4build1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Pre-Depends: dpkg (>= 1.16.1)
+Replaces: texinfo (<< 4.13a.dfsg.1-2)
+Breaks: texinfo (<< 4.13a.dfsg.1-2)
+
+Package: libmspack0
+Architecture: arm64
+Version: 0.10.1-2build2
+APT-ID: 2902
+Multi-Arch: same
+Source: libmspack
+Source-Version: 0.10.1-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: systemd-journal-remote
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 67121
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libcurl3-gnutls (>= 7.16.2), libgnutls30 (>= 3.7.0), libmicrohttpd12 (>= 0.9.50), systemd (= 249.11-0ubuntu3.4), adduser
+
+Package: libnuma1
+Architecture: arm64
+Version: 2.0.14-3ubuntu2
+APT-ID: 3037
+Multi-Arch: same
+Source: numactl
+Source-Version: 2.0.14-3ubuntu2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: xfsprogs
+Architecture: arm64
+Version: 5.13.0-1ubuntu2
+APT-ID: 5911
+Source: xfsprogs
+Source-Version: 5.13.0-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.20), libedit2 (>= 2.11-20080614-0), libicu70 (>= 70.1-1~), libinih1 (>= 53), libuuid1 (>= 2.16), python3:any
+Suggests: xfsdump, acl, attr, quota
+Replaces: xfsdump (<< 3.0.0)
+Breaks: xfsdump (<< 3.0.0)
+Provides: fsck-backend
+
+Package: plymouth-theme-ubuntu-text
+Architecture: arm64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4806
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libplymouth5 (>= 0.9.2), plymouth (= 0.9.5+git20211018-1ubuntu3), lsb-release
+Provides: plymouth-theme
+
+Package: python3-httplib2
+Architecture: all
+Version: 0.20.2-2
+APT-ID: 5138
+Source: python-httplib2
+Source-Version: 0.20.2-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ca-certificates, python3-pyparsing, python3:any
+Breaks: python3-pysimplesoap (<< 1.16-2.1), python3-wsgi-intercept (<< 1.9.0)
+
+Package: python3-hamcrest
+Architecture: all
+Version: 2.0.2-2
+APT-ID: 5133
+Source: pyhamcrest
+Source-Version: 2.0.2-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: python3
+Architecture: arm64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5010
+Multi-Arch: allowed
+Source: python3-defaults
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3.10 (>= 3.10.4-1~), libpython3-stdlib (= 3.10.4-0ubuntu2)
+Pre-Depends: python3-minimal (= 3.10.4-0ubuntu2)
+Suggests: python3-doc (>= 3.10.4-0ubuntu2), python3-tk (>= 3.9.10-2~), python3-venv (>= 3.10.4-0ubuntu2)
+Replaces: python3-minimal (<< 3.1.2-2)
+Provides: python3-profiler
+
+Package: libudev-dev
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65264
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libudev1 (= 249.11-0ubuntu3.4)
+
+Package: libatasmart4
+Architecture: arm64
+Version: 0.19-5build2
+APT-ID: 1586
+Multi-Arch: same
+Source: libatasmart
+Source-Version: 0.19-5build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libudev1 (>= 183)
+
+Package: openssh-server
+Architecture: arm64
+Version: 1:8.9p1-3
+APT-ID: 4697
+Multi-Arch: foreign
+Source: openssh
+Source-Version: 1:8.9p1-3
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: adduser (>= 3.9), dpkg (>= 1.9.0), libpam-modules (>= 0.72-9), libpam-runtime (>= 0.76-14), lsb-base (>= 4.1+Debian3), openssh-client (= 1:8.9p1-3), openssh-sftp-server, procps, ucf (>= 0.28), debconf (>= 0.5) | debconf-2.0, libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libcrypt1 (>= 1:4.1.0), libgssapi-krb5-2 (>= 1.17), libkrb5-3 (>= 1.13~alpha1+dfsg), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libssl3 (>= 3.0.1), libsystemd0, libwrap0 (>= 7.6-4~), zlib1g (>= 1:1.1.4)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: molly-guard, monkeysphere, ssh-askpass, ufw
+Recommends: default-logind | logind | libpam-systemd, ncurses-term, xauth, ssh-import-id
+Conflicts: sftp, ssh-socks, ssh2
+Replaces: openssh-client (<< 1:7.9p1-8), ssh, ssh-krb5
+Provides: ssh-server
+
+Package: libdbus-1-3
+Architecture: arm64
+Version: 1.12.20-2ubuntu4
+APT-ID: 1956
+Multi-Arch: same
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0
+Recommends: dbus
+Breaks: dbus (<< 1.9.16-1~)
+
+Package: landscape-common
+Architecture: arm64
+Version: 19.12-0ubuntu13
+APT-ID: 1147
+Source: landscape-client
+Source-Version: 19.12-0ubuntu13
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, debconf (>= 0.5) | debconf-2.0, python3-twisted, python3-configobj, python3-apt, ca-certificates, python3-gdbm, python3-netifaces, lsb-release, lsb-base, adduser, bc, lshw, libpam-modules
+
+Package: python3-urllib3
+Architecture: all
+Version: 1.26.5-1~exp1
+APT-ID: 5398
+Source: python-urllib3
+Source-Version: 1.26.5-1~exp1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3:any, python3-six
+Suggests: python3-cryptography, python3-idna, python3-openssl, python3-socks
+Recommends: ca-certificates
+
+Package: irqbalance
+Architecture: arm64
+Version: 1.8.0-1build1
+APT-ID: 1109
+Source: irqbalance
+Source-Version: 1.8.0-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libglib2.0-0 (>= 2.35.8), libncursesw6 (>= 6), libnuma1 (>= 2.0.11), libsystemd0, libtinfo6 (>= 6)
+Pre-Depends: init-system-helpers (>= 1.54~)
+
+Package: gnupg
+Architecture: all
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64862
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dirmngr (<< 2.2.27-3ubuntu2.1.1~), dirmngr (>= 2.2.27-3ubuntu2.1), gnupg-l10n (= 2.2.27-3ubuntu2.1), gnupg-utils (<< 2.2.27-3ubuntu2.1.1~), gnupg-utils (>= 2.2.27-3ubuntu2.1), gpg (<< 2.2.27-3ubuntu2.1.1~), gpg (>= 2.2.27-3ubuntu2.1), gpg-agent (<< 2.2.27-3ubuntu2.1.1~), gpg-agent (>= 2.2.27-3ubuntu2.1), gpg-wks-client (<< 2.2.27-3ubuntu2.1.1~), gpg-wks-client (>= 2.2.27-3ubuntu2.1), gpg-wks-server (<< 2.2.27-3ubuntu2.1.1~), gpg-wks-server (>= 2.2.27-3ubuntu2.1), gpgsm (<< 2.2.27-3ubuntu2.1.1~), gpgsm (>= 2.2.27-3ubuntu2.1), gpgv (<< 2.2.27-3ubuntu2.1.1~), gpgv (>= 2.2.27-3ubuntu2.1)
+Suggests: parcimonie, xloadimage
+Replaces: gnupg2 (<< 2.1.11-7+exp1)
+Breaks: debsig-verify (<< 0.15), dirmngr (<< 2.2.27-3ubuntu2.1), gnupg2 (<< 2.1.11-7+exp1), libgnupg-interface-perl (<< 0.52-3), libgnupg-perl (<= 0.19-1), libmail-gnupg-perl (<= 0.22-1), monkeysphere (<< 0.38~), php-crypt-gpg (<= 1.4.1-1), python-apt (<= 1.1.0~beta4), python-gnupg (<< 0.3.8-3), python3-apt (<= 1.1.0~beta4)
+
+Package: libsasl2-modules-db
+Architecture: arm64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3571
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libdb5.3
+
+Package: libmpfr6
+Architecture: arm64
+Version: 4.1.0-3build3
+APT-ID: 2897
+Multi-Arch: same
+Source: mpfr4
+Source-Version: 4.1.0-3build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libgmp10 (>= 2:6.2.1+dfsg)
+Breaks: libgmp3 (<< 4.1.4-3), libmpc3 (<< 1.1.0-1~)
+
+Package: gpg-wks-server
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64869
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpg (= 2.2.27-3ubuntu2.1), gpg-agent (= 2.2.27-3ubuntu2.1), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+
+Package: libkrb5support0
+Architecture: arm64
+Version: 1.19.2-2
+APT-ID: 2717
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: libgssapi-krb5-2 (<< 1.13~alpha1-1), libk5crypto3 (<< 1.16), libkadm5clnt-mit9 (<< 1.13~alpha1-1), libkadm5srv-mit9 (<< 1.13~alpha1-1), libkdb5-8 (<< 1.16)
+
+Package: python3-software-properties
+Architecture: all
+Version: 0.99.22.2
+APT-ID: 66143
+Source: software-properties
+Source-Version: 0.99.22.2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpg, iso-codes, lsb-release, python3, python3-apt (>= 0.6.20ubuntu16), python3-gi, python3-launchpadlib, python3:any
+Recommends: unattended-upgrades
+
+Package: libsepol2
+Architecture: arm64
+Version: 3.3-1build1
+APT-ID: 3596
+Multi-Arch: same
+Source: libsepol
+Source-Version: 3.3-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: ubuntu-keyring
+Architecture: all
+Version: 2021.03.26
+APT-ID: 5767
+Multi-Arch: foreign
+Source: ubuntu-keyring
+Source-Version: 2021.03.26
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ubuntu-cloudimage-keyring (<< 2018.02.05)
+Breaks: ubuntu-cloudimage-keyring (<< 2018.02.05)
+
+Package: squashfs-tools
+Architecture: arm64
+Version: 1:4.5-3build1
+APT-ID: 5570
+Source: squashfs-tools
+Source-Version: 1:4.5-3build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.1.1alpha+20120614), liblzo2-2 (>= 2.02), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+
+Package: python3-pyparsing
+Architecture: all
+Version: 2.4.7-1
+APT-ID: 5303
+Source: pyparsing
+Source-Version: 2.4.7-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-pyparsing-doc
+
+Package: libbpf0
+Architecture: arm64
+Version: 1:0.5.0-1
+APT-ID: 1725
+Multi-Arch: same
+Source: libbpf
+Source-Version: 0.5.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.22), libelf1 (>= 0.142), zlib1g (>= 1:1.2.3.3)
+
+Package: libfastjson4
+Architecture: arm64
+Version: 0.99.9-1build2
+APT-ID: 2130
+Multi-Arch: same
+Source: libfastjson
+Source-Version: 0.99.9-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libmnl0
+Architecture: arm64
+Version: 1.0.4-3build2
+APT-ID: 2875
+Multi-Arch: same
+Source: libmnl
+Source-Version: 1.0.4-3build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libeatmydata1
+Architecture: arm64
+Version: 130-2build1
+APT-ID: 2042
+Multi-Arch: same
+Source: libeatmydata
+Source-Version: 130-2build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34)
+Replaces: eatmydata (<< 82-1)
+Breaks: eatmydata (<< 82-1)
+
+Package: libtss2-mu0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3827
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: python3-lazr.uri
+Architecture: all
+Version: 1.0.6-2
+APT-ID: 5171
+Source: lazr.uri
+Source-Version: 1.0.6-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-importlib-metadata | python3 (>> 3.8), python3-pkg-resources, python3:any
+
+Package: libxml2
+Architecture: arm64
+Version: 2.9.13+dfsg-1ubuntu0.1
+APT-ID: 65294
+Multi-Arch: same
+Source: libxml2
+Source-Version: 2.9.13+dfsg-1ubuntu0.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libicu70 (>= 70.1-1~), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.2.3.3)
+Conflicts: w3c-dtd-xhtml
+
+Package: gir1.2-packagekitglib-1.0
+Architecture: arm64
+Version: 1.2.5-2ubuntu2
+APT-ID: 712
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.36), libpackagekit-glib2-18 (>= 1.2.5)
+
+Package: xz-utils
+Architecture: arm64
+Version: 5.2.5-2ubuntu1
+APT-ID: 5945
+Multi-Arch: foreign
+Source: xz-utils
+Source-Version: 5.2.5-2ubuntu1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.2.2)
+Conflicts: lzma (<< 9.22-1), xz-lzma
+Replaces: lzip (<< 1.8~rc2), xz-lzma
+Breaks: lzip (<< 1.8~rc2)
+Provides: lzma
+
+Package: libglib2.0-data
+Architecture: all
+Version: 2.72.1-1
+APT-ID: 2321
+Multi-Arch: foreign
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libzstd1
+Architecture: arm64
+Version: 1.4.8+dfsg-3build1
+APT-ID: 4220
+Multi-Arch: same
+Source: libzstd
+Source-Version: 1.4.8+dfsg-3build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: util-linux
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 5813
+Essential: yes
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libcrypt1 (>= 1:4.1.0), libmount1 (>= 2.37.2), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libsmartcols1 (>= 2.34), libsystemd0, libtinfo6 (>= 6), libudev1 (>= 183), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: dosfstools, kbd, util-linux-locales
+Conflicts: hardlink
+Replaces: hardlink
+Provides: hardlink
+
+Package: libbsd0
+Architecture: arm64
+Version: 0.11.5-1
+APT-ID: 1732
+Multi-Arch: same
+Source: libbsd
+Source-Version: 0.11.5-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libmd0 (>= 1.0.3-2)
+
+Package: python3-jsonpatch
+Architecture: all
+Version: 1.32-2
+APT-ID: 5158
+Source: python-json-patch
+Source-Version: 1.32-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-json-pointer, python3:any
+
+Package: cloud-guest-utils
+Architecture: all
+Version: 0.32-22-g45fe84a5-0ubuntu1
+APT-ID: 184
+Source: cloud-utils
+Source-Version: 0.32-22-g45fe84a5-0ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fdisk | gdisk, python3:any
+Replaces: cloud-utils (<< 0.27-0ubuntu3)
+Breaks: cloud-utils (<< 0.27-0ubuntu3)
+
+Package: less
+Architecture: arm64
+Version: 590-1build1
+APT-ID: 1501
+Multi-Arch: foreign
+Source: less
+Source-Version: 590-1build1
+Priority: required
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+
+Package: python-apt-common
+Architecture: all
+Version: 2.3.0ubuntu2
+APT-ID: 4874
+Multi-Arch: foreign
+Source: python-apt
+Source-Version: 2.3.0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: python-apt (<< 0.7.98+nmu1)
+Breaks: python-apt (<< 0.7.98+nmu1)
+Enhances: python-apt, python3-apt
+
+Package: python3-more-itertools
+Architecture: all
+Version: 8.10.0-2
+APT-ID: 5202
+Source: more-itertools
+Source-Version: 8.10.0-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: libgpgme11
+Architecture: arm64
+Version: 1.16.0-1.2ubuntu4
+APT-ID: 2406
+Multi-Arch: same
+Source: gpgme1.0
+Source-Version: 1.16.0-1.2ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnupg (>= 2.1.21-4) | gpg, libassuan0 (>= 2.4.2), libc6 (>= 2.34), libgpg-error0 (>= 1.36)
+Recommends: dirmngr, gpg-agent, gpg-wks-client, gpgsm
+
+Package: psmisc
+Architecture: arm64
+Version: 23.4-2build3
+APT-ID: 4864
+Multi-Arch: foreign
+Source: psmisc
+Source-Version: 23.4-2build3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+Replaces: manpages-de (<< 4.9.1-1)
+Breaks: manpages-de (<< 4.9.1-1)
+
+Package: python3-automat
+Architecture: all
+Version: 20.2.0-1
+APT-ID: 5031
+Source: automat
+Source-Version: 20.2.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-attr, python3-six, python3:any
+
+Package: libldap-2.5-0
+Architecture: arm64
+Version: 2.5.12+dfsg-0ubuntu0.22.04.1
+APT-ID: 64997
+Multi-Arch: same
+Source: openldap
+Source-Version: 2.5.12+dfsg-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgnutls30 (>= 3.7.2), libsasl2-2 (>= 2.1.27+dfsg2)
+Recommends: libldap-common
+Conflicts: ldap-utils (<= 2.1.23-1)
+Replaces: libldap-2.3-0, libldap2
+
+Package: systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66181
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaudit1 (>= 1:2.2.1), libcrypt1 (>= 1:4.4.0), libcryptsetup12 (>= 2:2.4), libgnutls30 (>= 3.7.2), libgpg-error0 (>= 1.14), libip4tc2 (>= 1.8.3), libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130), libmount1 (>= 2.30), libpam0g (>= 0.99.7.1), libseccomp2 (>= 2.4.1), libssl3 (>= 3.0.0~~alpha1), libsystemd0 (= 249.11-0ubuntu3.4), util-linux (>= 2.27.1), mount (>= 2.26), adduser
+Pre-Depends: libblkid1 (>= 2.24), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0)
+Suggests: systemd-container, libfido2-1, libtss2-esys-3.0.2-0, libtss2-mu0, libtss2-rc0, policykit-1
+Recommends: default-dbus-system-bus | dbus-system-bus, networkd-dispatcher, systemd-timesyncd | time-daemon
+Conflicts: consolekit, libpam-ck-connector, systemd-shim
+Breaks: resolvconf (<< 1.83~), udev (<< 247~)
+Provides: systemd-tmpfiles (= 249.11-0ubuntu3.4), systemd-sysusers (= 249.11-0ubuntu3.4)
+
+Package: systemd
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 68001
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaudit1 (>= 1:2.2.1), libcrypt1 (>= 1:4.4.0), libcryptsetup12 (>= 2:2.4), libgnutls30 (>= 3.7.2), libgpg-error0 (>= 1.14), libip4tc2 (>= 1.8.3), libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130), libmount1 (>= 2.30), libpam0g (>= 0.99.7.1), libseccomp2 (>= 2.4.1), libsystemd0 (= 249.11-0ubuntu3.1), util-linux (>= 2.27.1), mount (>= 2.26), adduser
+Pre-Depends: libblkid1 (>= 2.24), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0)
+Suggests: systemd-container, policykit-1
+Recommends: default-dbus-system-bus | dbus-system-bus, networkd-dispatcher, systemd-timesyncd | time-daemon
+Conflicts: consolekit, libpam-ck-connector, systemd-shim
+Breaks: resolvconf (<< 1.83~), udev (<< 247~)
+Provides: systemd-tmpfiles (= 249.11-0ubuntu3.1), systemd-sysusers (= 249.11-0ubuntu3.1)
+
+Package: mtr-tiny
+Architecture: arm64
+Version: 0.95-1
+APT-ID: 4546
+Source: mtr
+Source-Version: 0.95-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libjansson4 (>= 2.0.1), libncurses6 (>= 6), libtinfo6 (>= 6)
+Replaces: mtr
+Breaks: mtr, suidmanager (<< 0.50)
+
+Package: libudev1
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65265
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: important
+Section: libs
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libudev1
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 68000
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: gpg-agent
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64867
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), pinentry-curses | pinentry, init-system-helpers (>= 1.52), libassuan0 (>= 2.5.1), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libnpth0 (>= 0.90)
+Suggests: dbus-user-session, libpam-systemd, pinentry-gnome3, scdaemon
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg-agent (<< 2.1.21-4)
+Provides: gnupg-agent
+
+Package: libstemmer0d
+Architecture: arm64
+Version: 2.2.0-1build1
+APT-ID: 3704
+Multi-Arch: same
+Source: snowball
+Source-Version: 2.2.0-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: console-setup-linux
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 202
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kbd (>= 0.99-12) | console-tools (>= 1:0.2.3-16), keyboard-configuration (= 1.205ubuntu3), init-system-helpers (>= 1.29~) | initscripts
+Suggests: console-setup
+Conflicts: console-setup-freebsd
+Replaces: console-setup (<< 1.71), console-terminus
+Breaks: console-cyrillic (<= 0.9-11), console-setup (<< 1.71), console-terminus
+Provides: console-terminus
+
+Package: libgpg-error0
+Architecture: arm64
+Version: 1.43-3
+APT-ID: 2404
+Multi-Arch: same
+Source: libgpg-error
+Source-Version: 1.43-3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: libgpg-error-l10n
+
+Package: wget
+Architecture: arm64
+Version: 1.21.2-2ubuntu1
+APT-ID: 5844
+Multi-Arch: foreign
+Source: wget
+Source-Version: 1.21.2-2ubuntu1
+Priority: standard
+Section: web
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libidn2-0 (>= 0.6), libpcre2-8-0 (>= 10.22), libpsl5 (>= 0.16.0), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+Conflicts: wget-ssl
+
+Package: shared-mime-info
+Architecture: arm64
+Version: 2.1-2
+APT-ID: 5534
+Multi-Arch: foreign
+Source: shared-mime-info
+Source-Version: 2.1-2
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libxml2 (>= 2.7.4)
+
+Package: isc-dhcp-common
+Architecture: arm64
+Version: 4.4.1-2.3ubuntu2.1
+APT-ID: 64883
+Source: isc-dhcp
+Source-Version: 4.4.1-2.3ubuntu2.1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debianutils (>= 2.8.2)
+
+Package: liblocale-gettext-perl
+Architecture: arm64
+Version: 1.07-4build3
+APT-ID: 2761
+Source: liblocale-gettext-perl
+Source-Version: 1.07-4build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Pre-Depends: perl-base, perlapi-5.34.0
+
+Package: fdisk
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 403
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfdisk1 (>= 2.36), libmount1 (>= 2.24.2), libncursesw6 (>= 6), libreadline8 (>= 6.0), libsmartcols1 (>= 2.28~rc1), libtinfo6 (>= 6)
+
+Package: libisc-export1105
+Architecture: arm64
+Version: 1:9.11.19+dfsg-2.1ubuntu3
+APT-ID: 2628
+Multi-Arch: same
+Source: bind9-libs
+Source-Version: 1:9.11.19+dfsg-2.1ubuntu3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+
+Package: libappstream4
+Architecture: arm64
+Version: 0.15.2-2
+APT-ID: 1546
+Multi-Arch: same
+Source: appstream
+Source-Version: 0.15.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcurl3-gnutls (>= 7.63.0), libglib2.0-0 (>= 2.67.3+git20210214), libstemmer0d (>= 0+svn527), libxml2 (>= 2.9.0), libxmlb2 (>= 0.3.4), libyaml-0-2
+
+Package: libyaml-0-2
+Architecture: arm64
+Version: 0.2.2-1build2
+APT-ID: 4201
+Multi-Arch: same
+Source: libyaml
+Source-Version: 0.2.2-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libpng16-16
+Architecture: arm64
+Version: 1.6.37-3build5
+APT-ID: 3217
+Multi-Arch: same
+Source: libpng1.6
+Source-Version: 1.6.37-3build5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), zlib1g (>= 1:1.2.11)
+
+Package: libreadline8
+Architecture: arm64
+Version: 8.1.2-1
+APT-ID: 3323
+Multi-Arch: same
+Source: readline
+Source-Version: 8.1.2-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: readline-common, libc6 (>= 2.33), libtinfo6 (>= 6)
+
+Package: libvolume-key1
+Architecture: arm64
+Version: 0.3.12-3.1build3
+APT-ID: 3948
+Source: volume-key
+Source-Version: 0.3.12-3.1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.16), libc6 (>= 2.17), libcryptsetup12 (>= 2:1.4), libglib2.0-0 (>= 2.18.0), libgpgme11 (>= 1.4.1), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.13.4-2~), gnupg
+
+Package: libcom-err2
+Architecture: arm64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 64903
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Replaces: libcomerr2 (<< 1.43.9-1~)
+Breaks: libcomerr2 (<< 1.43.9-1~)
+Provides: libcomerr2 (= 1.46.5-2ubuntu1.1)
+
+Package: gettext-base
+Architecture: arm64
+Version: 0.21-4ubuntu4
+APT-ID: 602
+Multi-Arch: foreign
+Source: gettext
+Source-Version: 0.21-4ubuntu4
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libmaxminddb0
+Architecture: arm64
+Version: 1.5.2-1build2
+APT-ID: 2823
+Multi-Arch: same
+Source: libmaxminddb
+Source-Version: 1.5.2-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: mmdb-bin
+
+Package: diffutils
+Architecture: arm64
+Version: 1:3.8-0ubuntu2
+APT-ID: 312
+Essential: yes
+Source: diffutils
+Source-Version: 1:3.8-0ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34)
+Suggests: diffutils-doc, wdiff
+Replaces: diff
+
+Package: strace
+Architecture: arm64
+Version: 5.16-0ubuntu3
+APT-ID: 5589
+Source: strace
+Source-Version: 5.16-0ubuntu3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: publicsuffix
+Architecture: all
+Version: 20211207.1025-1
+APT-ID: 4865
+Multi-Arch: foreign
+Source: publicsuffix
+Source-Version: 20211207.1025-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Provides: publicsuffix-dafsa
+
+Package: python3-attr
+Architecture: all
+Version: 21.2.0-1
+APT-ID: 5030
+Source: python-attrs
+Source-Version: 21.2.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-attr-doc
+
+Package: sensible-utils
+Architecture: all
+Version: 0.0.17
+APT-ID: 5527
+Multi-Arch: foreign
+Source: sensible-utils
+Source-Version: 0.0.17
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+
+Package: python3-pkg-resources
+Architecture: all
+Version: 59.6.0-1.2
+APT-ID: 5276
+Multi-Arch: foreign
+Source: setuptools
+Source-Version: 59.6.0-1.2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python3-setuptools
+
+Package: python3-wadllib
+Architecture: all
+Version: 1.3.6-1
+APT-ID: 5404
+Source: python-wadllib
+Source-Version: 1.3.6-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-lazr.uri, python3-pkg-resources, python3:any
+
+Package: python3-gdbm
+Architecture: arm64
+Version: 3.10.4-0ubuntu1
+APT-ID: 5119
+Multi-Arch: same
+Source: python3-stdlib-extensions
+Source-Version: 3.10.4-0ubuntu1
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3.10.1-0~), python3 (<< 3.11), libc6 (>= 2.17), libgdbm6 (>= 1.16)
+Suggests: python3-gdbm-dbg
+Provides: python3.10-gdbm
+
+Package: libsort-naturally-perl
+Architecture: all
+Version: 1.03-2
+APT-ID: 3635
+Source: libsort-naturally-perl
+Source-Version: 1.03-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: overlayroot
+Architecture: all
+Version: 0.47ubuntu1
+APT-ID: 4712
+Source: cloud-initramfs-tools
+Source-Version: 0.47ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cryptsetup, cryptsetup-bin, initramfs-tools
+Suggests: haveged
+
+Package: libfdisk1
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 2136
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.24.2), libc6 (>= 2.33), libuuid1 (>= 2.16)
+
+Package: gdisk
+Architecture: arm64
+Version: 1.0.8-4build1
+APT-ID: 592
+Source: gdisk
+Source-Version: 1.0.8-4build1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libncursesw6 (>= 6), libpopt0 (>= 1.14), libstdc++6 (>= 9), libtinfo6 (>= 6), libuuid1 (>= 2.16)
+Recommends: groff-base
+
+Package: secureboot-db
+Architecture: arm64
+Version: 1.8
+APT-ID: 5525
+Source: secureboot-db
+Source-Version: 1.8
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: sbsigntool
+
+Package: gawk
+Architecture: arm64
+Version: 1:5.1.0-1build3
+APT-ID: 570
+Multi-Arch: foreign
+Source: gawk
+Source-Version: 1:5.1.0-1build3
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libmpfr6 (>= 3.1.3), libreadline8 (>= 6.0), libsigsegv2 (>= 2.9)
+Suggests: gawk-doc
+Provides: awk
+
+Package: libassuan0
+Architecture: arm64
+Version: 2.5.5-1build1
+APT-ID: 1582
+Multi-Arch: same
+Source: libassuan
+Source-Version: 2.5.5-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgpg-error0 (>= 1.33)
+
+Package: libnpth0
+Architecture: arm64
+Version: 1.6-3build2
+APT-ID: 3017
+Multi-Arch: same
+Source: npth
+Source-Version: 1.6-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libdrm-common
+Architecture: all
+Version: 2.4.110-1ubuntu1
+APT-ID: 2024
+Multi-Arch: foreign
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libx11-data
+Architecture: all
+Version: 2:1.7.5-1
+APT-ID: 4023
+Multi-Arch: foreign
+Source: libx11
+Source-Version: 2:1.7.5-1
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libx11-6 (<< 2:1.4.1)
+
+Package: python3-babel
+Architecture: all
+Version: 2.8.0+dfsg.1-7
+APT-ID: 5035
+Source: python-babel
+Source-Version: 2.8.0+dfsg.1-7
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python-babel-localedata (= 2.8.0+dfsg.1-7), python3-pkg-resources, python3-tz, python3:any
+
+Package: eject
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 356
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libmount1 (>= 2.24.2)
+
+Package: usbutils
+Architecture: arm64
+Version: 1:014-1build1
+APT-ID: 5810
+Multi-Arch: foreign
+Source: usbutils
+Source-Version: 1:014-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 196), libusb-1.0-0 (>= 2:1.0.22)
+Breaks: hwdata (<< 0.334-1~), isenkram (<< 0.45~), kinfocenter (<< 4:5.14.5-2~), libosinfo-1.0-0 (<< 1.8.0-1~), usbip (<< 2.0+5.10.4-1~)
+
+Package: packagekit
+Architecture: arm64
+Version: 1.2.5-2ubuntu2
+APT-ID: 4727
+Multi-Arch: foreign
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-bin, policykit-1, init-system-helpers (>= 1.52), libappstream4 (>= 0.10.0), libapt-pkg6.0 (>= 1.9.2), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.61.2), libgstreamer1.0-0 (>= 1.0.0), libpackagekit-glib2-18 (>= 1.2.4), libpolkit-gobject-1-0 (>= 0.99), libsqlite3-0 (>= 3.5.9), libstdc++6 (>= 11), libsystemd0 (>= 214)
+Suggests: appstream
+Recommends: packagekit-tools, systemd
+Breaks: plymouth (<< 0.9.5)
+
+Package: libgudev-1.0-0
+Architecture: arm64
+Version: 1:237-2build1
+APT-ID: 2483
+Multi-Arch: same
+Source: libgudev
+Source-Version: 237-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.38.0), libudev1 (>= 199)
+
+Package: lshw
+Architecture: arm64
+Version: 02.19.git.2021.06.19.996aaad9c7-2build1
+APT-ID: 4485
+Source: lshw
+Source-Version: 02.19.git.2021.06.19.996aaad9c7-2build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11)
+Recommends: pci.ids, usb.ids
+
+Package: lsof
+Architecture: arm64
+Version: 4.93.2+dfsg-1.1build2
+APT-ID: 4486
+Source: lsof
+Source-Version: 4.93.2+dfsg-1.1build2
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libselinux1 (>= 3.1~), libtirpc3 (>= 1.0.2)
+Suggests: perl
+
+Package: libxmlsec1
+Architecture: arm64
+Version: 1.2.33-1build2
+APT-ID: 4149
+Multi-Arch: same
+Source: xmlsec1
+Source-Version: 1.2.33-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libxml2 (>= 2.8.0), libxslt1.1 (>= 1.1.25)
+Breaks: libreoffice-core (<< 1:6.0.5~rc2~)
+
+Package: motd-news-config
+Architecture: all
+Version: 12ubuntu4.1
+APT-ID: 66045
+Source: base-files
+Source-Version: 12ubuntu4.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: base-files (<< 11ubuntu11)
+Breaks: base-files (<< 11ubuntu11)
+
+Package: libgirepository-1.0-1
+Architecture: arm64
+Version: 1.72.0-1
+APT-ID: 2300
+Multi-Arch: same
+Source: gobject-introspection
+Source-Version: 1.72.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-0 (>= 2.70.0), libc6 (>= 2.29), libffi8 (>= 3.4)
+Breaks: libcjs0 (<< 4.8.2-1+b1), libgjs0g (<< 1.68.4-1+b1), libglib-object-introspection-perl (<< 0.049-1+b2), python-gi (<< 3.42.0-1+b1), python3-gi (<< 3.42.0-1+b1), ruby-gobject-introspection (<< 3.4.3-1+b2)
+Provides: libgirepository-1.0-1-with-libffi8 (= 1.72.0-1)
+
+Package: libsodium23
+Architecture: arm64
+Version: 1.0.18-1build2
+APT-ID: 3632
+Multi-Arch: same
+Source: libsodium
+Source-Version: 1.0.18-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: python3-pexpect
+Architecture: all
+Version: 4.8.0-2ubuntu1
+APT-ID: 5273
+Source: pexpect
+Source-Version: 4.8.0-2ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-ptyprocess, python3:any
+Suggests: python-pexpect-doc
+
+Package: libcap2
+Architecture: arm64
+Version: 1:2.44-1build3
+APT-ID: 1783
+Multi-Arch: same
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: xdg-user-dirs
+Architecture: arm64
+Version: 0.17-2ubuntu4
+APT-ID: 5902
+Multi-Arch: foreign
+Source: xdg-user-dirs
+Source-Version: 0.17-2ubuntu4
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libfuse3-3
+Architecture: arm64
+Version: 3.10.5-1build1
+APT-ID: 2211
+Multi-Arch: same
+Source: fuse3
+Source-Version: 3.10.5-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: fuse3
+
+Package: python3-jsonschema
+Architecture: all
+Version: 3.2.0-0ubuntu2
+APT-ID: 5161
+Source: python-jsonschema
+Source-Version: 3.2.0-0ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-attr, python3-pkg-resources, python3-setuptools, python3-six (>= 1.11.0), python3-importlib-metadata, python3-pyrsistent, python3:any
+Suggests: python-jsonschema-doc
+
+Package: libsgutils2-2
+Architecture: arm64
+Version: 1.46-1build1
+APT-ID: 3600
+Multi-Arch: same
+Source: sg3-utils
+Source-Version: 1.46-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: sg3-utils
+Conflicts: libsgutils2
+Replaces: libsgutils2
+
+Package: libjson-glib-1.0-common
+Architecture: all
+Version: 1.6.6-1build1
+APT-ID: 2688
+Multi-Arch: foreign
+Source: json-glib
+Source-Version: 1.6.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: lvm2
+Architecture: arm64
+Version: 2.03.11-2.1ubuntu4
+APT-ID: 4491
+Multi-Arch: foreign
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaio1 (>= 0.3.93), libblkid1 (>= 2.24.2), libc6 (>= 2.34), libdevmapper-event1.02.1 (>= 2:1.02.74), libedit2 (>= 2.11-20080614-0), libselinux1 (>= 3.1~), libsystemd0 (>= 222), libudev1 (>= 183), lsb-base, dmsetup (>= 2:1.02.175-2.1ubuntu4~), dmeventd (>= 2:1.02.175-2.1ubuntu4~)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Recommends: thin-provisioning-tools
+
+Package: libudisks2-0
+Architecture: arm64
+Version: 2.9.4-1ubuntu2
+APT-ID: 3857
+Multi-Arch: same
+Source: udisks2
+Source-Version: 2.9.4-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.50)
+
+Package: libc6
+Architecture: arm64
+Version: 2.35-0ubuntu3
+APT-ID: 1744
+Multi-Arch: same
+Source: glibc
+Source-Version: 2.35-0ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgcc-s1, libcrypt1 (>= 1:4.4.10-10ubuntu4)
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Recommends: libidn2-0 (>= 2.0.5~), libnss-nis, libnss-nisplus
+Conflicts: libc6-lse
+Replaces: libc6-lse
+Breaks: busybox (<< 1.30.1-6), fakeroot (<< 1.25.3-1.1ubuntu2~), hurd (<< 1:0.9.git20170910-1), ioquake3 (<< 1.36+u20200211.f2c61c1~dfsg-2~), iraf-fitsutil (<< 2018.07.06-4), libgegl-0.4-0 (<< 0.4.18), libtirpc1 (<< 0.2.3), locales (<< 2.35), locales-all (<< 2.35), macs (<< 2.2.7.1-3~), nocache (<< 1.1-1~), nscd (<< 2.35), openarena (<< 0.8.8+dfsg-4~), openssh-server (<< 1:8.2p1-4), r-cran-later (<< 0.7.5+dfsg-2), wcc (<< 0.0.2+dfsg-3)
+Provides: libc6-lse
+
+Package: locales
+Architecture: all
+Version: 2.35-0ubuntu3
+APT-ID: 4471
+Source: glibc
+Source-Version: 2.35-0ubuntu3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc-bin (>> 2.35), debconf (>= 0.5) | debconf-2.0
+
+Package: python3-oauthlib
+Architecture: all
+Version: 3.2.0-1
+APT-ID: 5218
+Source: python-oauthlib
+Source-Version: 3.2.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-blinker, python3-cryptography, python3-jwt (>= 1.0.0)
+
+Package: libpcap0.8
+Architecture: arm64
+Version: 1.10.1-4build1
+APT-ID: 3144
+Multi-Arch: same
+Source: libpcap
+Source-Version: 1.10.1-4build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdbus-1-3 (>= 1.9.14)
+Replaces: libpcap0.8-dev (<< 1.0.0-2)
+
+Package: libnss-mymachines
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65022
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: extra
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), systemd-container (= 249.11-0ubuntu3.4)
+
+Package: powermgmt-base
+Architecture: all
+Version: 1.36
+APT-ID: 4836
+Multi-Arch: foreign
+Source: powermgmt-base
+Source-Version: 1.36
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: klibc-utils
+Architecture: arm64
+Version: 2.0.10-4
+APT-ID: 1137
+Multi-Arch: foreign
+Source: klibc
+Source-Version: 2.0.10-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libklibc (= 2.0.10-4)
+Breaks: initramfs-tools (<< 0.123~)
+
+Package: libssl3
+Architecture: arm64
+Version: 3.0.2-0ubuntu1.6
+APT-ID: 65259
+Multi-Arch: same
+Source: openssl
+Source-Version: 3.0.2-0ubuntu1.6
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
+
+Package: libuchardet0
+Architecture: arm64
+Version: 0.0.7-1build2
+APT-ID: 3852
+Multi-Arch: same
+Source: uchardet
+Source-Version: 0.0.7-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 4.1.1)
+
+Package: libefiboot1
+Architecture: arm64
+Version: 37-6ubuntu2
+APT-ID: 2068
+Multi-Arch: same
+Source: efivar
+Source-Version: 37-6ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libefivar1 (>= 37)
+Breaks: efibootmgr (<< 0.12-2)
+
+Package: libkrb5-3
+Architecture: arm64
+Version: 1.19.2-2
+APT-ID: 2714
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libk5crypto3 (>= 1.15~beta1), libkeyutils1 (>= 1.5.9), libkrb5support0 (= 1.19.2-2), libssl3 (>= 3.0.0~~alpha1)
+Suggests: krb5-doc, krb5-user
+Recommends: krb5-locales
+Breaks: libapache2-mod-auth-kerb (<= 5.4-2.4), libsmbclient (<= 2:3.6.1-2), sssd (<= 1.2.1-4.3)
+
+Package: usrmerge
+Architecture: all
+Version: 25ubuntu2
+APT-ID: 5812
+Multi-Arch: foreign
+Source: usrmerge
+Source-Version: 25ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.32.1-3)
+Conflicts: acl (<< 2.2.52-3~), arptables (<< 0.0.4+snapshot20181021-1~), coreutils (<< 8.24-1~), cryptsetup (<< 2:1.7.0-1~), davfs2 (<< 1.5.2-1.2~), debianutils (<< 4.5~), ebtables (<< 2.0.10.4+snapshot20181205-1~), elvis-tiny (<< 1.4-24~), kbd (<< 2.0.3-1~), ksh (<< 93u+20120801-3.1~), less (<< 481-2~), libbrlapi-dev (<< 5.3.1-1~), libdm0-dev, libjson-c-dev (<< 0.12.1-1.1~), libpng12-0 (<< 1.2.54-4~), libusb-0.1-4 (<< 2:0.1.12-28~), mksh (<< 52b-1~), molly-guard (<< 0.7.1+exp1~), musl-dev (<< 1.1.9-1.1~), nano (<< 2.3.99pre3-1~), open-iscsi (<< 2.0.873+git0.3b4b4500-13~), open-vm-tools (<< 2:10.0.5-3227872-2~), policycoreutils (<< 2.4-4~), safe-rm (<< 0.12-6~), tcsh (<< 6.18.01-4~), vsearch (<< 1.9.5-2~), xfsdump (<< 3.1.6+nmu1~), xfslibs-dev (<< 4.9.0+nmu1~), yp-tools (<< 3.3-5~), zsh (<< 5.2-4~)
+Breaks: cruft-ng (<< 0.4.4~), initramfs-tools (<< 0.121~)
+
+Package: libpam-modules
+Architecture: arm64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3110
+Multi-Arch: same
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.3.0), libdb5.3, libnsl2 (>= 1.0), libpam0g (>= 1.3.2), libselinux1 (>= 3.1~), libtirpc3 (>= 1.0.2), debconf (>= 0.5) | debconf-2.0, libpam-modules-bin (= 1.4.0-11ubuntu2)
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-umask, libpam-motd, libpam-mkhomedir
+
+Package: xauth
+Architecture: arm64
+Version: 1:1.1-1build2
+APT-ID: 5892
+Multi-Arch: foreign
+Source: xauth
+Source-Version: 1:1.1-1build2
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6, libxau6 (>= 1:1.0.9), libxext6, libxmuu1 (>= 2:1.1.3)
+
+Package: fwupd-signed
+Architecture: arm64
+Version: 1.44+1.2-3
+APT-ID: 558
+Multi-Arch: foreign
+Source: fwupd-signed
+Source-Version: 1.44
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: secureboot-db, fwupd
+
+Package: libpython3.10
+Architecture: arm64
+Version: 3.10.4-3
+APT-ID: 3269
+Multi-Arch: same
+Source: python3.10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (= 3.10.4-3), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: flash-kernel
+Architecture: arm64
+Version: 3.104ubuntu11
+APT-ID: 67181
+Source: flash-kernel
+Source-Version: 3.104ubuntu11
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: debconf (>= 0.5) | debconf-2.0, devio, initramfs-tools (>= 0.92f), systemd, linux-base (>= 3.2), mtd-utils, ucf, awk
+Recommends: u-boot-tools
+
+Package: libblockdev-loop2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1672
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-utils2 (>= 2.14), libc6 (>= 2.27), libglib2.0-0 (>= 2.42.2)
+
+Package: cloud-init
+Architecture: all
+Version: 22.2-0ubuntu1~22.04.3
+APT-ID: 64775
+Source: cloud-init
+Source-Version: 22.2-0ubuntu1~22.04.3
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: cloud-guest-utils | cloud-utils, isc-dhcp-client, iproute2, netplan.io, procps, python3, python3-netifaces, python3-requests, python3-serial, debconf (>= 0.5) | debconf-2.0, python3-configobj, python3-jinja2, python3-jsonpatch, python3-jsonschema, python3-oauthlib, python3-yaml, python3:any
+Suggests: openssh-server, ssh-import-id
+Recommends: eatmydata, gdisk, gnupg, software-properties-common
+
+Package: manpages
+Architecture: all
+Version: 5.10-1ubuntu1
+APT-ID: 4505
+Multi-Arch: foreign
+Source: manpages
+Source-Version: 5.10-1ubuntu1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: man-browser
+Replaces: attr (<< 1:2.4.47-3), keyutils (<< 1.6-1), manpages-dev (<< 5.09-2)
+Breaks: attr (<< 1:2.4.47-3), keyutils (<< 1.6-1), manpages-dev (<< 5.09-2)
+
+Package: linux-base
+Architecture: all
+Version: 4.5ubuntu9
+APT-ID: 4231
+Multi-Arch: foreign
+Source: linux-base
+Source-Version: 4.5ubuntu9
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+
+Package: sg3-utils-udev
+Architecture: all
+Version: 1.46-1build1
+APT-ID: 5531
+Source: sg3-utils
+Source-Version: 1.46-1build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: sg3-utils, initramfs-tools-core, initramfs-tools | linux-initramfs-tool
+
+Package: libusb-1.0-0
+Architecture: arm64
+Version: 2:1.0.25-1ubuntu2
+APT-ID: 65272
+Multi-Arch: same
+Source: libusb-1.0
+Source-Version: 2:1.0.25-1ubuntu2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 183)
+
+Package: python3-openssl
+Architecture: all
+Version: 21.0.0-1
+APT-ID: 5223
+Source: pyopenssl
+Source-Version: 21.0.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-cryptography (>= 3.3), python3-six (>= 1.5.2), python3:any
+Suggests: python-openssl-doc, python3-openssl-dbg
+
+Package: libmodule-find-perl
+Architecture: all
+Version: 0.15-1
+APT-ID: 2876
+Source: libmodule-find-perl
+Source-Version: 0.15-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: libuuid1
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 3906
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+Recommends: uuid-runtime
+
+Package: man-db
+Architecture: arm64
+Version: 2.10.2-1
+APT-ID: 4504
+Multi-Arch: foreign
+Source: man-db
+Source-Version: 2.10.2-1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bsdextrautils | bsdmainutils (<< 12.1.1~), groff-base, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libgdbm6 (>= 1.16), libpipeline1 (>= 1.5.0), libseccomp2 (>= 2.1.0), zlib1g (>= 1:1.1.4)
+Suggests: apparmor, groff, less, www-browser
+Conflicts: man
+Replaces: man, nlsutils
+Provides: man-browser, man
+
+Package: libblockdev2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1689
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-utils2 (>= 2.14), libc6 (>= 2.34), libglib2.0-0 (>= 2.42.2)
+
+Package: gpgv
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64872
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), zlib1g (>= 1:1.1.4)
+Suggests: gnupg
+Replaces: gnupg2 (<< 2.0.21-2), gpgv2 (<< 2.1.11-7+exp1)
+Breaks: gnupg2 (<< 2.0.21-2), gpgv2 (<< 2.1.11-7+exp1), python-debian (<< 0.1.29)
+
+Package: libblockdev-part-err2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1683
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-0 (>= 2.42.2)
+
+Package: libtext-charwidth-perl
+Architecture: arm64
+Version: 0.04-10build3
+APT-ID: 3758
+Source: libtext-charwidth-perl
+Source-Version: 0.04-10build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), perl-base, perlapi-5.34.0
+
+Package: bash
+Architecture: arm64
+Version: 5.1-6ubuntu1
+APT-ID: 86
+Essential: yes
+Multi-Arch: foreign
+Source: bash
+Source-Version: 5.1-6ubuntu1
+Priority: important
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
+Pre-Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+Suggests: bash-doc
+Recommends: bash-completion (>= 20060301-0)
+Conflicts: bash-completion (<< 20060301-0)
+Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
+
+Package: python3-click
+Architecture: all
+Version: 8.0.3-1
+APT-ID: 5062
+Source: python-click
+Source-Version: 8.0.3-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-colorama, python3-importlib-metadata | python3 (>> 3.8), python3:any
+Breaks: python3-click-threading (<< 0.5.0)
+
+Package: libgcrypt20
+Architecture: arm64
+Version: 1.9.4-3ubuntu3
+APT-ID: 2250
+Multi-Arch: same
+Source: libgcrypt20
+Source-Version: 1.9.4-3ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgpg-error0 (>= 1.27)
+Suggests: rng-tools
+
+Package: isc-dhcp-client
+Architecture: arm64
+Version: 4.4.1-2.3ubuntu2.1
+APT-ID: 64882
+Source: isc-dhcp
+Source-Version: 4.4.1-2.3ubuntu2.1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdns-export1110, libisc-export1105, debianutils (>= 2.8.2), iproute2
+Suggests: resolvconf, avahi-autoipd, isc-dhcp-client-ddns
+Recommends: isc-dhcp-common
+Provides: dhcp-client
+
+Package: libterm-readkey-perl
+Architecture: arm64
+Version: 2.38-1build4
+APT-ID: 3753
+Source: libterm-readkey-perl
+Source-Version: 2.38-1build4
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.28)
+
+Package: grep
+Architecture: arm64
+Version: 3.7-1build1
+APT-ID: 872
+Essential: yes
+Multi-Arch: foreign
+Source: grep
+Source-Version: 3.7-1build1
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.34), libpcre3
+Suggests: libpcre3 (>= 7.7)
+Conflicts: rgrep
+Provides: rgrep
+
+Package: media-types
+Architecture: all
+Version: 7.0.0
+APT-ID: 4521
+Multi-Arch: foreign
+Source: media-types
+Source-Version: 7.0.0
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: mime-support (<< 3.65)
+Breaks: mime-support (<< 3.65)
+
+Package: python3-service-identity
+Architecture: all
+Version: 18.1.0-6
+APT-ID: 5349
+Source: python-service-identity
+Source-Version: 18.1.0-6
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-attr, python3-cryptography, python3-pyasn1, python3-pyasn1-modules, python3:any
+Recommends: python3-idna
+
+Package: run-one
+Architecture: all
+Version: 1.17-0ubuntu1
+APT-ID: 5501
+Source: run-one
+Source-Version: 1.17-0ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: procps
+Replaces: bikeshed (<< 1.8)
+Breaks: bikeshed (<< 1.8)
+Enhances: anacron, cron
+
+Package: mawk
+Architecture: arm64
+Version: 1.3.4.20200120-3
+APT-ID: 4514
+Multi-Arch: foreign
+Source: mawk
+Source-Version: 1.3.4.20200120-3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Provides: awk
+
+Package: open-vm-tools
+Architecture: arm64
+Version: 2:11.3.5-1ubuntu4
+APT-ID: 4682
+Source: open-vm-tools
+Source-Version: 2:11.3.5-1ubuntu4
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm2 (>= 2.4.3), libfuse3-3 (>= 3.2.3), libglib2.0-0 (>= 2.31.8), libmspack0 (>= 0.4), libssl3 (>= 3.0.0~~alpha1), libtirpc3 (>= 1.0.2), libudev1 (>= 183), libxml2 (>= 2.7.4), libxmlsec1 (>= 1.2.33), libxmlsec1-openssl (>= 1.2.33), pciutils, iproute2, lsb-release
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: open-vm-tools-desktop, cloud-init
+Recommends: ethtool, zerofree, fuse3
+
+Package: uuid-runtime
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 5816
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libc6 (>= 2.34), libsmartcols1 (>= 2.27~rc1), libsystemd0, libuuid1 (>= 2.31.1)
+Pre-Depends: libuuid1, init-system-helpers (>= 1.54~)
+
+Package: libcap-ng0
+Architecture: arm64
+Version: 0.7.9-2.2build3
+APT-ID: 1782
+Multi-Arch: same
+Source: libcap-ng
+Source-Version: 0.7.9-2.2build3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libklibc
+Architecture: arm64
+Version: 2.0.10-4
+APT-ID: 2703
+Multi-Arch: same
+Source: klibc
+Source-Version: 2.0.10-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: vim-tiny
+Architecture: arm64
+Version: 2:8.2.3995-1ubuntu2
+APT-ID: 5824
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: vim-common (= 2:8.2.3995-1ubuntu2), libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~), libtinfo6 (>= 6)
+Suggests: indent
+Provides: editor
+
+Package: usb-modeswitch
+Architecture: arm64
+Version: 2.6.1-3ubuntu2
+APT-ID: 5806
+Source: usb-modeswitch
+Source-Version: 2.6.1-3ubuntu2
+Priority: extra
+Section: comm
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tcl, usb-modeswitch-data, libc6 (>= 2.34), libusb-1.0-0 (>= 2:1.0.9)
+Suggests: comgt, wvdial
+
+Package: libmbim-proxy
+Architecture: arm64
+Version: 1.26.2-1build1
+APT-ID: 2827
+Multi-Arch: foreign
+Source: libmbim
+Source-Version: 1.26.2-1build1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libmbim-glib4 (= 1.26.2-1build1)
+
+Package: python3-json-pointer
+Architecture: all
+Version: 2.0-0ubuntu1
+APT-ID: 5157
+Source: python-json-pointer
+Source-Version: 2.0-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3:any
+
+Package: update-manager-core
+Architecture: all
+Version: 1:22.04.9
+APT-ID: 5796
+Source: update-manager
+Source-Version: 1:22.04.9
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-update-manager (= 1:22.04.9), python3-distro-info, distro-info-data, lsb-release, ubuntu-release-upgrader-core (>= 1:18.04.9), ubuntu-advantage-tools
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-manager (<< 1:0.146.2)
+Breaks: computer-janitor (<= 1.11-0ubuntu1), update-manager (<< 1:0.146.2)
+
+Package: libctf0
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 1891
+Multi-Arch: same
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbinutils (= 2.38-3ubuntu1), libc6 (>= 2.33), zlib1g (>= 1:1.2.0)
+
+Package: libsemanage2
+Architecture: arm64
+Version: 3.3-1build2
+APT-ID: 3590
+Multi-Arch: same
+Source: libsemanage
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsemanage-common (>= 3.3-1build2), libaudit1 (>= 1:2.2.1), libbz2-1.0, libc6 (>= 2.33), libselinux1 (>= 3.3), libsepol2 (>= 3.3)
+Breaks: policycoreutils (<< 3.0)
+
+Package: bind9-dnsutils
+Architecture: arm64
+Version: 1:9.18.1-1ubuntu1.1
+APT-ID: 64754
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bind9-host | host, bind9-libs (= 1:9.18.1-1ubuntu1.1), libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libidn2-0 (>= 2.0.0), libkrb5-3 (>= 1.6.dfsg.2)
+Conflicts: bind-dnsutils (<< 1:9.13.6~), dnsutils (<< 1:9.13.6~)
+Breaks: bind-dnsutils (<< 1:9.13.6~), dnsutils (<< 1:9.13.6~)
+Provides: dnsutils
+
+Package: fuse3
+Architecture: arm64
+Version: 3.10.5-1build1
+APT-ID: 555
+Source: fuse3
+Source-Version: 3.10.5-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfuse3-3 (= 3.10.5-1build1), adduser, mount (>= 2.19.1), sed (>= 4), lsb-base (>= 3.2-14)
+Replaces: fuse
+Breaks: fuse
+Provides: fuse (= 3.10.5-1build1)
+
+Package: libnsl2
+Architecture: arm64
+Version: 1.3.0-2build2
+APT-ID: 3020
+Multi-Arch: same
+Source: libnsl
+Source-Version: 1.3.0-2build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libtirpc3 (>= 1.0.2)
+
+Package: base-files
+Architecture: arm64
+Version: 12ubuntu4.1
+APT-ID: 64751
+Essential: yes
+Multi-Arch: foreign
+Source: base-files
+Source-Version: 12ubuntu4.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.4.10-10ubuntu3)
+Pre-Depends: awk
+Replaces: base, dpkg (<= 1.15.0), miscutils
+Breaks: debian-security-support (<< 2019.04.25), initscripts (<< 2.88dsf-13.3), sendfile (<< 2.1b.20080616-5.2~), ubuntu-server (<< 1.453)
+Provides: base
+
+Package: busybox-initramfs
+Architecture: arm64
+Version: 1:1.30.1-7ubuntu3
+APT-ID: 141
+Source: busybox
+Source-Version: 1:1.30.1-7ubuntu3
+Priority: optional
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libnfnetlink0
+Architecture: arm64
+Version: 1.0.1-3build3
+APT-ID: 2971
+Multi-Arch: same
+Source: libnfnetlink
+Source-Version: 1.0.1-3build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libnss3
+Architecture: arm64
+Version: 2:3.68.2-0ubuntu1
+APT-ID: 3031
+Multi-Arch: same
+Source: nss
+Source-Version: 2:3.68.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libnspr4 (>= 2:4.24), libsqlite3-0 (>= 3.5.9)
+Conflicts: libnss3-1d (<< 2:3.13.4-2)
+
+Package: rsyslog
+Architecture: arm64
+Version: 8.2112.0-2ubuntu2.2
+APT-ID: 66162
+Source: rsyslog
+Source-Version: 8.2112.0-2ubuntu2.2
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libestr0 (>= 0.1.4), libfastjson4 (>= 0.99.8), libsystemd0 (>= 246), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4), adduser, ucf
+Suggests: rsyslog-mysql | rsyslog-pgsql, rsyslog-mongodb, rsyslog-doc, rsyslog-openssl | rsyslog-gnutls, rsyslog-gssapi, rsyslog-relp, apparmor (>= 2.8.96~2541-0ubuntu4~)
+Recommends: logrotate
+Conflicts: linux-kernel-log-daemon, system-log-daemon
+Provides: system-log-daemon, linux-kernel-log-daemon
+
+Package: libk5crypto3
+Architecture: arm64
+Version: 1.19.2-2
+APT-ID: 2697
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libkrb5support0 (>= 1.16)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.18~), libkrb5-3 (<= 1.18~)
+
+Package: python3-jinja2
+Architecture: all
+Version: 3.0.3-1
+APT-ID: 5155
+Source: jinja2
+Source-Version: 3.0.3-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-babel, python3-markupsafe (>= 2.0), python3:any
+Suggests: python-jinja2-doc
+Recommends: python3-pkg-resources
+Replaces: python-jinja2 (<< 2.11.1-1)
+Breaks: python-jinja2 (<< 2.11.1-1)
+
+Package: libblockdev-utils2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1688
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.42.2), libkmod2 (>= 5~), libudev1 (>= 216)
+
+Package: plymouth
+Architecture: arm64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4803
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: init-system-helpers (>= 1.18), lsb-base (>= 3.0-6), systemd (>= 232-8~), udev (>= 232-8~), libc6 (>= 2.34), libdrm2 (>= 2.4.47), libplymouth5 (>= 0.9.5+git20211018-1ubuntu3)
+Suggests: desktop-base, plymouth-themes
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Conflicts: console-common
+Replaces: plymouth-drm (<< 0.9.0-6~), plymouth-themes (<< 0.9.0-8~)
+Breaks: plymouth-drm (<< 0.9.0-6~), plymouth-themes (<< 0.9.0-8~)
+
+Package: libpolkit-gobject-1-0
+Architecture: arm64
+Version: 0.105-33
+APT-ID: 3222
+Multi-Arch: same
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.37.3), libsystemd0 (>= 213)
+
+Package: ncurses-base
+Architecture: all
+Version: 6.3-2
+APT-ID: 4610
+Essential: yes
+Multi-Arch: foreign
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Breaks: bash-static (<< 4.4.18-1.1), libmono-corlib4.5-cil (<< 4.6.2.7+dfsg-2), libslang2 (<< 2.3.1a-3), libtinfo5 (<< 6.1), libunibilium0 (<< 2), libunibilium4 (<< 2.0.0-3), neovim (<< 0.6.0), zsh-static (<< 5.4.2-4)
+Provides: ncurses-runtime
+
+Package: gzip
+Architecture: arm64
+Version: 1.10-4ubuntu4
+APT-ID: 916
+Essential: yes
+Source: gzip
+Source-Version: 1.10-4ubuntu4
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.34)
+Suggests: less
+
+Package: mdadm
+Architecture: arm64
+Version: 4.2-0ubuntu1
+APT-ID: 4515
+Source: mdadm
+Source-Version: 4.2-0ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libudev1 (>= 183), debconf, lsb-base, udev
+Suggests: default-mta | mail-transport-agent, dracut-core
+Recommends: finalrd (>= 3~), kmod | module-init-tools
+
+Package: friendly-recovery
+Architecture: all
+Version: 0.2.42
+APT-ID: 550
+Source: friendly-recovery
+Source-Version: 0.2.42
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: systemd-sysv, whiptail
+Recommends: gettext-base, update-manager-core
+Breaks: grub2 (<< 1.99-12ubuntu4), initramfs-tools (<< 0.99ubuntu4), upstart (<< 1.3-0ubuntu9)
+
+Package: cryptsetup-initramfs
+Architecture: all
+Version: 2:2.4.3-1ubuntu1
+APT-ID: 231
+Source: cryptsetup
+Source-Version: 2:2.4.3-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: busybox-initramfs, cryptsetup (>= 2:2.4.3-1ubuntu1), initramfs-tools (>= 0.137) | linux-initramfs-tool, debconf (>= 0.5) | debconf-2.0
+Recommends: console-setup, kbd, plymouth
+Replaces: cryptsetup (<< 2:2.0.3-1)
+Breaks: cryptsetup (<< 2:2.0.3-1)
+
+Package: python3-apt
+Architecture: arm64
+Version: 2.3.0ubuntu2
+APT-ID: 5024
+Multi-Arch: allowed
+Source: python-apt
+Source-Version: 2.3.0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libapt-pkg6.0 (>= 1.9.11~), libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), python-apt-common, distro-info-data
+Suggests: python3-apt-dbg, python-apt-doc, apt
+Recommends: lsb-release, iso-codes
+Replaces: python-apt (<< 0.7.98+nmu1)
+Breaks: apt-xapian-index (<< 0.51~), kthresher (<= 1.4.0-1), python-apt (<< 0.7.98+nmu1)
+Provides: python3.10-apt
+
+Package: dmsetup
+Architecture: arm64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 321
+Multi-Arch: foreign
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.138)
+
+Package: systemd-coredump
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 67120
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libdw1 (>= 0.158), libelf1 (>= 0.144), systemd (= 249.11-0ubuntu3.4), adduser
+Conflicts: core-dump-handler
+Replaces: core-dump-handler
+Provides: core-dump-handler
+
+Package: login
+Architecture: arm64
+Version: 1:4.8.1-2ubuntu2
+APT-ID: 4475
+Essential: yes
+Multi-Arch: foreign
+Source: shadow
+Source-Version: 1:4.8.1-2ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libpam-runtime, libpam-modules
+Conflicts: python-4suite (<< 0.99cvs20060405-1)
+Breaks: util-linux (<< 2.32-0.2~)
+
+Package: devio
+Architecture: arm64
+Version: 1.2-1.2build3
+APT-ID: 293
+Source: devio
+Source-Version: 1.2-1.2build3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: python3-serial
+Architecture: all
+Version: 3.5-1
+APT-ID: 5348
+Source: pyserial
+Source-Version: 3.5-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3:any
+Suggests: python3-wxgtk3.0 | python3-wxgtk
+
+Package: tcl8.6
+Architecture: arm64
+Version: 8.6.12+dfsg-1build1
+APT-ID: 5624
+Multi-Arch: foreign
+Source: tcl8.6
+Source-Version: 8.6.12+dfsg-1build1
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtcl8.6 (>= 8.6.0)
+Suggests: tcl-tclreadline
+Conflicts: tcl74 (<= 7.4p3-2)
+
+Package: bolt
+Architecture: arm64
+Version: 0.9.2-1
+APT-ID: 130
+Source: bolt
+Source-Version: 0.9.2-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libpolkit-gobject-1-0 (>= 0.99), libudev1 (>= 183)
+
+Package: snapd
+Architecture: arm64
+Version: 2.55.5+22.04
+APT-ID: 66173
+Source: snapd
+Source-Version: 2.55.5+22.04
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, apparmor (>= 2.10.95-0ubuntu2.2), ca-certificates, openssh-client, squashfs-tools, systemd, udev, libc6 (>= 2.34), libfuse3-3 (>= 3.2.3), liblzma5 (>= 5.1.1alpha+20110809), liblzo2-2 (>= 2.02), libudev1 (>= 183), zlib1g (>= 1:1.1.4), default-dbus-session-bus | dbus-session-bus
+Suggests: zenity | kdialog
+Recommends: gnupg
+Conflicts: snap (<< 2013-11-29-1ubuntu1)
+Replaces: snap-confine (<< 2.23), snapd-xdg-open (<= 0.0.0), ubuntu-core-launcher (<< 2.22), ubuntu-snappy (<< 1.9), ubuntu-snappy-cli (<< 1.9)
+Breaks: snap-confine (<< 2.23), snapd-xdg-open (<= 0.0.0), ubuntu-core-launcher (<< 2.22), ubuntu-snappy (<< 1.9), ubuntu-snappy-cli (<< 1.9)
+
+Package: python3-netifaces
+Architecture: arm64
+Version: 0.11.0-1build2
+APT-ID: 5208
+Multi-Arch: same
+Source: netifaces
+Source-Version: 0.11.0-1build2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.17)
+
+Package: libtss2-tcti-mssim0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3832
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: apport-symptoms
+Architecture: all
+Version: 0.24
+APT-ID: 41
+Source: apport-symptoms
+Source-Version: 0.24
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: apport
+
+Package: python3-certifi
+Architecture: all
+Version: 2020.6.20-1
+APT-ID: 5054
+Source: python-certifi
+Source-Version: 2020.6.20-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: ca-certificates, python3:any
+
+Package: libsqlite3-0
+Architecture: arm64
+Version: 3.37.2-2
+APT-ID: 3663
+Multi-Arch: same
+Source: sqlite3
+Source-Version: 3.37.2-2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: python-migrate (<< 0.11.0-4~), python3-migrate (<< 0.11.0-4~)
+
+Package: libpackagekit-glib2-18
+Architecture: arm64
+Version: 1.2.5-2ubuntu2
+APT-ID: 3099
+Multi-Arch: same
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.54)
+Recommends: packagekit (= 1.2.5-2ubuntu2)
+
+Package: libtext-wrapi18n-perl
+Architecture: all
+Version: 0.06-9
+APT-ID: 3763
+Source: libtext-wrapi18n-perl
+Source-Version: 0.06-9
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtext-charwidth-perl
+
+Package: hostname
+Architecture: arm64
+Version: 3.23ubuntu2
+APT-ID: 932
+Essential: yes
+Source: hostname
+Source-Version: 3.23ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34)
+Replaces: nis (<< 3.17-30)
+Breaks: nis (<< 3.17-30)
+
+Package: rsync
+Architecture: arm64
+Version: 3.2.3-8ubuntu3
+APT-ID: 5487
+Multi-Arch: foreign
+Source: rsync
+Source-Version: 3.2.3-8ubuntu3
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-base, libacl1 (>= 2.2.23), libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), libpopt0 (>= 1.14), libssl3 (>= 3.0.0~~alpha1), libxxhash0 (>= 0.8.0), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: openssh-client, openssh-server, python3
+
+Package: pinentry-curses
+Architecture: arm64
+Version: 1.1.1-1build2
+APT-ID: 4788
+Multi-Arch: foreign
+Source: pinentry
+Source-Version: 1.1.1-1build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.1.0), libc6 (>= 2.34), libgpg-error0 (>= 1.16), libncursesw6 (>= 6), libtinfo6 (>= 6)
+Suggests: pinentry-doc
+Enhances: gnupg-agent
+Provides: pinentry
+
+Package: finalrd
+Architecture: all
+Version: 9build1
+APT-ID: 409
+Source: finalrd
+Source-Version: 9build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: initramfs-tools-core
+
+Package: libjson-c5
+Architecture: arm64
+Version: 0.15-3~ubuntu1.22.04.1
+APT-ID: 64996
+Multi-Arch: same
+Source: json-c
+Source-Version: 0.15-3~ubuntu1.22.04.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libopeniscsiusr
+Architecture: arm64
+Version: 2.1.5-1ubuntu1
+APT-ID: 3069
+Source: open-iscsi
+Source-Version: 2.1.5-1ubuntu1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libkmod2 (>= 5~)
+Replaces: libopeniscsiusr0.2.0 (<< 2.1.4-0ubuntu1~)
+Breaks: libopeniscsiusr0.2.0 (<< 2.1.4-0ubuntu1~)
+Enhances: open-iscsi
+
+Package: gpgsm
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64871
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libksba8 (>= 1.6.0), libreadline8 (>= 6.0)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg2 (<< 2.1.10-2)
+Breaks: gnupg2 (<< 2.1.10-2)
+
+Package: binutils-aarch64-linux-gnu
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 101
+Multi-Arch: allowed
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: extra
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: binutils-common (= 2.38-3ubuntu1), libbinutils (= 2.38-3ubuntu1), libc6 (>= 2.34), libctf-nobfd0 (>= 2.36), libctf0 (>= 2.36), libgcc-s1 (>= 4.2), zlib1g (>= 1:1.1.4)
+Suggests: binutils-doc (= 2.38-3ubuntu1)
+Replaces: binutils (<< 2.29-6)
+Breaks: binutils (<< 2.29-6)
+
+Package: python3-markupsafe
+Architecture: arm64
+Version: 2.0.1-2build1
+APT-ID: 5190
+Source: markupsafe
+Source-Version: 2.0.1-2build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17)
+
+Package: libxslt1.1
+Architecture: arm64
+Version: 1.1.34-4build2
+APT-ID: 4175
+Multi-Arch: same
+Source: libxslt
+Source-Version: 1.1.34-4build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcrypt20 (>= 1.9.0), libxml2 (>= 2.9.0)
+
+Package: python3-zope.interface
+Architecture: arm64
+Version: 5.4.0-1build1
+APT-ID: 5424
+Source: zope.interface
+Source-Version: 5.4.0-1build1
+Priority: optional
+Section: zope
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3-pkg-resources, python3:any, libc6 (>= 2.17)
+Provides: python3.10-zope.interface, python3-zope
+
+Package: libprocps8
+Architecture: arm64
+Version: 2:3.3.17-6ubuntu2
+APT-ID: 3239
+Multi-Arch: same
+Source: procps
+Source-Version: 2:3.3.17-6ubuntu2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0 (>= 209)
+Replaces: procps (<< 1:3.3.2-1)
+
+Package: python3-distro-info
+Architecture: all
+Version: 1.1build1
+APT-ID: 5094
+Source: distro-info
+Source-Version: 1.1build1
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: distro-info-data (>= 0.46), python3:any
+
+Package: libdevmapper-event1.02.1
+Architecture: arm64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 1996
+Multi-Arch: same
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdevmapper1.02.1 (>= 2:1.02.97)
+
+Package: libcryptsetup12
+Architecture: arm64
+Version: 2:2.4.3-1ubuntu1
+APT-ID: 1887
+Multi-Arch: same
+Source: cryptsetup
+Source-Version: 2:2.4.3-1ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libargon2-1 (>= 0~20171227), libblkid1 (>= 2.17.2), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), libjson-c5 (>= 0.15), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16)
+
+Package: python3-jwt
+Architecture: all
+Version: 2.3.0-1
+APT-ID: 5162
+Source: pyjwt
+Source-Version: 2.3.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python3-crypto
+Recommends: python3-cryptography
+
+Package: adduser
+Architecture: all
+Version: 3.118ubuntu5
+APT-ID: 5
+Multi-Arch: foreign
+Source: adduser
+Source-Version: 3.118ubuntu5
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: passwd, debconf (>= 0.5) | debconf-2.0
+Suggests: liblocale-gettext-perl, perl, ecryptfs-utils (>= 67-1)
+
+Package: findutils
+Architecture: arm64
+Version: 4.8.0-1ubuntu3
+APT-ID: 410
+Essential: yes
+Multi-Arch: foreign
+Source: findutils
+Source-Version: 4.8.0-1ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: mlocate | locate
+Breaks: binstats (<< 1.08-8.1), guilt (<< 0.36-0.2), libpython3.4-minimal (<< 3.4.4-2), libpython3.5-minimal (<< 3.5.1-3), lsat (<< 0.9.7.1-2.1), mc (<< 3:4.8.11-1), switchconf (<< 0.0.9-2.1)
+
+Package: multipath-tools
+Architecture: arm64
+Version: 0.8.8-1ubuntu1
+APT-ID: 4548
+Source: multipath-tools
+Source-Version: 0.8.8-1ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaio1 (>= 0.3.93), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.110), libjson-c5 (>= 0.15), libreadline8 (>= 6.0), libsystemd0, libudev1 (>= 183), liburcu8 (>= 0.13.0), udev, kpartx (>= 0.8.8-1ubuntu1), lsb-base, sg3-utils-udev
+Suggests: multipath-tools-boot
+
+Package: libgmp10
+Architecture: arm64
+Version: 2:6.2.1+dfsg-3ubuntu1
+APT-ID: 2342
+Multi-Arch: same
+Source: gmp
+Source-Version: 2:6.2.1+dfsg-3ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Breaks: libmath-gmp-perl (<< 2.20-1), libmath-prime-util-gmp-perl (<< 0.51-2), postgresql-pgmp (<< 1.0.3-1)
+
+Package: distro-info-data
+Architecture: all
+Version: 0.52ubuntu0.1
+APT-ID: 64790
+Multi-Arch: foreign
+Source: distro-info-data
+Source-Version: 0.52ubuntu0.1
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: distro-info (<< 1.0~)
+
+Package: libxxhash0
+Architecture: arm64
+Version: 0.8.1-1
+APT-ID: 4197
+Multi-Arch: same
+Source: xxhash
+Source-Version: 0.8.1-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libip6tc2
+Architecture: arm64
+Version: 1.8.7-1ubuntu5
+APT-ID: 2610
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28)
+
+Package: libpcre2-8-0
+Architecture: arm64
+Version: 10.39-3build1
+APT-ID: 3155
+Multi-Arch: same
+Source: pcre2
+Source-Version: 10.39-3build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libcrypt1
+Architecture: arm64
+Version: 1:4.4.27-1
+APT-ID: 1885
+Multi-Arch: same
+Source: libxcrypt
+Source-Version: 1:4.4.27-1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+Conflicts: libpam0g (<< 1.4.0-10)
+Replaces: libc6 (<< 2.29-4)
+
+Package: libgstreamer1.0-0
+Architecture: arm64
+Version: 1.20.3-0ubuntu1
+APT-ID: 67201
+Multi-Arch: same
+Source: gstreamer1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.10), libdw1 (>= 0.126), libglib2.0-0 (>= 2.70.0), libunwind8, libcap2-bin
+Suggests: gstreamer1.0-tools
+Breaks: gstreamer1.0-plugins-bad (<< 1.11.1), gstreamer1.0-plugins-base (<< 1.8.0), libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
+
+Package: vim-runtime
+Architecture: all
+Version: 2:8.2.3995-1ubuntu2
+APT-ID: 5823
+Multi-Arch: foreign
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: vim | vim-gtk3 | vim-athena | vim-nox | vim-tiny
+Breaks: vim-tiny (<< 2:8.2.3995-1ubuntu2)
+Enhances: vim-tiny
+
+Package: binutils-common
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 105
+Multi-Arch: same
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: binutils (<< 2.29.1-3.1~)
+Breaks: binutils (<< 2.29.1-3.1~)
+
+Package: ca-certificates
+Architecture: all
+Version: 20211016
+APT-ID: 147
+Multi-Arch: foreign
+Source: ca-certificates
+Source-Version: 20211016
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: openssl (>= 1.1.1), debconf (>= 0.5) | debconf-2.0
+Breaks: ca-certificates-java (<< 20121112+nmu1)
+Enhances: openssl
+
+Package: liberror-perl
+Architecture: all
+Version: 0.17029-1
+APT-ID: 2091
+Multi-Arch: foreign
+Source: liberror-perl
+Source-Version: 0.17029-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libftdi1-2
+Architecture: arm64
+Version: 1.5-5build3
+APT-ID: 2206
+Multi-Arch: same
+Source: libftdi1
+Source-Version: 1.5-5build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libusb-1.0-0 (>= 2:1.0.16)
+
+Package: libpam-modules-bin
+Architecture: arm64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3111
+Multi-Arch: foreign
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.3.0), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~)
+Replaces: libpam-modules (<< 1.1.3-8)
+
+Package: init-system-helpers
+Architecture: all
+Version: 1.62
+APT-ID: 1088
+Essential: yes
+Multi-Arch: foreign
+Source: init-system-helpers
+Source-Version: 1.62
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.20.1-3)
+Conflicts: file-rc (<< 0.8.17~)
+
+Package: tnftp
+Architecture: arm64
+Version: 20210827-4build1
+APT-ID: 5734
+Source: tnftp
+Source-Version: 20210827-4build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libssl3 (>= 3.0.0~~alpha1)
+Conflicts: lukemftp
+Replaces: lukemftp
+Provides: ftp
+
+Package: libqmi-glib5
+Architecture: arm64
+Version: 1.30.4-1
+APT-ID: 3278
+Multi-Arch: same
+Source: libqmi
+Source-Version: 1.30.4-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.56), libmbim-glib4 (>= 1.18.0), libmbim-proxy
+
+Package: thin-provisioning-tools
+Architecture: arm64
+Version: 0.9.0-2ubuntu1
+APT-ID: 5634
+Source: thin-provisioning-tools
+Source-Version: 0.9.0-2ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaio1 (>= 0.3.93), libc6 (>= 2.34), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.0), libstdc++6 (>= 11)
+
+Package: libnss-resolve
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66770
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4)
+
+Package: libsemanage-common
+Architecture: all
+Version: 3.3-1build2
+APT-ID: 3588
+Multi-Arch: foreign
+Source: libsemanage
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libseccomp2
+Architecture: arm64
+Version: 2.5.3-2ubuntu2
+APT-ID: 3582
+Multi-Arch: same
+Source: libseccomp
+Source-Version: 2.5.3-2ubuntu2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: python3-six
+Architecture: all
+Version: 1.16.0-3ubuntu1
+APT-ID: 5356
+Multi-Arch: foreign
+Source: six
+Source-Version: 1.16.0-3ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Breaks: libpython-stdlib (<< 2.7.18), python-minimal (<< 2.7.18)
+
+Package: procps
+Architecture: arm64
+Version: 2:3.3.17-6ubuntu2
+APT-ID: 4863
+Multi-Arch: foreign
+Source: procps
+Source-Version: 2:3.3.17-6ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncurses6 (>= 6), libncursesw6 (>= 6), libprocps8 (>= 2:3.3.16-1), libtinfo6 (>= 6), lsb-base (>= 3.0-10), init-system-helpers (>= 1.29~)
+Recommends: psmisc
+Replaces: manpages-de (<< 4.9.1-2), manpages-fr (<< 4.9.1-2), manpages-fr-extra (<< 20151231+nmu1), manpages-pl (<< 1:4.9.1-2)
+Breaks: guymager (<= 0.5.9-1), manpages-de (<< 4.9.1-2), manpages-fr (<< 4.9.1-2), manpages-fr-extra (<< 20151231+nmu1), manpages-pl (<< 1:4.9.1-2), open-vm-tools (<= 2011.12.20-562307-1)
+Provides: watch
+
+Package: eatmydata
+Architecture: all
+Version: 130-2build1
+APT-ID: 349
+Source: libeatmydata
+Source-Version: 130-2build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libeatmydata1 (>= 130-2build1)
+
+Package: cryptsetup
+Architecture: arm64
+Version: 2:2.4.3-1ubuntu1
+APT-ID: 229
+Multi-Arch: foreign
+Source: cryptsetup
+Source-Version: 2:2.4.3-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cryptsetup-bin (>= 2:1.6.0), dmsetup, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libcryptsetup12 (>= 2:2.4), libjson-c5 (>= 0.15), libssh-4 (>= 0.8.0)
+Suggests: dosfstools, keyutils, liblocale-gettext-perl
+Recommends: cryptsetup-initramfs
+Replaces: cryptsetup-run (<< 2:2.1.0-6)
+Breaks: cryptsetup-run (<< 2:2.1.0-6)
+
+Package: python3-constantly
+Architecture: all
+Version: 15.1.0-2
+APT-ID: 5069
+Source: constantly
+Source-Version: 15.1.0-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: distro-info
+Architecture: arm64
+Version: 1.1build1
+APT-ID: 315
+Source: distro-info
+Source-Version: 1.1build1
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: distro-info-data (>= 0.46), libc6 (>= 2.34)
+Suggests: shunit2 (>= 2.1.6)
+
+Package: libpython3-stdlib
+Architecture: arm64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3268
+Multi-Arch: same
+Source: python3-defaults
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (>= 3.10.4-1~)
+
+Package: bash-completion
+Architecture: all
+Version: 1:2.11-5ubuntu1
+APT-ID: 87
+Multi-Arch: foreign
+Source: bash-completion
+Source-Version: 1:2.11-5ubuntu1
+Priority: standard
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Provides: dh-sequence-bash-completion
+
+Package: systemd-standalone-sysusers
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 67122
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: universe/admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=universe,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.4.0), libselinux1 (>= 3.1~)
+Conflicts: systemd (<< 249.3-3), systemd-sysusers
+Replaces: systemd (<< 249.3-3), systemd-sysusers
+Provides: systemd-sysusers (= 249.11-0ubuntu3.4)
+
+Package: mount
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 4539
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libmount1 (>= 2.37.2), libselinux1 (>= 3.1~), libsmartcols1 (>= 2.33)
+Suggests: nfs-common
+
+Package: libestr0
+Architecture: arm64
+Version: 0.1.10-2.1build3
+APT-ID: 2096
+Multi-Arch: same
+Source: libestr
+Source-Version: 0.1.10-2.1build3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libglib2.0-0
+Architecture: arm64
+Version: 2.72.1-1
+APT-ID: 2319
+Multi-Arch: same
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libffi8 (>= 3.4), libmount1 (>= 2.35.2-7~), libpcre3, libselinux1 (>= 3.1~), zlib1g (>= 1:1.2.2)
+Recommends: libglib2.0-data, shared-mime-info, xdg-user-dirs
+Breaks: gimp (<< 2.10.14-3~), glib-networking-tests (<< 2.70.0~), gnome-keyring (<< 40.0-3~), libgirepository-1.0-1 (<< 1.62.0-4~), libgladeui-2-6 (<< 3.22.2), libsoup2.4-tests (<< 2.72.0-3~)
+
+Package: python3-yaml
+Architecture: arm64
+Version: 5.4.1-1ubuntu1
+APT-ID: 5419
+Multi-Arch: allowed
+Source: pyyaml
+Source-Version: 5.4.1-1ubuntu1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17), libyaml-0-2
+Breaks: libpython-stdlib (<< 2.7.18), python-minimal (<< 2.7.18), python-yaml (<< 5.3.1-2)
+
+Package: libtss2-sys1
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3829
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.17), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: fonts-ubuntu-console
+Architecture: all
+Version: 0.83-6ubuntu1
+APT-ID: 532
+Multi-Arch: foreign
+Source: fonts-ubuntu
+Source-Version: 0.83-6ubuntu1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libjson-glib-1.0-0
+Architecture: arm64
+Version: 1.6.6-1build1
+APT-ID: 2687
+Multi-Arch: same
+Source: json-glib
+Source-Version: 1.6.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libjson-glib-1.0-common (>= 1.6.6-1build1), libc6 (>= 2.17), libglib2.0-0 (>= 2.55.2)
+
+Package: libubootenv0.1
+Architecture: arm64
+Version: 0.3.2-1build1
+APT-ID: 3845
+Multi-Arch: same
+Source: libubootenv
+Source-Version: 0.3.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), zlib1g (>= 1:1.1.4)
+
+Package: perl-base
+Architecture: arm64
+Version: 5.34.0-3ubuntu1
+APT-ID: 4743
+Essential: yes
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: important
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), dpkg (>= 1.17.17)
+Suggests: perl, sensible-utils
+Conflicts: defoma (<< 0.11.12), doc-base (<< 0.10.3), mono-gac (<< 2.10.8.1-3), safe-rm (<< 0.8), update-inetd (<< 4.41)
+Replaces: libfile-path-perl (<< 2.18), libfile-temp-perl (<< 0.2311), libio-socket-ip-perl (<< 0.41), libscalar-list-utils-perl (<< 1:1.55), libsocket-perl (<< 2.031), libxsloader-perl (<< 0.30), perl (<< 5.10.1-12), perl-modules (<< 5.20.1-3)
+Breaks: amanda-common (<< 1:3.3.9-2), backuppc (<< 3.3.1-2), bucardo (<< 5.5.0-1.1), debconf (<< 1.5.61), dh-haskell (<< 0.3), intltool (<< 0.51.0-4), kio-perldoc (<< 20.04.1-1), latexml (<< 0.8.4-2), libdevel-mat-dumper-perl (<< 0.42-3), libencode-arabic-perl (<< 14.2-2), libexception-class-perl (<< 1.42), libfile-path-perl (<< 2.18), libfile-spec-perl (<< 3.8000), libfile-temp-perl (<< 0.2311), libio-socket-ip-perl (<< 0.41), libmp3-tag-perl (<< 1.13-1.2), libsbuild-perl (<< 0.67.0-1), libscalar-list-utils-perl (<< 1:1.55), libsocket-perl (<< 2.031), libxsloader-perl (<< 0.30), mailagent (<< 1:3.1-81-2), perl (<< 5.34.0~), perl-modules (<< 5.34.0~), pod2pdf (<< 0.42-5.1), slic3r (<< 1.2.9+dfsg-6.1), slic3r-prusa (<< 1.37.0+dfsg-1.1), texinfo (<< 6.1.0.dfsg.1-8)
+Provides: perlapi-5.34.0, libxsloader-perl (= 0.30), libsocket-perl (= 2.031), libscalar-list-utils-perl (= 1:1.55), libio-socket-ip-perl (= 0.41), libfile-temp-perl (= 0.2311), libfile-path-perl (= 2.18)
+
+Package: openssh-sftp-server
+Architecture: arm64
+Version: 1:8.9p1-3
+APT-ID: 4698
+Multi-Arch: foreign
+Source: openssh
+Source-Version: 1:8.9p1-3
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: openssh-client (= 1:8.9p1-3), libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+Recommends: openssh-server | ssh-server
+Replaces: openssh-server (<< 1:6.5p1-5)
+Breaks: openssh-server (<< 1:6.5p1-5)
+Enhances: openssh-server, ssh-server
+
+Package: libpam0g
+Architecture: arm64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3120
+Multi-Arch: same
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Replaces: libpam0g-util
+
+Package: nano
+Architecture: arm64
+Version: 6.2-1
+APT-ID: 4603
+Source: nano
+Source-Version: 6.2-1
+Priority: standard
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncursesw6 (>= 6), libtinfo6 (>= 6)
+Suggests: hunspell
+Conflicts: pico
+Replaces: nano-tiny (<< 2.8.6-2), pico
+Breaks: nano-tiny (<< 2.8.6-2)
+
+Package: btrfs-progs
+Architecture: arm64
+Version: 5.16.2-1
+APT-ID: 138
+Multi-Arch: foreign
+Source: btrfs-progs
+Source-Version: 5.16.2-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libext2fs2 (>= 1.42), liblzo2-2 (>= 2.02), libudev1 (>= 183), libuuid1 (>= 2.16), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.2.0)
+Suggests: duperemove
+Breaks: initramfs-tools (<< 0.137~), libgcc-s1 (<< 10-20200211)
+
+Package: libdns-export1110
+Architecture: arm64
+Version: 1:9.11.19+dfsg-2.1ubuntu3
+APT-ID: 2016
+Source: bind9-libs
+Source-Version: 1:9.11.19+dfsg-2.1ubuntu3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libisc-export1105, libssl3 (>= 3.0.0~~alpha1)
+
+Package: libbrotli1
+Architecture: arm64
+Version: 1.0.9-2build6
+APT-ID: 1729
+Multi-Arch: same
+Source: brotli
+Source-Version: 1.0.9-2build6
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: python3-newt
+Architecture: arm64
+Version: 0.52.21-5ubuntu2
+APT-ID: 5214
+Multi-Arch: same
+Source: newt
+Source-Version: 0.52.21-5ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnewt0.52 (= 0.52.21-5ubuntu2), python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17)
+Provides: python3.10-newt
+
+Package: htop
+Architecture: arm64
+Version: 3.0.5-7build2
+APT-ID: 936
+Source: htop
+Source-Version: 3.0.5-7build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncursesw6 (>= 6), libnl-3-200 (>= 3.2.7), libnl-genl-3-200 (>= 3.2.7), libtinfo6 (>= 6)
+Suggests: lm-sensors, lsof, strace
+
+Package: bind9-libs
+Architecture: arm64
+Version: 1:9.18.1-1ubuntu1.1
+APT-ID: 64757
+Multi-Arch: same
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libjson-c5 (>= 0.15), libkrb5-3 (>= 1.6.dfsg.2), liblmdb0 (>= 0.9.7), libmaxminddb0 (>= 1.3.0), libnghttp2-14 (>= 1.12.0), libssl3 (>= 3.0.0~~alpha1), libuv1 (>= 1.34.2), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+Replaces: bind-libs (<< 1:9.13.6~)
+Breaks: bind-libs (<< 1:9.13.6~)
+
+Package: libdrm2
+Architecture: arm64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2031
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libdrm-common (>= 2.4.110-1ubuntu1), libc6 (>= 2.33)
+
+Package: liblmdb0
+Architecture: arm64
+Version: 0.9.24-1build2
+APT-ID: 2760
+Multi-Arch: same
+Source: lmdb
+Source-Version: 0.9.24-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: sudo
+Architecture: arm64
+Version: 1.9.9-1ubuntu2
+APT-ID: 5594
+Source: sudo
+Source-Version: 1.9.9-1ubuntu2
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), zlib1g (>= 1:1.2.0.2), libpam-modules, lsb-base
+Conflicts: sudo-ldap
+Replaces: sudo-ldap
+
+Package: ubuntu-standard
+Architecture: arm64
+Version: 1.481
+APT-ID: 5780
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: standard
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: bind9-dnsutils, busybox-static, cpio, cron, dmidecode, dosfstools, ed, file, ftp, hdparm, info, libpam-systemd, logrotate, lshw, lsof, man-db, media-types, nftables, parted, pciutils, psmisc, rsync, strace, time, usbutils, wget, xz-utils
+Recommends: apparmor, bash-completion, command-not-found, friendly-recovery, iptables, iputils-tracepath, irqbalance, manpages, mtr-tiny, nano, ntfs-3g, openssh-client, plymouth, plymouth-theme-ubuntu-text, tcpdump, telnet, ufw, update-manager-core, uuid-runtime
+
+Package: libc-bin
+Architecture: arm64
+Version: 2.35-0ubuntu3
+APT-ID: 1741
+Essential: yes
+Multi-Arch: foreign
+Source: glibc
+Source-Version: 2.35-0ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>> 2.35), libc6 (<< 2.36)
+Suggests: manpages
+
+Package: python3-update-manager
+Architecture: all
+Version: 1:22.04.9
+APT-ID: 5397
+Source: update-manager
+Source-Version: 1:22.04.9
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-apt (>= 0.8.5~), python3-distro-info, python3-distupgrade, lsb-release
+Suggests: python3-launchpadlib
+Replaces: update-manager-core (<< 1:0.163)
+Breaks: python3-distupgrade (<< 1:16.10.10), update-manager-core (<< 1:0.163)
+
+Package: pkexec
+Architecture: arm64
+Version: 0.105-33
+APT-ID: 4795
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: polkitd (= 0.105-33), libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libpam0g (>= 0.99.7.1), libpolkit-agent-1-0 (= 0.105-33), libpolkit-gobject-1-0 (= 0.105-33)
+Replaces: policykit-1 (<< 0.105-32~)
+Breaks: policykit-1 (<< 0.105-32~)
+
+Package: libparted-fs-resize0
+Architecture: arm64
+Version: 3.4-2build1
+APT-ID: 3137
+Multi-Arch: same
+Source: parted
+Source-Version: 3.4-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libparted2 (= 3.4-2build1)
+Suggests: libparted-dev
+
+Package: netplan.io
+Architecture: arm64
+Version: 0.104-0ubuntu2
+APT-ID: 4620
+Multi-Arch: foreign
+Source: netplan.io
+Source-Version: 0.104-0ubuntu2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.70.0), libnetplan0 (= 0.104-0ubuntu2), libsystemd0 (>= 243), iproute2, python3, python3-yaml, python3-netifaces, systemd (>= 248~)
+Suggests: network-manager | wpasupplicant, openvswitch-switch
+Conflicts: netplan
+Replaces: nplan (<< 0.34~)
+Breaks: network-manager (<< 1.2.2-1), nplan (<< 0.34~)
+Provides: nplan
+
+Package: python3-distutils
+Architecture: all
+Version: 3.10.4-0ubuntu1
+APT-ID: 5096
+Multi-Arch: foreign
+Source: python3-stdlib-extensions
+Source-Version: 3.10.4-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3:any (>= 3.10.1-0~), python3:any (<< 3.11), python3-lib2to3 (= 3.10.4-0ubuntu1)
+Replaces: libpython3.6-stdlib (<< 3.6.4~rc1-2), libpython3.7-stdlib (<< 3.7.0~a3-2)
+Breaks: libpython3.10-stdlib (<< 3.10.0~b1), libpython3.6-stdlib (<< 3.6.5~rc1-3), libpython3.7-stdlib (<< 3.7.0~b2-2), libpython3.8-stdlib (<< 3.8.0~b2-5)
+Provides: python3.10-distutils
+
+Package: python3-apport
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 66128
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.0~), python3-apt (>= 0.7.9), python3-httplib2, python3-problem-report (>= 0.94), lsb-release, python3-launchpadlib, python3-yaml
+Recommends: apport
+
+Package: keyboard-configuration
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 1132
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: liblocale-gettext-perl
+Pre-Depends: debconf (>= 1.5.34)
+Replaces: console-setup (<< 1.47), console-setup-mini (<< 1.47)
+Breaks: console-setup (<< 1.71), console-setup-mini (<< 1.47)
+
+Package: libevent-core-2.1-7
+Architecture: arm64
+Version: 2.1.12-stable-1build3
+APT-ID: 2103
+Multi-Arch: same
+Source: libevent
+Source-Version: 2.1.12-stable-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libattr1
+Architecture: arm64
+Version: 1:2.5.1-1build1
+APT-ID: 1611
+Multi-Arch: same
+Source: attr
+Source-Version: 1:2.5.1-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: python3-keyring
+Architecture: all
+Version: 23.5.0-1
+APT-ID: 5163
+Source: python-keyring
+Source-Version: 23.5.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-importlib-metadata (>= 3.6), python3-jeepney (>= 0.4.2), python3-secretstorage (>= 3.2), python3:any
+Suggests: gir1.2-secret-1, gnome-keyring, libkf5wallet-bin, python3-dbus, python3-gi, python3-keyrings.alt
+Breaks: python3-keyrings.alt (<< 3.1), python3-wheel (<< 0.27)
+
+Package: python3-commandnotfound
+Architecture: all
+Version: 22.04.0
+APT-ID: 5066
+Source: command-not-found
+Source-Version: 22.04.0
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-release, python3-apt, python3-gdbm, python3:any
+Replaces: command-not-found (<< 0.3ubuntu7)
+
+Package: libaudit1
+Architecture: arm64
+Version: 1:3.0.7-1build1
+APT-ID: 1615
+Multi-Arch: same
+Source: audit
+Source-Version: 1:3.0.7-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit-common (>= 1:3.0.7-1build1), libc6 (>= 2.33), libcap-ng0 (>= 0.7.9)
+
+Package: libkmod2
+Architecture: arm64
+Version: 29-1ubuntu1
+APT-ID: 2706
+Multi-Arch: same
+Source: kmod
+Source-Version: 29-1ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), liblzma5 (>= 5.1.1alpha+20120614), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0)
+
+Package: libxext6
+Architecture: arm64
+Version: 2:1.3.4-1build1
+APT-ID: 4109
+Multi-Arch: same
+Source: libxext
+Source-Version: 2:1.3.4-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libx11-6 (>= 2:1.6.0)
+
+Package: initramfs-tools
+Architecture: all
+Version: 0.140ubuntu13
+APT-ID: 1089
+Multi-Arch: foreign
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: initramfs-tools-core (= 0.140ubuntu13), linux-base
+Suggests: bash-completion
+Conflicts: linux-initramfs-tool, usplash (<< 0.5.50)
+Breaks: e2fsprogs (<< 1.42.13), initscripts (<< 2.88dsf-59.3~), netplan.io (<< 0.37), upstart
+Provides: linux-initramfs-tool
+
+Package: mtd-utils
+Architecture: arm64
+Version: 1:2.1.4-1
+APT-ID: 4544
+Multi-Arch: foreign
+Source: mtd-utils
+Source-Version: 1:2.1.4-1
+Priority: extra
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libiniparser1 (>= 4.0), liblzo2-2 (>= 2.02), libselinux1 (>= 3.1~), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Replaces: mtd-tools
+Provides: mtd-tools
+
+Package: ubuntu-server
+Architecture: arm64
+Version: 1.481
+APT-ID: 5775
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: optional
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: apport, bcache-tools, btrfs-progs, byobu, cloud-guest-utils, cloud-initramfs-copymods, cloud-initramfs-dyn-netconf, curl, dirmngr, ethtool, fonts-ubuntu-console, git, gnupg, htop, lvm2, mdadm, motd-news-config, multipath-tools, overlayroot, patch, pollinate, screen, software-properties-common, sosreport, tmux, update-notifier-common, vim, xfsprogs
+Recommends: fwupd, landscape-common, lxd-agent-loader, needrestart, open-iscsi, open-vm-tools, snapd, unattended-upgrades
+
+Package: tpm-udev
+Architecture: all
+Version: 0.6
+APT-ID: 5739
+Multi-Arch: foreign
+Source: tpm-udev
+Source-Version: 0.6
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, udev
+
+Package: parted
+Architecture: arm64
+Version: 3.4-2build1
+APT-ID: 4732
+Multi-Arch: foreign
+Source: parted
+Source-Version: 3.4-2build1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libparted2 (= 3.4-2build1), libreadline8 (>= 6.0), libtinfo6 (>= 6)
+Suggests: parted-doc
+
+Package: libhogweed6
+Architecture: arm64
+Version: 3.7.3-1build2
+APT-ID: 2520
+Multi-Arch: same
+Source: nettle
+Source-Version: 3.7.3-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libgmp10 (>= 2:6.2.1+dfsg), libnettle8
+
+Package: cpio
+Architecture: arm64
+Version: 2.13+dfsg-7
+APT-ID: 207
+Multi-Arch: foreign
+Source: cpio
+Source-Version: 2.13+dfsg-7
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: libarchive1
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Replaces: cpio-mt
+
+Package: dirmngr
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64789
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, gpgconf (= 2.2.27-3ubuntu2.1), lsb-base (>= 3.2-13), init-system-helpers (>= 1.52), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libgpg-error0 (>= 1.42), libksba8 (>= 1.3.5), libldap-2.5-0 (>= 2.5.4), libnpth0 (>= 0.90)
+Suggests: dbus-user-session, libpam-systemd, pinentry-gnome3, tor
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg2 (<< 2.1.10-2)
+Breaks: gnupg2 (<< 2.1.10-2)
+Enhances: gpg, gpgsm, squid
+
+Package: bc
+Architecture: arm64
+Version: 1.07.1-3build1
+APT-ID: 89
+Multi-Arch: foreign
+Source: bc
+Source-Version: 1.07.1-3build1
+Priority: optional
+Section: math
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libreadline8 (>= 6.0)
+
+Package: ed
+Architecture: arm64
+Version: 1.18-1
+APT-ID: 353
+Multi-Arch: foreign
+Source: ed
+Source-Version: 1.18-1
+Priority: standard
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libksba8
+Architecture: arm64
+Version: 1.6.0-2build1
+APT-ID: 2719
+Multi-Arch: same
+Source: libksba
+Source-Version: 1.6.0-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libgpg-error0 (>= 1.14)
+
+Package: libtext-iconv-perl
+Architecture: arm64
+Version: 1.7-7build3
+APT-ID: 3760
+Source: libtext-iconv-perl
+Source-Version: 1.7-7build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), perl-base, perlapi-5.34.0
+
+Package: libisns0
+Architecture: arm64
+Version: 0.101-0ubuntu2
+APT-ID: 2639
+Multi-Arch: same
+Source: open-isns
+Source-Version: 0.101-0ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libssl3 (>= 3.0.0~~alpha1)
+Recommends: netbase
+
+Package: systemd-sysv
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 66184
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: systemd (= 249.11-0ubuntu3.4)
+Pre-Depends: systemd
+Recommends: libpam-systemd, libnss-systemd
+Conflicts: file-rc, systemd-shim, sysvinit-core
+Replaces: sysvinit-core
+
+Package: systemd-sysv
+Architecture: arm64
+Version: 249.11-0ubuntu3.1
+APT-ID: 68002
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: systemd (= 249.11-0ubuntu3.1)
+Pre-Depends: systemd
+Recommends: libpam-systemd, libnss-systemd
+Conflicts: file-rc, systemd-shim, sysvinit-core
+Replaces: sysvinit-core
+
+Package: cron
+Architecture: arm64
+Version: 3.0pl1-137ubuntu3
+APT-ID: 223
+Multi-Arch: foreign
+Source: cron
+Source-Version: 3.0pl1-137ubuntu3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), debianutils (>= 1.7), sensible-utils, adduser, lsb-base (>= 3.0-10), libpam-runtime (>= 1.0.1-11)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: anacron (>= 2.0-1), logrotate, checksecurity, default-mta | mail-transport-agent
+Provides: cron-daemon
+
+Package: apt-utils
+Architecture: arm64
+Version: 2.4.6
+APT-ID: 67178
+Source: apt
+Source-Version: 2.4.6
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: apt (= 2.4.6), libapt-pkg6.0 (>= 2.4.6), libc6 (>= 2.34), libdb5.3, libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+
+Package: python3-idna
+Architecture: all
+Version: 3.3-1
+APT-ID: 5142
+Multi-Arch: foreign
+Source: python-idna
+Source-Version: 3.3-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: gnupg-utils
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64864
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.5.0), libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libksba8 (>= 1.3.5), libreadline8 (>= 6.0), zlib1g (>= 1:1.1.4)
+Recommends: gpg, gpg-agent, gpgconf, gpgsm
+Replaces: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+
+Package: libpam-cap
+Architecture: arm64
+Version: 1:2.44-1build3
+APT-ID: 3104
+Multi-Arch: same
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libcap2 (>= 1:2.33), libpam0g (>= 0.99.7.1), libpam-runtime (>= 1.1.3-2~)
+Replaces: libcap2-bin (<< 1:2.22-1.1)
+Breaks: libcap2-bin (<< 1:2.22-1.1)
+
+Package: libblkid1
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 1663
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libgnutls30
+Architecture: arm64
+Version: 3.7.3-4ubuntu1
+APT-ID: 2380
+Multi-Arch: same
+Source: gnutls28
+Source-Version: 3.7.3-4ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libhogweed6 (>= 3.6), libidn2-0 (>= 2.0.0), libnettle8 (>= 3.7~), libp11-kit0 (>= 0.23.18.1), libtasn1-6 (>= 4.14), libunistring2 (>= 0.9.7)
+Suggests: gnutls-bin
+
+Package: python3-bcrypt
+Architecture: arm64
+Version: 3.2.0-1build1
+APT-ID: 5038
+Source: python-bcrypt
+Source-Version: 3.2.0-1build1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3~), python3-cffi-backend-api-min (<= 9729), python3-cffi-backend-api-max (>= 9729), python3-six (>= 1.4.1), python3:any, libc6 (>= 2.17)
+
+Package: python3-chardet
+Architecture: all
+Version: 4.0.0-1
+APT-ID: 5057
+Multi-Arch: foreign
+Source: chardet
+Source-Version: 4.0.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-pkg-resources
+Replaces: python-chardet (<< 3.0.4-6)
+Breaks: python-chardet (<< 3.0.4-6)
+
+Package: unattended-upgrades
+Architecture: all
+Version: 2.8ubuntu1
+APT-ID: 5789
+Source: unattended-upgrades
+Source-Version: 2.8ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, debconf, python3, python3-apt (>= 1.9.6~), python3-dbus, python3-distro-info, ucf, lsb-release, lsb-base, xz-utils
+Suggests: bsd-mailx, default-mta | mail-transport-agent, needrestart, powermgmt-base, python3-gi
+Recommends: systemd-sysv | cron | cron-daemon | anacron
+
+Package: needrestart
+Architecture: all
+Version: 3.5-5ubuntu2.1
+APT-ID: 66056
+Source: needrestart
+Source-Version: 3.5-5ubuntu2.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, dpkg (>= 1.16.0), gettext-base, libintl-perl, libproc-processtable-perl, libsort-naturally-perl, libmodule-scandeps-perl, libterm-readkey-perl, libmodule-find-perl, binutils, xz-utils
+Suggests: needrestart-session | libnotify-bin, iucode-tool
+Recommends: libpam-systemd | sysvinit-core
+Enhances: intel-microcode
+
+Package: curl
+Architecture: arm64
+Version: 7.81.0-1ubuntu1.3
+APT-ID: 64786
+Multi-Arch: foreign
+Source: curl
+Source-Version: 7.81.0-1ubuntu1.3
+Priority: optional
+Section: web
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcurl4 (= 7.81.0-1ubuntu1.3), zlib1g (>= 1:1.1.4)
+
+Package: libslang2
+Architecture: arm64
+Version: 2.3.2-5build4
+APT-ID: 3610
+Multi-Arch: same
+Source: slang2
+Source-Version: 2.3.2-5build4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35)
+
+Package: libargon2-1
+Architecture: arm64
+Version: 0~20171227-0.3
+APT-ID: 1561
+Multi-Arch: same
+Source: argon2
+Source-Version: 0~20171227-0.3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: sysvinit-utils
+Architecture: arm64
+Version: 3.01-1ubuntu1
+APT-ID: 5616
+Essential: yes
+Multi-Arch: foreign
+Source: sysvinit
+Source-Version: 3.01-1ubuntu1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: lsb-base (>= 11.0.0~), libc6 (>= 2.34)
+
+Package: python3-debconf
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 5083
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (= 1.5.79ubuntu1), python3:any
+Replaces: debconf (<< 1.5.64)
+Breaks: debconf (<< 1.5.64)
+
+Package: libcbor0.8
+Architecture: arm64
+Version: 0.8.0-2ubuntu1
+APT-ID: 1787
+Multi-Arch: same
+Source: libcbor
+Source-Version: 0.8.0-2ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: logsave
+Architecture: arm64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 66041
+Multi-Arch: foreign
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: e2fsprogs (<< 1.45.3-1)
+Breaks: e2fsprogs (<< 1.45.3-1)
+
+Package: python3-configobj
+Architecture: all
+Version: 5.0.6-5
+APT-ID: 5067
+Multi-Arch: foreign
+Source: configobj
+Source-Version: 5.0.6-5
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-six, python3:any
+Suggests: python-configobj-doc
+
+Package: libflashrom1
+Architecture: arm64
+Version: 1.2-5build1
+APT-ID: 2172
+Multi-Arch: same
+Source: flashrom
+Source-Version: 1.2-5build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libftdi1-2 (>= 1.2), libusb-1.0-0 (>= 2:1.0.22)
+
+Package: gnupg-l10n
+Architecture: all
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64863
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: gnupg (<< 2.1.14-2~), gnupg2 (<< 2.1.14-2~)
+Breaks: gnupg (<< 2.1.14-2~), gnupg2 (<< 2.1.14-2~)
+Enhances: dirmngr, gpg, gpg-agent
+
+Package: python3.10-minimal
+Architecture: arm64
+Version: 3.10.4-3
+APT-ID: 5432
+Multi-Arch: allowed
+Source: python3.10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Pre-Depends: libc6 (>= 2.35)
+Suggests: binfmt-support
+Recommends: python3.10
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: libjcat1
+Architecture: arm64
+Version: 0.1.9-1
+APT-ID: 2668
+Multi-Arch: same
+Source: libjcat
+Source-Version: 0.1.9-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libglib2.0-0 (>= 2.61.2), libgnutls30 (>= 3.7.0), libgpg-error0 (>= 1.14), libgpgme11 (>= 1.2.0), libjson-glib-1.0-0 (>= 1.5.2)
+
+Package: python3-setuptools
+Architecture: all
+Version: 59.6.0-1.2
+APT-ID: 5351
+Multi-Arch: foreign
+Source: setuptools
+Source-Version: 59.6.0-1.2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-pkg-resources (= 59.6.0-1.2), python3-distutils, python3:any
+Suggests: python-setuptools-doc
+
+Package: ubuntu-release-upgrader-core
+Architecture: all
+Version: 1:22.04.11
+APT-ID: 66282
+Source: ubuntu-release-upgrader
+Source-Version: 1:22.04.11
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-distupgrade (= 1:22.04.11), ca-certificates
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-manager (<< 1:0.165), update-manager-core (<< 1:0.165)
+Breaks: software-properties (<< 0.9.27), update-manager (<< 1:0.165), update-manager-core (<< 1:0.165)
+
+Package: libdw1
+Architecture: arm64
+Version: 0.186-1build1
+APT-ID: 2038
+Multi-Arch: same
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libelf1 (= 0.186-1build1), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.2.2.3)
+
+Package: libfwupdplugin5
+Architecture: arm64
+Version: 1.7.5-3
+APT-ID: 2216
+Multi-Arch: same
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libfwupd2 (= 1.7.5-3), libarchive13 (>= 3.0.4), libc6 (>= 2.17), libgcab-1.0-0 (>= 1.0), libglib2.0-0 (>= 2.67.3), libgudev-1.0-0 (>= 212), libgusb2 (>= 0.3.5), libjcat1 (>= 0.1.0), libxmlb2 (>= 0.3.2)
+
+Package: gpg-wks-client
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64868
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dirmngr (= 2.2.27-3ubuntu2.1), gpg (= 2.2.27-3ubuntu2.1), gpg-agent (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+
+Package: liblz4-1
+Architecture: arm64
+Version: 1.9.3-2build2
+APT-ID: 2796
+Multi-Arch: same
+Source: lz4
+Source-Version: 1.9.3-2build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Replaces: liblz4-1a
+Breaks: liblz4-1a
+
+Package: libplymouth5
+Architecture: arm64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 3208
+Multi-Arch: same
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpng16-16 (>= 1.6.2-1), libudev1 (>= 183)
+Replaces: plymouth (<< 0.9.2-1~)
+Breaks: plymouth (<< 0.9.2-1~)
+
+Package: libpci3
+Architecture: arm64
+Version: 1:3.7.0-6
+APT-ID: 3149
+Multi-Arch: same
+Source: pciutils
+Source-Version: 1:3.7.0-6
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 196), zlib1g (>= 1:1.1.4), pci.ids (>= 0.0~2019.11.10-2)
+
+Package: command-not-found
+Architecture: all
+Version: 22.04.0
+APT-ID: 199
+Source: command-not-found
+Source-Version: 22.04.0
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-commandnotfound (= 22.04.0)
+Suggests: snapd
+
+Package: libtss2-esys-3.0.2-0
+Architecture: arm64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3825
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtss2-tcti-cmd0, libtss2-tcti-device0, libtss2-tcti-mssim0, libtss2-tcti-swtpm0, tpm-udev, libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1), libtss2-mu0 (>= 3.0.1), libtss2-sys1 (>= 3.1.0)
+Replaces: libtss2-esys0 (<< 3.0.2-1)
+Breaks: libtss2-esys0 (<< 3.0.2-1)
+
+Package: perl-modules-5.34
+Architecture: all
+Version: 5.34.0-3ubuntu1
+APT-ID: 4746
+Multi-Arch: foreign
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.34.0-1)
+Pre-Depends: dpkg (>= 1.17.17)
+Recommends: perl (>= 5.34.0-1)
+Conflicts: perl-modules (<< 5.22.0~)
+Replaces: libansicolor-perl (<< 5.01), libarchive-tar-perl (<< 2.38), libattribute-handlers-perl (<< 1.01), libautodie-perl (<< 2.34), libcpan-meta-perl (<< 2.150010), libcpan-meta-requirements-perl (<< 2.140), libcpan-meta-yaml-perl (<< 0.018), libdigest-perl (<< 1.19), libexperimental-perl (<< 0.024), libextutils-cbuilder-perl (<< 0.280236), libextutils-command-perl (<< 7.62), libextutils-install-perl (<< 2.20), libextutils-parsexs-perl (<< 3.430000), libfile-spec-perl (<< 3.8000), libhttp-tiny-perl (<< 0.076), libi18n-langtags-perl (<< 0.45), libio-zlib-perl (<< 1.11), libjson-pp-perl (<< 4.06000), liblocale-maketext-perl (<< 1.29), liblocale-maketext-simple-perl (<< 0.21.01), libmath-bigint-perl (<< 1.999818), libmath-complex-perl (<< 1.5902), libmodule-corelist-perl (<< 5.20210520), libmodule-load-conditional-perl (<< 0.74), libmodule-load-perl (<< 0.36), libmodule-metadata-perl (<< 1.000037), libnet-perl (<< 1:3.13), libnet-ping-perl (<< 2.74), libparams-check-perl (<< 0.38), libparent-perl (<< 0.238), libparse-cpan-meta-perl (<< 2.150010), libperl-ostype-perl (<< 1.010), libpod-escapes-perl (<< 1.07), libpod-simple-perl (<< 3.42), libtest-harness-perl (<< 3.43), libtest-simple-perl (<< 1.302183), libtest-tester-perl (<< 1.302183), libtest-use-ok-perl (<< 1.302183), libthread-queue-perl (<< 3.14), libtime-local-perl (<< 1.3000), libunicode-collate-perl (<< 1.29), libversion-perl (<< 1:0.9928), perl-base (<< 5.22.0~), perl-modules, podlators-perl (<< 4.14)
+Breaks: libansicolor-perl (<< 5.01), libarchive-tar-perl (<< 2.38), libattribute-handlers-perl (<< 1.01), libautodie-perl (<< 2.34), libcpan-meta-perl (<< 2.150010), libcpan-meta-requirements-perl (<< 2.140), libcpan-meta-yaml-perl (<< 0.018), libdigest-perl (<< 1.19), libexperimental-perl (<< 0.024), libextutils-cbuilder-perl (<< 0.280236), libextutils-command-perl (<< 7.62), libextutils-install-perl (<< 2.20), libextutils-parsexs-perl (<< 3.430000), libfile-spec-perl (<< 3.8000), libhttp-tiny-perl (<< 0.076), libi18n-langtags-perl (<< 0.45), libio-zlib-perl (<< 1.11), libjson-pp-perl (<< 4.06000), liblocale-maketext-perl (<< 1.29), liblocale-maketext-simple-perl (<< 0.21.01), libmath-bigint-perl (<< 1.999818), libmath-complex-perl (<< 1.5902), libmodule-corelist-perl (<< 5.20210520), libmodule-load-conditional-perl (<< 0.74), libmodule-load-perl (<< 0.36), libmodule-metadata-perl (<< 1.000037), libnet-perl (<< 1:3.13), libnet-ping-perl (<< 2.74), libparams-check-perl (<< 0.38), libparent-perl (<< 0.238), libparse-cpan-meta-perl (<< 2.150010), libperl-ostype-perl (<< 1.010), libpod-escapes-perl (<< 1.07), libpod-simple-perl (<< 3.42), libtest-harness-perl (<< 3.43), libtest-simple-perl (<< 1.302183), libtest-tester-perl (<< 1.302183), libtest-use-ok-perl (<< 1.302183), libthread-queue-perl (<< 3.14), libtime-local-perl (<< 1.3000), libunicode-collate-perl (<< 1.29), libversion-perl (<< 1:0.9928), maildirsync (<< 1.2-2.1), perl (<< 5.34.0~), podlators-perl (<< 4.14)
+Provides: perl-modules
+
+Package: libncursesw6
+Architecture: arm64
+Version: 6.3-2
+APT-ID: 2933
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtinfo6 (= 6.3-2), libc6 (>= 2.34)
+Recommends: libgpm2
+
+Package: python3-cryptography
+Architecture: arm64
+Version: 3.4.8-1ubuntu2
+APT-ID: 5073
+Source: python-cryptography
+Source-Version: 3.4.8-1ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3~), python3-cffi-backend-api-min (<= 9729), python3-cffi-backend-api-max (>= 9729), python3:any, libc6 (>= 2.17), libssl3 (>= 3.0.0~~alpha1)
+Suggests: python-cryptography-doc, python3-cryptography-vectors
+Breaks: python3-openssl (<< 16.0.0)
+
+Package: ncurses-bin
+Architecture: arm64
+Version: 6.3-2
+APT-ID: 4611
+Essential: yes
+Multi-Arch: foreign
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libtinfo6 (>= 6.3)
+
+Package: libbz2-1.0
+Architecture: arm64
+Version: 1.0.8-5build1
+APT-ID: 1737
+Multi-Arch: same
+Source: bzip2
+Source-Version: 1.0.8-5build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: ubuntu-advantage-tools
+Architecture: arm64
+Version: 27.9~22.04.1
+APT-ID: 66279
+Source: ubuntu-advantage-tools
+Source-Version: 27.9~22.04.1
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, python3-yaml, python3:any, libapt-pkg6.0 (>= 0.8.0), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 9), python3-apt, python3-pkg-resources, distro-info (>= 0.18ubuntu0.18.04.1)
+
+Package: libinih1
+Architecture: arm64
+Version: 53-1ubuntu3
+APT-ID: 2586
+Multi-Arch: same
+Source: libinih
+Source-Version: 53-1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: time
+Architecture: arm64
+Version: 1.9-0.1build2
+APT-ID: 5721
+Multi-Arch: foreign
+Source: time
+Source-Version: 1.9-0.1build2
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: zlib1g
+Architecture: arm64
+Version: 1:1.2.11.dfsg-2ubuntu9
+APT-ID: 5959
+Multi-Arch: same
+Source: zlib
+Source-Version: 1:1.2.11.dfsg-2ubuntu9
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Breaks: libxml2 (<< 2.7.6.dfsg-2), texlive-binaries (<< 2009-12)
+Provides: libz1
+
+Package: libintl-xs-perl
+Architecture: arm64
+Version: 1.26-3build2
+APT-ID: 2595
+Source: libintl-perl
+Source-Version: 1.26-3build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libintl-perl (= 1.26-3build2), perl, perlapi-5.34.0, libc6 (>= 2.34)
+
+Package: libx11-6
+Architecture: arm64
+Version: 2:1.7.5-1
+APT-ID: 4022
+Multi-Arch: same
+Source: libx11
+Source-Version: 2:1.7.5-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libxcb1 (>= 1.11.1), libx11-data
+Breaks: libx11-xcb1 (<< 2:1.7.0-2)
+
+Package: ethtool
+Architecture: arm64
+Version: 1:5.16-1
+APT-ID: 386
+Source: ethtool
+Source-Version: 1:5.16-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libmnl0 (>= 1.0.3-4~)
+
+Package: libiniparser1
+Architecture: arm64
+Version: 4.1-4ubuntu4
+APT-ID: 2589
+Multi-Arch: same
+Source: iniparser
+Source-Version: 4.1-4ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: python3-launchpadlib
+Architecture: all
+Version: 1.10.16-1
+APT-ID: 5169
+Source: python-launchpadlib
+Source-Version: 1.10.16-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-httplib2, python3-keyring, python3-lazr.restfulclient, python3-lazr.uri, python3:any
+Suggests: python3-pkg-resources, python3-testresources
+
+Package: gcc-12-base
+Architecture: arm64
+Version: 12-20220319-1ubuntu1
+APT-ID: 582
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12-20220319-1ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: gnat (<< 7)
+
+Package: pollinate
+Architecture: all
+Version: 4.33-3ubuntu2
+APT-ID: 4813
+Source: pollinate
+Source-Version: 4.33-3ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: curl, adduser, xxd | vim-common
+Replaces: pollen (<< 4.21-1)
+Breaks: pollen (<< 4.21-1)
+
+Package: info
+Architecture: arm64
+Version: 6.8-4build1
+APT-ID: 1086
+Multi-Arch: foreign
+Source: texinfo
+Source-Version: 6.8-4build1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6), install-info
+Replaces: texinfo (<< 4.7-2), texinfo-doc-nonfree
+Breaks: texinfo-doc-nonfree
+Provides: info-browser
+
+Package: init
+Architecture: arm64
+Version: 1.62
+APT-ID: 1087
+Multi-Arch: foreign
+Source: init-system-helpers
+Source-Version: 1.62
+Priority: required
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: init-system-helpers (>= 1.25)
+Pre-Depends: systemd-sysv
+
+Package: bcache-tools
+Architecture: arm64
+Version: 1.0.8-4ubuntu3
+APT-ID: 90
+Source: bcache-tools
+Source-Version: 1.0.8-4ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libuuid1 (>= 2.16), gawk
+Recommends: initramfs-tools | linux-initramfs-tool
+
+Package: python3-pyrsistent
+Architecture: arm64
+Version: 0.18.1-1build1
+APT-ID: 5315
+Multi-Arch: same
+Source: pyrsistent
+Source-Version: 0.18.1-1build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17)
+
+Package: python3-dbus
+Architecture: arm64
+Version: 1.2.18-3build1
+APT-ID: 5081
+Source: dbus-python
+Source-Version: 1.2.18-3build1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.40)
+Suggests: python-dbus-doc
+Recommends: python3-gi
+Provides: python3.10-dbus
+
+Package: libelf1
+Architecture: arm64
+Version: 0.186-1build1
+APT-ID: 2076
+Multi-Arch: same
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), zlib1g (>= 1:1.1.4)
+
+Package: tmux
+Architecture: arm64
+Version: 3.2a-4build1
+APT-ID: 5733
+Source: tmux
+Source-Version: 3.2a-4build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libevent-core-2.1-7 (>= 2.1.8-stable), libtinfo6 (>= 6), libutempter0 (>= 1.1.5)
+
+Package: groff-base
+Architecture: arm64
+Version: 1.22.4-8build1
+APT-ID: 874
+Multi-Arch: foreign
+Source: groff
+Source-Version: 1.22.4-8build1
+Priority: standard
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libgcc-s1 (>= 4.0), libstdc++6 (>= 4.1.1), libuchardet0 (>= 0.0.1)
+Suggests: groff
+
+Package: libmd0
+Architecture: arm64
+Version: 1.0.4-1build1
+APT-ID: 2829
+Multi-Arch: same
+Source: libmd
+Source-Version: 1.0.4-1build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: git-man
+Architecture: all
+Version: 1:2.34.1-1ubuntu1.2
+APT-ID: 64846
+Multi-Arch: foreign
+Source: git
+Source-Version: 1:2.34.1-1ubuntu1.2
+Priority: optional
+Section: vcs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: ncurses-term
+Architecture: all
+Version: 6.3-2
+APT-ID: 4614
+Multi-Arch: foreign
+Source: ncurses
+Source-Version: 6.3-2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: ncurses-base (>= 6.1+20190713)
+Replaces: alacritty (<< 0.3.4~), dvtm (<< 0.15-3), jfbterm (<< 0.4.7-10), kon2 (<< 0.3.9b-21), libiterm1 (<< 0.5-9), tn5250 (<< 0.17.4-3)
+Breaks: bash-static (<< 4.4.18-1.1), dvtm (<< 0.15-3), libmono-corlib4.5-cil (<< 4.6.2.7+dfsg-2), libslang2 (<< 2.3.1a-3), libtinfo5 (<< 6.1), libunibilium0 (<< 2), libunibilium4 (<< 2.0.0-3), zsh-static (<< 5.4.2-4)
+
+Package: dash
+Architecture: arm64
+Version: 0.5.11+git20210903+057cd650a4ed-3build1
+APT-ID: 251
+Essential: yes
+Multi-Arch: foreign
+Source: dash
+Source-Version: 0.5.11+git20210903+057cd650a4ed-3build1
+Priority: important
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: debianutils (>= 2.15), dpkg (>= 1.19.1), debconf (>= 0.5) | debconf-2.0
+Pre-Depends: libc6 (>= 2.34)
+
+Package: libblockdev-crypto2
+Architecture: arm64
+Version: 2.26-1
+APT-ID: 1665
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.23.0), libblockdev-utils2 (>= 2.20), libc6 (>= 2.25), libcryptsetup12 (>= 2:2.0.3), libglib2.0-0 (>= 2.42.2), libnss3 (>= 2:3.13.4-2~), libvolume-key1 (>= 0.3.9)
+
+Package: libtirpc3
+Architecture: arm64
+Version: 1.3.2-2build1
+APT-ID: 3795
+Multi-Arch: same
+Source: libtirpc
+Source-Version: 1.3.2-2build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libtirpc-common (>= 1.3.2-2build1)
+Breaks: nfs-common (<< 1:1.2.8-7), nfs-kernel-server (<< 1:1.2.8-7)
+
+Package: dbus
+Architecture: arm64
+Version: 1.12.20-2ubuntu4
+APT-ID: 255
+Multi-Arch: foreign
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libapparmor1 (>= 2.8.94), libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libdbus-1-3 (= 1.12.20-2ubuntu4), libexpat1 (>= 2.1~beta3), libselinux1 (>= 3.1~), libsystemd0
+Suggests: default-dbus-session-bus | dbus-session-bus
+Provides: default-dbus-system-bus, dbus-system-bus-common (= 1.12.20-2ubuntu4), dbus-system-bus (= 1.12.20-2ubuntu4), dbus-session-bus-common (= 1.12.20-2ubuntu4), dbus-daemon (= 1.12.20-2ubuntu4), dbus-bin (= 1.12.20-2ubuntu4)
+
+Package: sbsigntool
+Architecture: arm64
+Version: 0.9.4-2ubuntu2
+APT-ID: 5517
+Multi-Arch: foreign
+Source: sbsigntool
+Source-Version: 0.9.4-2ubuntu2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16)
+
+Package: cloud-initramfs-copymods
+Architecture: all
+Version: 0.47ubuntu1
+APT-ID: 187
+Source: cloud-initramfs-tools
+Source-Version: 0.47ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: initramfs-tools
+
+Package: libedit2
+Architecture: arm64
+Version: 3.1-20210910-1build1
+APT-ID: 2065
+Multi-Arch: same
+Source: libedit
+Source-Version: 3.1-20210910-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.1.3), libc6 (>= 2.33), libtinfo6 (>= 6)
+Replaces: libedit-dev (<< 3.1-20180525-2~)
+
+Package: libicu70
+Architecture: arm64
+Version: 70.1-2ubuntu1
+APT-ID: 67204
+Multi-Arch: same
+Source: icu
+Source-Version: 70.1-2ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 12)
+Replaces: libiculx63 (<< 63.1-5)
+Breaks: libiculx63 (<< 63.1-5), openttd (<< 1.8.0-2~)
+
+Package: kpartx
+Architecture: arm64
+Version: 0.8.8-1ubuntu1
+APT-ID: 1139
+Source: multipath-tools
+Source-Version: 0.8.8-1ubuntu1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), udev, dmsetup
+
+Package: bsdutils
+Architecture: arm64
+Version: 1:2.37.2-4ubuntu3
+APT-ID: 137
+Essential: yes
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libsystemd0
+Recommends: bsdextrautils
+
+Package: python3-pyasn1-modules
+Architecture: all
+Version: 0.2.1-1
+APT-ID: 5288
+Source: python-pyasn1-modules
+Source-Version: 0.2.1-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-pyasn1 (>= 0.4.1), python3-pyasn1 (<< 0.5.0), python3:any
+
+Package: python3-problem-report
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 66139
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.0~)
+
+Package: screen
+Architecture: arm64
+Version: 4.9.0-1
+APT-ID: 5521
+Source: screen
+Source-Version: 4.9.0-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libtinfo6 (>= 6), libutempter0 (>= 1.1.5)
+Suggests: byobu | screenie | iselect (>= 1.4.0-1), ncurses-term
+
+Package: iproute2
+Architecture: arm64
+Version: 5.15.0-1ubuntu2
+APT-ID: 1097
+Multi-Arch: foreign
+Source: iproute2
+Source-Version: 5.15.0-1ubuntu2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, libbpf0 (>= 1:0.2), libbsd0 (>= 0.0), libc6 (>= 2.34), libcap2 (>= 1:2.10), libdb5.3, libelf1 (>= 0.131), libmnl0 (>= 1.0.3-4~), libselinux1 (>= 3.1~), libxtables12 (>= 1.6.0+snapshot20161117), libcap2-bin
+Suggests: iproute2-doc
+Recommends: libatm1 (>= 2.4.1-17~)
+Conflicts: arpd, iproute (<< 20130000-1)
+Replaces: iproute
+Provides: arpd
+
+Package: libnetplan0
+Architecture: arm64
+Version: 0.104-0ubuntu2
+APT-ID: 2966
+Multi-Arch: same
+Source: netplan.io
+Source-Version: 0.104-0ubuntu2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libglib2.0-0 (>= 2.70.0), libuuid1 (>= 2.16), libyaml-0-2
+
+Package: gpgconf
+Architecture: arm64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 64870
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libreadline8 (>= 6.0)
+Replaces: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+
+Package: libdevmapper1.02.1
+Architecture: arm64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 1997
+Multi-Arch: same
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libselinux1 (>= 3.1~), libudev1 (>= 183)
+Recommends: dmsetup (>= 2:1.02.175-2.1ubuntu4~)
+
+Package: libss2
+Architecture: arm64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 65256
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcom-err2, libc6 (>= 2.34)
+Replaces: e2fsprogs (<< 1.34-1)
+
+Package: libnewt0.52
+Architecture: arm64
+Version: 0.52.21-5ubuntu2
+APT-ID: 2969
+Multi-Arch: same
+Source: newt
+Source-Version: 0.52.21-5ubuntu2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libslang2 (>= 2.2.4)
+Recommends: libfribidi0
+
+Package: policykit-1
+Architecture: arm64
+Version: 0.105-33
+APT-ID: 4808
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: pkexec (= 0.105-33), polkitd (= 0.105-33)
+
+Package: libsystemd-dev
+Architecture: arm64
+Version: 249.11-0ubuntu3.4
+APT-ID: 65262
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-proposed,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libsystemd0 (= 249.11-0ubuntu3.4)
+
+Package: libgdbm6
+Architecture: arm64
+Version: 1.23-1
+APT-ID: 2265
+Multi-Arch: same
+Source: gdbm
+Source-Version: 1.23-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: gdbm-l10n (= 1.23-1)
+
+Package: apport
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 64747
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3, python3-apport (>= 2.20.11-0ubuntu82.1), lsb-base (>= 3.0-6), python3-gi, gir1.2-glib-2.0 (>= 1.29.17)
+Suggests: apport-gtk | apport-kde, policykit-1
+Recommends: apport-symptoms, python3-systemd
+Conflicts: core-dump-handler
+Replaces: core-dump-handler, python-apport (<< 2.2-0ubuntu1)
+Breaks: python-apport (<< 2.2-0ubuntu1)
+Provides: core-dump-handler
+
+Package: binutils
+Architecture: arm64
+Version: 2.38-3ubuntu1
+APT-ID: 100
+Source: binutils
+Source-Version: 2.38-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: binutils-common (= 2.38-3ubuntu1), libbinutils (= 2.38-3ubuntu1), binutils-aarch64-linux-gnu (= 2.38-3ubuntu1)
+Suggests: binutils-doc (>= 2.38-3ubuntu1)
+Conflicts: binutils-multiarch (<< 2.27-8), modutils (<< 2.4.19-1)
+Provides: elf-binutils, binutils-gold
+
+Package: libuv1
+Architecture: arm64
+Version: 1.43.0-1
+APT-ID: 3908
+Multi-Arch: same
+Source: libuv1
+Source-Version: 1.43.0-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libpsl5
+Architecture: arm64
+Version: 0.21.0-1.2build2
+APT-ID: 3252
+Multi-Arch: same
+Source: libpsl
+Source-Version: 0.21.0-1.2build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libidn2-0 (>= 0.16), libc6 (>= 2.33), libunistring2 (>= 0.9.7)
+Recommends: publicsuffix (>= 20150507)
+
+Package: netcat-openbsd
+Architecture: arm64
+Version: 1.218-4ubuntu1
+APT-ID: 4619
+Source: netcat-openbsd
+Source-Version: 1.218-4ubuntu1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.2.0), libc6 (>= 2.34)
+Replaces: netcat (<< 1.10-35)
+Breaks: netcat (<< 1.10-35)
+Provides: netcat
+
+Package: liburcu8
+Architecture: arm64
+Version: 0.13.1-1
+APT-ID: 3888
+Multi-Arch: same
+Source: liburcu
+Source-Version: 0.13.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: bsdextrautils
+Architecture: arm64
+Version: 2.37.2-4ubuntu3
+APT-ID: 136
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsmartcols1 (>= 2.31.1), libtinfo6 (>= 6)
+Replaces: bsdmainutils (<< 12.1.3)
+Breaks: bsdmainutils (<< 12.1.3)
+
+Package: python3-zipp
+Architecture: all
+Version: 1.0.0-3
+APT-ID: 5423
+Source: python-zipp
+Source-Version: 1.0.0-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-more-itertools, python3:any
+
+Package: libstdc++6
+Architecture: arm64
+Version: 12-20220319-1ubuntu1
+APT-ID: 3698
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12-20220319-1ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-12-base (= 12-20220319-1ubuntu1), libc6 (>= 2.34), libgcc-s1 (>= 4.5)
+Conflicts: scim (<< 1.4.2-1)
+Replaces: libstdc++6-12-dbg (<< 4.9.0-3)
+Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+
+Package: libxdmcp6
+Architecture: arm64
+Version: 1:1.1.3-0ubuntu5
+APT-ID: 4105
+Multi-Arch: same
+Source: libxdmcp
+Source-Version: 1:1.1.3-0ubuntu5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.2.0), libc6 (>= 2.17)
+
+Package: python3-secretstorage
+Architecture: all
+Version: 3.3.1-1
+APT-ID: 5345
+Source: python-secretstorage
+Source-Version: 3.3.1-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, python3-jeepney (>= 0.6), python3-cryptography (>= 2.0), python3:any
+Suggests: gnome-keyring (>= 2.30), python-secretstorage-doc
+
+Package: libncurses6
+Architecture: arm64
+Version: 6.3-2
+APT-ID: 2931
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtinfo6 (= 6.3-2), libc6 (>= 2.34)
+Recommends: libgpm2
+Breaks: cowdancer (<< 0.89~)
+
+Package: fwupd
+Architecture: arm64
+Version: 1.7.5-3
+APT-ID: 556
+Multi-Arch: foreign
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libfwupd2 (= 1.7.5-3), libfwupdplugin5 (= 1.7.5-3), libc6 (>= 2.34), libcurl3-gnutls (>= 7.63.0), libefiboot1 (>= 37), libflashrom1, libglib2.0-0 (>= 2.70.0), libgnutls30 (>= 3.7.3), libgudev-1.0-0 (>= 165), libgusb2 (>= 0.3.6), libjcat1 (>= 0.1.3), libjson-glib-1.0-0 (>= 1.5.2), libmbim-glib4 (>= 1.26.0), libmbim-proxy, libmm-glib0 (>= 1.10.0), libpolkit-gobject-1-0 (>= 0.99), libqmi-glib5 (>= 1.18.0), libqmi-proxy, libsqlite3-0 (>= 3.6.1), libsystemd0, libtss2-esys-3.0.2-0 (>= 2.3.1), libxmlb2 (>= 0.3.2), shared-mime-info
+Suggests: gir1.2-fwupd-2.0
+Recommends: python3, bolt, dbus, secureboot-db, udisks2, fwupd-signed
+Conflicts: fwupdate-amd64-signed, fwupdate-arm64-signed, fwupdate-armhf-signed, fwupdate-i386-signed
+Replaces: fwupdate (<< 12-7), gir1.2-dfu-1.0 (<< 0.9.7-1), libdfu-dev (<< 0.9.7-1), libdfu1 (<< 0.9.7-1)
+Breaks: fwupdate (<< 12-7), gir1.2-dfu-1.0 (<< 0.9.7-1), libdfu-dev (<< 0.9.7-1), libdfu1 (<< 0.9.7-1)
+Provides: fwupdate
+
+Package: python3-systemd
+Architecture: arm64
+Version: 234-3ubuntu2
+APT-ID: 5374
+Source: python-systemd
+Source-Version: 234-3ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17), libsystemd0 (>= 246)
+
+Package: ubuntu-minimal
+Architecture: arm64
+Version: 1.481
+APT-ID: 5768
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: required
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: adduser, apt, apt-utils, console-setup, debconf, debconf-i18n, e2fsprogs, eject, init, iproute2, iputils-ping, isc-dhcp-client, kbd, kmod, less, locales, lsb-release, mawk, mount, netbase, netcat-openbsd, netplan.io, passwd, procps, python3, sensible-utils, sudo, tzdata, ubuntu-advantage-tools, ubuntu-keyring, udev, vim-tiny, whiptail
+Recommends: rsyslog, usrmerge
+
+Package: libdebconfclient0
+Architecture: arm64
+Version: 0.261ubuntu1
+APT-ID: 1973
+Multi-Arch: same
+Source: cdebconf
+Source-Version: 0.261ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.17)
+
+Package: iputils-tracepath
+Architecture: arm64
+Version: 3:20211215-1
+APT-ID: 1104
+Multi-Arch: foreign
+Source: iputils
+Source-Version: 3:20211215-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: traceroute
+
+Package: iso-codes
+Architecture: all
+Version: 4.9.0-1
+APT-ID: 1116
+Multi-Arch: foreign
+Source: iso-codes
+Source-Version: 4.9.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: isoquery
+
+Package: libparted2
+Architecture: arm64
+Version: 3.4-2build1
+APT-ID: 3138
+Multi-Arch: same
+Source: parted
+Source-Version: 3.4-2build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), libuuid1 (>= 2.16)
+Suggests: parted, libparted-dev, libparted-i18n (= 3.4-2build1)
+Provides: libparted
+
+Package: libutempter0
+Architecture: arm64
+Version: 1.2.1-2build2
+APT-ID: 3904
+Multi-Arch: same
+Source: libutempter
+Source-Version: 1.2.1-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: openssl
+Architecture: arm64
+Version: 3.0.2-0ubuntu1.6
+APT-ID: 66097
+Multi-Arch: foreign
+Source: openssl
+Source-Version: 3.0.2-0ubuntu1.6
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.2-0ubuntu1.2)
+Suggests: ca-certificates
+
+Package: update-notifier-common
+Architecture: all
+Version: 3.192.54
+APT-ID: 5799
+Source: update-notifier
+Source-Version: 3.192.54
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-apt, python3-dbus, python3-debian, python3-debconf | debconf (<< 1.5.64~), python3-distro-info, lsb-release, patch, update-manager-core (>= 1:17.04.2)
+Pre-Depends: dpkg (>= 1.15.7.2), apt (>= 1.1~)
+Suggests: policykit-1
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-notifier (<< 0.75.1)
+
+Package: python3-debian
+Architecture: all
+Version: 0.1.43ubuntu1
+APT-ID: 5084
+Source: python-debian
+Source-Version: 0.1.43ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-chardet, zstd, python3:any
+Suggests: gpgv
+Recommends: python3-apt
+
+Package: e2fsprogs
+Architecture: arm64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 64797
+Multi-Arch: foreign
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=arm64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: logsave
+Pre-Depends: libblkid1 (>= 2.36), libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libext2fs2 (= 1.46.5-2ubuntu1.1), libss2 (>= 1.38), libuuid1 (>= 2.16)
+Suggests: gpart, parted, fuse2fs, e2fsck-static
+Recommends: e2fsprogs-l10n
+
+Package: libxmlsec1-openssl
+Architecture: arm64
+Version: 1.2.33-1build2
+APT-ID: 4155
+Multi-Arch: same
+Source: xmlsec1
+Source-Version: 1.2.33-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libssl3 (>= 3.0.0~~alpha1), libxml2 (>= 2.8.0), libxmlsec1 (>= 1.2.33)
+
+Package: passwd
+Architecture: arm64
+Version: 1:4.8.1-2ubuntu2
+APT-ID: 4734
+Multi-Arch: foreign
+Source: shadow
+Source-Version: 1:4.8.1-2ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libsemanage2 (>= 2.0.3), libpam-modules
+Recommends: sensible-utils
+
+Package: nftables
+Architecture: arm64
+Version: 1.0.2-1ubuntu2
+APT-ID: 4646
+Source: nftables
+Source-Version: 1.0.2-1ubuntu2
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnftables1 (= 1.0.2-1ubuntu2), libc6 (>= 2.34), libedit2 (>= 3.1-20130611-0)
+Suggests: firewalld
+Recommends: netbase
+
+Package: libproc-processtable-perl
+Architecture: arm64
+Version: 0.634-1build1
+APT-ID: 3236
+Multi-Arch: same
+Source: libproc-processtable-perl
+Source-Version: 0.634-1build1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34)
+
+Package: libnspr4
+Architecture: arm64
+Version: 2:4.32-3build1
+APT-ID: 3021
+Multi-Arch: same
+Source: nspr
+Source-Version: 2:4.32-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libgcc-s1
+Architecture: arm64
+Version: 12-20220319-1ubuntu1
+APT-ID: 2238
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12-20220319-1ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-12-base (= 12-20220319-1ubuntu1), libc6 (>= 2.35)
+Replaces: libgcc1 (<< 1:10)
+Breaks: libgcc-7-dev (<< 7.5.0-4), libgcc-8-dev (<< 8.3.0-27), libgcc-9-dev (<< 9.2.1-26)
+Provides: libgcc1 (= 1:12-20220319-1ubuntu1)
+
+Package: libmodule-scandeps-perl
+Architecture: all
+Version: 1.31-1
+APT-ID: 2879
+Source: libmodule-scandeps-perl
+Source-Version: 1.31-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=arm64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
diff --git a/test/integration/edsp-ubuntu-bug-1990586 b/test/integration/edsp-ubuntu-bug-1990586
new file mode 100644
index 0000000..94516d1
--- /dev/null
+++ b/test/integration/edsp-ubuntu-bug-1990586
@@ -0,0 +1,30894 @@
+Request: EDSP 0.5
+Architecture: amd64
+Architectures: amd64 i386
+Upgrade-All: yes
+Dist-Upgrade: yes
+Solver: dump
+Machine-ID: 2c030cfce3b4487f9810f12a3ac6e87e
+
+Package: dpkg
+Architecture: amd64
+Version: 1.21.1ubuntu2.1
+APT-ID: 71788
+Essential: yes
+Multi-Arch: foreign
+Source: dpkg
+Source-Version: 1.21.1ubuntu2.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tar (>= 1.28-1)
+Pre-Depends: libbz2-1.0, libc6 (>= 2.34), liblzma5 (>= 5.2.2), libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Suggests: apt, debsig-verify
+Breaks: libapt-pkg5.0 (<< 1.7~b), lsb-base (<< 10.2019031300)
+
+Package: kerneloops
+Architecture: amd64
+Version: 0.12+git20140509-6ubuntu5
+APT-ID: 1168
+Source: kerneloops
+Source-Version: 0.12+git20140509-6ubuntu5
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcurl3-gnutls (>= 7.16.2), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.78), libglib2.0-0 (>= 2.14.0), lsb-base
+Suggests: kerneloops-applet
+Replaces: kerneloops-daemon (<< 0.12+git20140509-6ubuntu1)
+Breaks: kerneloops-daemon (<< 0.12+git20140509-6ubuntu1)
+Provides: kerneloops-daemon
+
+Package: openvpn
+Architecture: amd64
+Version: 2.5.5-1ubuntu3
+APT-ID: 4823
+Source: openvpn
+Source-Version: 2.5.5-1ubuntu3
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), liblzo2-2 (>= 2.02), libpam0g (>= 0.99.7.1), libpkcs11-helper1 (>= 1.11), libssl3 (>= 3.0.0~~alpha1), libsystemd0, iproute2, lsb-base (>= 3.0-6)
+Suggests: openssl, resolvconf, openvpn-systemd-resolved, easy-rsa
+
+Package: fontconfig
+Architecture: amd64
+Version: 2.13.1-4.2ubuntu5
+APT-ID: 427
+Multi-Arch: foreign
+Source: fontconfig
+Source-Version: 2.13.1-4.2ubuntu5
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfontconfig1 (>= 2.13.0), libfreetype6 (>= 2.8.1), fontconfig-config
+
+Package: libvulkan1
+Architecture: amd64
+Version: 1.3.204.1-2
+APT-ID: 4034
+Multi-Arch: same
+Source: vulkan-loader
+Source-Version: 1.3.204.1-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: mesa-vulkan-drivers | vulkan-icd
+Replaces: libvulkan-dev (<< 1.1.70+dfsg1-2), vulkan-loader
+Breaks: libvulkan-dev (<< 1.1.70+dfsg1-2), vulkan-loader
+
+Package: telnet
+Architecture: amd64
+Version: 0.17-44build1
+APT-ID: 5752
+Source: netkit-telnet
+Source-Version: 0.17-44build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libstdc++6 (>= 5), netbase
+Replaces: netstd
+Provides: telnet-client
+
+Package: libnetfilter-conntrack3
+Architecture: amd64
+Version: 1.0.9-1
+APT-ID: 3032
+Multi-Arch: same
+Source: libnetfilter-conntrack
+Source-Version: 1.0.9-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libmnl0 (>= 1.0.3-4~), libnfnetlink0
+
+Package: gkbd-capplet
+Architecture: amd64
+Version: 3.26.1-2
+APT-ID: 764
+Source: libgnomekbd
+Source-Version: 3.26.1-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.26), libgnomekbd8 (>= 3.6.0), libgtk-3-0 (>= 3.9.10), libxklavier16 (>= 5.2)
+
+Package: lsb-release
+Architecture: all
+Version: 11.1.0ubuntu4
+APT-ID: 4602
+Multi-Arch: foreign
+Source: lsb
+Source-Version: 11.1.0ubuntu4
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, distro-info-data
+Recommends: apt
+
+Package: libcogl-path20
+Architecture: amd64
+Version: 1.22.8-3build1
+APT-ID: 1917
+Multi-Arch: same
+Source: cogl
+Source-Version: 1.22.8-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.11), libcogl20 (= 1.22.8-3build1), libglib2.0-0 (>= 2.32.0)
+Recommends: libcogl-common
+
+Package: liborcus-parser-0.17-0
+Architecture: amd64
+Version: 0.17.2-2
+APT-ID: 3153
+Multi-Arch: same
+Source: liborcus
+Source-Version: 0.17.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libboost-filesystem1.74.0 (>= 1.74.0), libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: libsynctex2
+Architecture: amd64
+Version: 2021.20210626.59705-1build1
+APT-ID: 3794
+Multi-Arch: same
+Source: texlive-bin
+Source-Version: 2021.20210626.59705-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), zlib1g (>= 1:1.1.4)
+
+Package: tcpdump
+Architecture: amd64
+Version: 4.99.1-3build2
+APT-ID: 5749
+Multi-Arch: foreign
+Source: tcpdump
+Source-Version: 4.99.1-3build2
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libc6 (>= 2.34), libpcap0.8 (>= 1.9.0), libssl3 (>= 3.0.0~~alpha1)
+Suggests: apparmor (>= 2.3)
+Replaces: apparmor-profiles-extra (<< 1.12~)
+Breaks: apparmor-profiles-extra (<< 1.12~)
+
+Package: libperl5.34
+Architecture: amd64
+Version: 5.34.0-3ubuntu1
+APT-ID: 3241
+Multi-Arch: same
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libgdbm-compat4 (>= 1.18-3), libgdbm6 (>= 1.18-3), zlib1g (>= 1:1.2.2.3), perl-modules-5.34 (>= 5.34.0-3ubuntu1)
+Suggests: sensible-utils
+Replaces: libarchive-tar-perl (<= 1.38-2), libcompress-raw-bzip2-perl (<< 2.101), libcompress-raw-zlib-perl (<< 2.101), libcompress-zlib-perl (<< 2.102), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.08), libio-compress-base-perl (<< 2.102), libio-compress-bzip2-perl (<< 2.102), libio-compress-perl (<< 2.102), libio-compress-zlib-perl (<< 2.102), libmime-base64-perl (<< 3.16), libmodule-corelist-perl (<< 2.14-2), libstorable-perl (<< 3.23), libsys-syslog-perl (<< 0.36), libthreads-perl (<< 2.26), libthreads-shared-perl (<< 1.62), libtime-hires-perl (<< 1.9767), libtime-piece-perl (<< 1.3401), perl (<< 5.22.0~), perl-base (<< 5.22.0~)
+Breaks: libcompress-raw-bzip2-perl (<< 2.101), libcompress-raw-zlib-perl (<< 2.101), libcompress-zlib-perl (<< 2.102), libdigest-md5-perl (<< 2.58), libdigest-sha-perl (<< 6.02), libencode-perl (<< 3.08), libfilter-perl (<< 1.60), libio-compress-base-perl (<< 2.102), libio-compress-bzip2-perl (<< 2.102), libio-compress-perl (<< 2.102), libio-compress-zlib-perl (<< 2.102), libmime-base64-perl (<< 3.16), libstorable-perl (<< 3.23), libsys-syslog-perl (<< 0.36), libthreads-perl (<< 2.26), libthreads-shared-perl (<< 1.62), libtime-hires-perl (<< 1.9767), libtime-piece-perl (<< 1.3401)
+
+Package: fonts-tlwg-purisa-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 530
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-purisa (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-purisa (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-purisa (<< 1:0.6.2-2)
+
+Package: fonts-tibetan-machine
+Architecture: all
+Version: 1.901b-6
+APT-ID: 516
+Multi-Arch: foreign
+Source: fonts-tibetan-machine
+Source-Version: 1.901b-6
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: ttf-tmuni (<< 1.901b-3)
+Breaks: ttf-tmuni (<< 1.901b-3)
+
+Package: tracker
+Architecture: amd64
+Version: 3.3.0-1
+APT-ID: 5863
+Source: tracker
+Source-Version: 3.3.0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.55.2), libicu70 (>= 70.1-1~), libsqlite3-0 (>= 3.20.0), libstemmer0d (>= 0+svn527), libtracker-sparql-3.0-0 (= 3.3.0-1), shared-mime-info, libglib2.0-bin, default-dbus-session-bus | dbus-session-bus
+Recommends: tracker-miner-fs
+Breaks: tracker-miner-fs (<< 3.1.1)
+
+Package: xserver-xorg-video-nouveau
+Architecture: amd64
+Version: 1:1.0.17-2build1
+APT-ID: 6058
+Source: xserver-xorg-video-nouveau
+Source-Version: 1:1.0.17-2build1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdrm-nouveau2 (>= 2.4.38), libdrm2 (>= 2.4.61), libudev1 (>= 183), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Suggests: firmware-misc-nonfree
+Recommends: libgl1-mesa-dri (>= 9.0)
+Provides: xorg-driver-video
+
+Package: network-manager-openvpn-gnome
+Architecture: amd64
+Version: 1.8.18-1
+APT-ID: 4748
+Source: network-manager-openvpn
+Source-Version: 1.8.18-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.34), libgtk-3-0 (>= 3.4), libnm0 (>= 1.7.0), libnma0 (>= 1.8.0), libsecret-1-0 (>= 0.18), network-manager-openvpn (= 1.8.18-1)
+
+Package: dmidecode
+Architecture: amd64
+Version: 3.3-3ubuntu0.1
+APT-ID: 71780
+Multi-Arch: foreign
+Source: dmidecode
+Source-Version: 3.3-3ubuntu0.1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libcups2
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 72300
+Multi-Arch: same
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libgnutls30 (>= 3.7.2), libgssapi-krb5-2 (>= 1.17), zlib1g (>= 1:1.2.0)
+Suggests: cups-common
+
+Package: gir1.2-adw-1
+Architecture: amd64
+Version: 1.1.0-1ubuntu2
+APT-ID: 635
+Multi-Arch: same
+Source: libadwaita-1
+Source-Version: 1.1.0-1ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, gir1.2-gtk-4.0 (>= 4.5.0), libadwaita-1-0 (>= 1.1~beta)
+
+Package: libxcb-present0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4149
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: libedata-book-1.2-26
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72326
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libebackend-1.2-10 (= 3.44.4-0ubuntu1), libebook-contacts-1.2-3 (>= 3.43.2), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libglib2.0-0 (>= 2.70.0), libsoup2.4-1 (>= 2.42), libsqlite3-0 (>= 3.5.9)
+
+Package: libwrap0
+Architecture: amd64
+Version: 7.6.q-31build2
+APT-ID: 4089
+Multi-Arch: same
+Source: tcp-wrappers
+Source-Version: 7.6.q-31build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libnsl2 (>= 1.0)
+
+Package: fonts-kacst-one
+Architecture: all
+Version: 5.0+svn11846-10
+APT-ID: 450
+Multi-Arch: foreign
+Source: fonts-kacst-one
+Source-Version: 5.0+svn11846-10
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.6~)
+Recommends: fonts-kacst
+
+Package: libcanberra-gtk3-0
+Architecture: amd64
+Version: 0.30-10ubuntu1
+APT-ID: 1843
+Multi-Arch: same
+Source: libcanberra
+Source-Version: 0.30-10ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcanberra0 (>= 0.12), libglib2.0-0 (>= 2.12.0), libgtk-3-0 (>= 3.0.0), libx11-6
+Recommends: libcanberra-gtk3-module
+
+Package: libkeyutils1
+Architecture: amd64
+Version: 1.6.1-2ubuntu3
+APT-ID: 2770
+Multi-Arch: same
+Source: keyutils
+Source-Version: 1.6.1-2ubuntu3
+Priority: important
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: yaru-theme-icon
+Architecture: all
+Version: 22.04.4
+APT-ID: 6070
+Source: yaru-theme
+Source-Version: 22.04.4
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-blinker
+Architecture: all
+Version: 1.4+dfsg1-0.4
+APT-ID: 5161
+Source: blinker
+Source-Version: 1.4+dfsg1-0.4
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-blinker-doc
+
+Package: orca
+Architecture: all
+Version: 42.0-1ubuntu2
+APT-ID: 74261
+Source: orca
+Source-Version: 42.0-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, gir1.2-glib-2.0, gir1.2-gtk-3.0 (>= 3.6.2), gir1.2-pango-1.0, gir1.2-wnck-3.0, gir1.2-gstreamer-1.0, gstreamer1.0-plugins-good, python3-brlapi (>= 0.5.1), python3-cairo, python3-gi (>= 3.18), python3-louis (>= 1.6.2), python3-pyatspi (>= 2.26), python3-speechd (>= 0.8), speech-dispatcher (>= 0.8), gsettings-desktop-schemas
+Suggests: brltty
+Recommends: xbrlapi
+Replaces: gnome-orca (<< 3.26.0-4~)
+Breaks: gnome-orca (<< 3.26.0-4~)
+
+Package: libebook-1.2-20
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72317
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcamel-1.2-63 (>= 3.42.1), libebook-contacts-1.2-3 (>= 3.16.2), libedata-book-1.2-26 (>= 3.43.2), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libglib2.0-0 (>= 2.41.1), libxml2 (>= 2.7.4)
+
+Package: libyajl2
+Architecture: amd64
+Version: 2.1.0-3build2
+APT-ID: 4293
+Multi-Arch: same
+Source: yajl
+Source-Version: 2.1.0-3build2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libxtables12
+Architecture: amd64
+Version: 1.8.7-1ubuntu5
+APT-ID: 4275
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: iptables (<< 1.4.16.3-3), libxtables11 (>= 1.6.0+snapshot20161117-1)
+Breaks: iptables (<< 1.4.16.3-3), libxtables11 (>= 1.6.0+snapshot20161117-1)
+
+Package: libcurl4
+Architecture: amd64
+Version: 7.81.0-1ubuntu1.4
+APT-ID: 72306
+Multi-Arch: same
+Source: curl
+Source-Version: 7.81.0-1ubuntu1.4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libidn2-0 (>= 0.6), libldap-2.5-0 (>= 2.5.4), libnghttp2-14 (>= 1.12.0), libpsl5 (>= 0.16.0), librtmp1 (>= 2.4+20131018.git79459a2-3~), libssh-4 (>= 0.9.0), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+Conflicts: libcurl3
+Replaces: libcurl3
+
+Package: mythes-en-us
+Architecture: all
+Version: 1:7.2.0-2
+APT-ID: 4704
+Multi-Arch: foreign
+Source: libreoffice-dictionaries
+Source-Version: 1:7.2.0-2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: dictionaries-common
+Suggests: libreoffice-writer
+Provides: mythes-thesaurus-en-us, mythes-thesaurus
+
+Package: libpolkit-agent-1-0
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 3288
+Multi-Arch: same
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3), libpolkit-gobject-1-0 (= 0.105-33)
+
+Package: libupower-glib3
+Architecture: amd64
+Version: 0.99.17-1
+APT-ID: 3955
+Multi-Arch: same
+Source: upower
+Source-Version: 0.99.17-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.56)
+Recommends: upower
+
+Package: fonts-lohit-beng-bengali
+Architecture: all
+Version: 2.91.5-2
+APT-ID: 461
+Multi-Arch: foreign
+Source: fonts-lohit-beng-bengali
+Source-Version: 2.91.5-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-lohit-beng-assamese
+Replaces: ttf-bengali-fonts (<= 1:0.5.12)
+Breaks: ttf-bengali-fonts (<= 1:0.5.12)
+
+Package: libreoffice-calc
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72548
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-base-core (= 1:7.3.6-0ubuntu0.22.04.1), libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), lp-solve (>= 5.5.0.13-5+b1), ucf (>= 0.8), libc6 (>= 2.32), libetonyek-0.1-1, libgcc-s1 (>= 3.0), libicu70 (>= 70.1-1~), libmwaw-0.3-3, libodfgen-0.1-1, liborcus-0.17-0, liborcus-parser-0.17-0, librevenge-0.0-0, libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 4.0.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 3.6.0~beta), libwps-0.4-4, libxml2 (>= 2.8), uno-libs-private
+Suggests: ocl-icd-libopencl1 | mesa-opencl-icd | beignet-opencl-icd
+Replaces: libreoffice-common (<< 1:6.4.2~rc1~)
+Breaks: libreoffice-common (<< 1:6.4.2~rc1~)
+
+Package: libgomp1
+Architecture: amd64
+Version: 12.1.0-2ubuntu1~22.04
+APT-ID: 72400
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12.1.0-2ubuntu1~22.04
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-12-base (= 12.1.0-2ubuntu1~22.04), libc6 (>= 2.34)
+Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+
+Package: libtimedate-perl
+Architecture: all
+Version: 2.3300-2
+APT-ID: 3858
+Multi-Arch: foreign
+Source: libtimedate-perl
+Source-Version: 2.3300-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libhtml-tagset-perl
+Architecture: all
+Version: 3.20-4
+APT-ID: 2594
+Multi-Arch: foreign
+Source: libhtml-tagset-perl
+Source-Version: 3.20-4
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: networkd-dispatcher
+Architecture: all
+Version: 2.1-2ubuntu0.22.04.2
+APT-ID: 74213
+Source: networkd-dispatcher
+Source-Version: 2.1-2ubuntu0.22.04.2
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, gir1.2-glib-2.0, python3-dbus, python3-gi, python3:any
+Suggests: iw | wireless-tools
+
+Package: libecal-2.0-1
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72321
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcamel-1.2-63 (>= 3.24.1), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libglib2.0-0 (>= 2.41.1), libical3 (>= 3.0.7)
+Conflicts: almanah (<< 0.11.1-1+b9), bijiben (<< 3.26.0-0.1+b1), evolution (<< 3.26.3), evolution-data-server (<< 3.26.3), evolution-data-server-tests (<< 3.26.3), evolution-ews (<< 3.26.3), evolution-plugin-pstimport (<< 3.26.3), evolution-plugins (<< 3.26.3), gnome-calendar (<< 3.26.2-3), gnome-panel (<< 3.26.0-1+b1), gnome-shell (<< 3.26.2-1+b1), gnome-todo (<< 3.26.2-2), libabiword-3.0 (<< 3.0.2-5), libedata-cal-2.0-1 (<< 3.26.3), libevolution (<< 3.26.3), libjana-ecal0 (<< 0.0.0+git20091215.9ec1da8a-4+b1), libjana-test (<< 0.0.0+git20091215.9ec1da8a-4+b1), syncevolution-libs-gnome (<< 1.5.2-2+b2)
+
+Package: initramfs-tools-core
+Architecture: all
+Version: 0.140ubuntu13
+APT-ID: 1127
+Multi-Arch: foreign
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: busybox-initramfs (>= 1:1.30.1-4ubuntu5~), initramfs-tools-bin (= 0.140ubuntu13), klibc-utils (>= 2.0.4-8~), cpio (>= 2.12), zstd, kmod, udev, coreutils (>= 8.24), logsave | e2fsprogs (<< 1.45.3-1~)
+Suggests: bash-completion
+Replaces: initramfs-tools (<< 0.121~)
+Breaks: busybox-initramfs (<< 1:1.30.1-4ubuntu5~), initramfs-tools (<< 0.121~)
+
+Package: liblirc-client0
+Architecture: amd64
+Version: 0.10.1-6.3ubuntu1
+APT-ID: 2815
+Multi-Arch: same
+Source: lirc
+Source-Version: 0.10.1-6.3ubuntu1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: lirc
+Replaces: liblircclient0 (<= 0.9.4~pre1)
+Breaks: inputlirc (<< 19), kradio (<< 4), liblircclient0 (<= 0.9.4~pre1)
+
+Package: libieee1284-3
+Architecture: amd64
+Version: 0.2.11-14build2
+APT-ID: 2638
+Multi-Arch: same
+Source: libieee1284
+Source-Version: 0.2.11-14build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libpulse0
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 3327
+Multi-Arch: same
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libapparmor1 (>= 2.7.0~beta1+bzr1772), libasyncns0 (>= 0.3), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libsndfile1 (>= 1.0.20), libsystemd0, libx11-6, libx11-xcb1 (>= 2:1.7.2), libxcb1
+Suggests: pulseaudio
+
+Package: libwebpmux3
+Architecture: amd64
+Version: 1.2.2-2
+APT-ID: 4058
+Multi-Arch: same
+Source: libwebp
+Source-Version: 1.2.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libwebp7
+
+Package: libpcaudio0
+Architecture: amd64
+Version: 1.1-6build2
+APT-ID: 3215
+Multi-Arch: same
+Source: pcaudiolib
+Source-Version: 1.1-6build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.16), libc6 (>= 2.4), libpulse0 (>= 0.99.1)
+
+Package: libsasl2-modules-gssapi-mit
+Architecture: amd64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3639
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsasl2-modules (= 2.1.27+dfsg2-3ubuntu1), libc6 (>= 2.14), libgssapi-krb5-2 (>= 1.17), libssl3 (>= 3.0.0~~alpha1)
+Conflicts: libsasl2-modules-gssapi-heimdal
+
+Package: speech-dispatcher-audio-plugins
+Architecture: amd64
+Version: 0.11.1-1ubuntu1
+APT-ID: 79615
+Multi-Arch: same
+Source: speech-dispatcher
+Source-Version: 0.11.1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libao4 (>= 1.1.0), libasound2 (>= 1.0.18), libc6 (>= 2.8), libglib2.0-0 (>= 2.36), libpulse0 (>= 0.99.1)
+
+Package: mokutil
+Architecture: amd64
+Version: 0.4.0-1ubuntu2
+APT-ID: 4657
+Source: mokutil
+Source-Version: 0.4.0-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libefivar1 (>= 37), libssl3 (>= 3.0.0~~alpha1)
+
+Package: fonts-tlwg-mono
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 525
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-mono-ttf | fonts-tlwg-mono-otf
+
+Package: pinentry-gnome3
+Architecture: amd64
+Version: 1.1.1-1build2
+APT-ID: 4911
+Multi-Arch: foreign
+Source: pinentry
+Source-Version: 1.1.1-1build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcr, libassuan0 (>= 2.1.0), libc6 (>= 2.34), libgcr-base-3-1 (>= 3.8.0), libglib2.0-0 (>= 2.26.0), libgpg-error0 (>= 1.16), libncursesw6 (>= 6), libsecret-1-0 (>= 0.7), libtinfo6 (>= 6)
+Suggests: pinentry-doc
+Recommends: dbus-user-session
+Enhances: gnupg-agent
+Provides: pinentry-x11, pinentry
+
+Package: pcmciautils
+Architecture: amd64
+Version: 018-13build1
+APT-ID: 4862
+Source: pcmciautils
+Source-Version: 018-13build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: wireless-tools
+Recommends: udev
+
+Package: libsmartcols1
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 3685
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: cups-filters
+Architecture: amd64
+Version: 1.28.15-0ubuntu1
+APT-ID: 253
+Source: cups-filters
+Source-Version: 1.28.15-0ubuntu1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bc, cups-filters-core-drivers (>= 1.28.15-0ubuntu1), ghostscript, poppler-utils, libc6 (>= 2.34), libcups2 (>= 2.3~b6), libcupsfilters1 (>= 1.22.2), libfontconfig1 (>= 2.12.6), libfontembed1 (>= 1.0.31), libgcc-s1 (>= 3.3.1), libqpdf28 (>> 10.6~), libstdc++6 (>= 11)
+Suggests: antiword, docx2txt, foomatic-db-compressed-ppds | foomatic-db, imagemagick, lynx
+Recommends: colord, liblouisutdml-bin | liblouis-bin
+Conflicts: foomatic-filters, foomatic-filters-beh, ghostscript-cups
+Replaces: foomatic-filters, foomatic-filters-beh, ghostscript-cups
+Provides: ghostscript-cups, foomatic-filters-beh, foomatic-filters
+
+Package: fonts-smc-dyuthi
+Architecture: all
+Version: 3.0.2-2
+APT-ID: 501
+Multi-Arch: foreign
+Source: fonts-smc-dyuthi
+Source-Version: 3.0.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+Breaks: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+
+Package: libedataserver-1.2-26
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72330
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcamel-1.2-63 (>= 3.39.3), libgcc-s1 (>= 3.3.1), libgdata22 (>= 0.15.0), libglib2.0-0 (>= 2.45.6), libicu70 (>= 70.1-1~), libjson-glib-1.0-0 (>= 1.5.2), libsecret-1-0 (>= 0.7), libsoup2.4-1 (>= 2.58.2), libstdc++6 (>= 5.2), libxml2 (>= 2.9.0), evolution-data-server-common (>= 3.44)
+
+Package: debconf-i18n
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 278
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (= 1.5.79ubuntu1), liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+
+Package: console-setup
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 211
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: console-setup-linux | console-setup-freebsd | hurd, xkb-data (>= 0.9), keyboard-configuration (= 1.205ubuntu3)
+Pre-Depends: debconf (>= 1.5.34)
+Suggests: lsb-base (>= 3.0-6), locales
+Conflicts: console-setup-mini
+Breaks: lsb (<< 2.0-6), lsb-base (<< 3.0-6), lsb-core (<< 2.0-6)
+
+Package: printer-driver-m2300w
+Architecture: amd64
+Version: 0.51-15build1
+APT-ID: 4971
+Source: m2300w
+Source-Version: 0.51-15build1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-filters | foomatic-filters, python3:any, xz-utils, libc6 (>= 2.34)
+Suggests: psutils
+Recommends: cups-ppdc
+Replaces: m2300w (<< 0.51-5~), m2300w-ppds
+Breaks: m2300w (<< 0.51-5~), m2300w-ppds
+
+Package: libgpgmepp6
+Architecture: amd64
+Version: 1.16.0-1.2ubuntu4
+APT-ID: 2475
+Multi-Arch: same
+Source: gpgme1.0
+Source-Version: 1.16.0-1.2ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libgpgme11 (>= 1.15.0), libstdc++6 (>= 11)
+
+Package: zstd
+Architecture: amd64
+Version: 1.4.8+dfsg-3build1
+APT-ID: 6087
+Source: libzstd
+Source-Version: 1.4.8+dfsg-3build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), liblz4-1 (>= 0.0~r127), liblzma5 (>= 5.1.1alpha+20120614), libstdc++6 (>= 12), zlib1g (>= 1:1.1.4)
+
+Package: libpam-runtime
+Architecture: all
+Version: 1.4.0-11ubuntu2
+APT-ID: 3184
+Multi-Arch: foreign
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, debconf (>= 1.5.19) | cdebconf, libpam-modules (>= 1.0.1-6)
+Conflicts: libpam0g-util
+Replaces: libpam0g-dev, libpam0g-util
+
+Package: udev
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79621
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libkmod2 (>= 5~), libselinux1 (>= 3.1~), adduser, libudev1 (= 249.11-0ubuntu3.4), util-linux (>= 2.27.1)
+Conflicts: hal
+Breaks: systemd (<< 249.11-0ubuntu3.4)
+
+Package: systemd-oomd
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79618
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4), adduser
+
+Package: libvpx7
+Architecture: amd64
+Version: 1.11.0-2ubuntu2
+APT-ID: 4028
+Multi-Arch: same
+Source: libvpx
+Source-Version: 1.11.0-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: coreutils
+Architecture: amd64
+Version: 8.32-4.1ubuntu1
+APT-ID: 214
+Essential: yes
+Multi-Arch: foreign
+Source: coreutils
+Source-Version: 8.32-4.1ubuntu1
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libattr1 (>= 1:2.4.44), libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libselinux1 (>= 3.1~)
+
+Package: libxxf86vm1
+Architecture: amd64
+Version: 1:1.1.4-1build3
+APT-ID: 4287
+Multi-Arch: same
+Source: libxxf86vm
+Source-Version: 1:1.1.4-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: libexttextcat-2.0-0
+Architecture: amd64
+Version: 3.4.5-1build2
+APT-ID: 2190
+Multi-Arch: same
+Source: libexttextcat
+Source-Version: 3.4.5-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libexttextcat-data (= 3.4.5-1build2)
+
+Package: evolution-data-server
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 71797
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcamel-1.2-63 (= 3.44.4-0ubuntu1), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.2), libdb5.3, libebackend-1.2-10 (= 3.44.4-0ubuntu1), libebook-1.2-20 (>= 3.17), libebook-contacts-1.2-3 (>= 3.43.2), libecal-2.0-1 (>= 3.39.2), libedata-book-1.2-26 (>= 3.43.2), libedata-cal-2.0-1 (>= 3.26.2), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libedataserverui-1.2-3 (= 3.44.4-0ubuntu1), libgcr-base-3-1 (>= 3.8.0), libgcr-ui-3-1 (>= 3.8.0), libgdata22 (>= 0.17.10), libglib2.0-0 (>= 2.70.0), libgoa-1.0-0b (>= 3.11.90), libgtk-3-0 (>= 3.10), libgweather-3-16 (>= 40.0), libical3 (>= 3.0.7), libldap-2.5-0 (>= 2.5.4), libpango-1.0-0 (>= 1.14.0), libsecret-1-0 (>= 0.7), libsoup2.4-1 (>= 2.42), libxml2 (>= 2.9.0), evolution-data-server-common (>= 3.44.4-0ubuntu1), gnome-keyring
+Suggests: evolution
+Replaces: evolution (<< 3.29.90), libevolution (<< 3.29.90)
+Breaks: evolution (<< 3.29.90), libevolution (<< 3.29.90)
+
+Package: libgdbm-compat4
+Architecture: amd64
+Version: 1.23-1
+APT-ID: 2330
+Multi-Arch: same
+Source: gdbm
+Source-Version: 1.23-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgdbm6 (>= 1.16)
+
+Package: libpam-gnome-keyring
+Architecture: amd64
+Version: 40.0-3ubuntu3
+APT-ID: 72496
+Multi-Arch: same
+Source: gnome-keyring
+Source-Version: 40.0-3ubuntu3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libpam-runtime (>= 1.0.1-6)
+Recommends: gnome-keyring
+
+Package: linux-image-5.15.0-48-generic
+Architecture: amd64
+Version: 5.15.0-48.54
+APT-ID: 73442
+Source: linux-signed
+Source-Version: 5.15.0-48.54
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.15.0-48-generic
+Suggests: fdutils, linux-doc | linux-source-5.15.0, linux-tools, linux-headers-5.15.0-48-generic, linux-modules-extra-5.15.0-48-generic
+Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo, initramfs-tools | linux-initramfs-tool
+Conflicts: linux-image-unsigned-5.15.0-48-generic
+Provides: zfs-modules, zfs-dkms, virtualbox-guest-modules, v4l2loopback-modules, v4l2loopback-dkms, spl-modules, spl-dkms, redhat-cluster-modules, linux-image, kvm-api-4, ivtv-modules, fuse-module
+
+Package: fonts-thai-tlwg
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 515
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-garuda, fonts-tlwg-kinnari, fonts-tlwg-laksaman, fonts-tlwg-loma, fonts-tlwg-mono, fonts-tlwg-norasi, fonts-tlwg-purisa, fonts-tlwg-sawasdee, fonts-tlwg-typewriter, fonts-tlwg-typist, fonts-tlwg-typo, fonts-tlwg-umpush, fonts-tlwg-waree
+
+Package: idle-python3.10
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 77376
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10, python3-tk, python3.10-tk, libjs-mathjax
+Enhances: python3.10
+
+Package: idle-python3.10
+Architecture: all
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79506
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3.10, python3-tk, python3.10-tk, libjs-mathjax
+Enhances: python3.10
+
+Package: idle-python3.10
+Architecture: all
+Version: 3.10.4-3
+APT-ID: 21728
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3.10, python3-tk, python3.10-tk, libjs-mathjax
+Enhances: python3.10
+
+Package: libsecret-1-0
+Architecture: amd64
+Version: 0.20.5-2
+APT-ID: 3650
+Multi-Arch: same
+Source: libsecret
+Source-Version: 0.20.5-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.59.0), libsecret-common
+Breaks: seahorse (<< 3.10)
+
+Package: python3.10
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74361
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3.10-minimal (= 3.10.6-1~22.04), libpython3.10-stdlib (= 3.10.6-1~22.04), media-types | mime-support
+Suggests: python3.10-venv, python3.10-doc, binutils
+Breaks: python3-all (<< 3.6.5~rc1-1), python3-dev (<< 3.6.5~rc1-1), python3-venv (<< 3.6.5-2)
+
+Package: python3.10
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79407
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: python3.10-minimal (= 3.10.4-3ubuntu0.1), libpython3.10-stdlib (= 3.10.4-3ubuntu0.1), media-types | mime-support
+Suggests: python3.10-venv, python3.10-doc, binutils
+Breaks: python3-all (<< 3.6.5~rc1-1), python3-dev (<< 3.6.5~rc1-1), python3-venv (<< 3.6.5-2)
+
+Package: python3.10
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 5550
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: python3.10-minimal (= 3.10.4-3), libpython3.10-stdlib (= 3.10.4-3), media-types | mime-support
+Suggests: python3.10-venv, python3.10-doc, binutils
+Breaks: python3-all (<< 3.6.5~rc1-1), python3-dev (<< 3.6.5~rc1-1), python3-venv (<< 3.6.5-2)
+
+Package: libltdl7
+Architecture: amd64
+Version: 2.4.6-15build2
+APT-ID: 2850
+Multi-Arch: same
+Source: libtool
+Source-Version: 2.4.6-15build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: python3-colorama
+Architecture: all
+Version: 0.4.4-1
+APT-ID: 5187
+Source: python-colorama
+Source-Version: 0.4.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.6~)
+
+Package: libgsf-1-114
+Architecture: amd64
+Version: 1.14.47-1build2
+APT-ID: 2501
+Multi-Arch: same
+Source: libgsf
+Source-Version: 1.14.47-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgsf-1-common (>= 1.14.47-1build2), libbz2-1.0, libc6 (>= 2.33), libglib2.0-0 (>= 2.53.1), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+
+Package: libpaper1
+Architecture: amd64
+Version: 1.1.28build2
+APT-ID: 3201
+Multi-Arch: same
+Source: libpaper
+Source-Version: 1.1.28build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), debconf (>= 0.5) | debconf-2.0, ucf (>= 0.28), dpkg (>= 1.17.2)
+Recommends: libpaper-utils
+Replaces: libpaperg (<< 1.1.9)
+Provides: libpaperg
+
+Package: libtie-ixhash-perl
+Architecture: all
+Version: 1.23-2.1
+APT-ID: 3849
+Source: libtie-ixhash-perl
+Source-Version: 1.23-2.1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libreoffice-gnome
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72555
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), libc6 (>= 2.32), libgcc-s1 (>= 3.0), libglib2.0-0 (>= 2.38.0), libstdc++6 (>= 5), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 4.0.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 1.4.0), uno-libs-private
+Suggests: libreoffice-evolution, seahorse
+Recommends: libreoffice-style-elementary, libreoffice-style-yaru, libreoffice-gtk3
+Conflicts: libreoffice-gtk3 (<< 1:7.2.0~)
+Replaces: libreoffice-gtk (<< 1:5.0.0~rc2-1), libreoffice-gtk3 (<< 1:7.2.0~)
+Enhances: libreoffice
+Provides: libreoffice-gtk-gnome
+
+Package: fonts-tlwg-waree-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 542
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-waree (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-waree (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-waree (<< 1:0.6.2-2)
+
+Package: libmm-glib0
+Architecture: amd64
+Version: 1.18.6-1
+APT-ID: 2941
+Multi-Arch: same
+Source: modemmanager
+Source-Version: 1.18.6-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.56.0)
+Recommends: modemmanager (>= 1.18.6-1)
+
+Package: evince
+Architecture: amd64
+Version: 42.3-0ubuntu2
+APT-ID: 71795
+Source: evince
+Source-Version: 42.3-0ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: evince-common (>= 42.3-0ubuntu2), gsettings-desktop-schemas, libevdocument3-4 (= 42.3-0ubuntu2), libevview3-3 (= 42.3-0ubuntu2), shared-mime-info, dconf-gsettings-backend | gsettings-backend, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.14.0), libgdk-pixbuf-2.0-0 (>= 2.40), libglib2.0-0 (>= 2.61.2), libgnome-desktop-3-19 (>= 3.17.92), libgtk-3-0 (>= 3.22.0), libhandy-1-0 (>= 1.5.90), libnautilus-extension1a (>= 3.28), libpango-1.0-0 (>= 1.37.5), libpangocairo-1.0-0 (>= 1.14.0), libsecret-1-0 (>= 0.7)
+Suggests: gvfs, nautilus-sendto, poppler-data, unrar
+Recommends: default-dbus-session-bus | dbus-session-bus
+Replaces: libevdocument3-4 (<< 3.29.91-2~)
+Breaks: libevdocument3-4 (<< 3.29.91-2~)
+Enhances: nautilus
+Provides: postscript-viewer, pdf-viewer, djvu-viewer
+
+Package: libxcb-util1
+Architecture: amd64
+Version: 0.4.0-1build2
+APT-ID: 4170
+Multi-Arch: same
+Source: xcb-util
+Source-Version: 0.4.0-1build2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.8), libxcb1
+
+Package: python3-gi
+Architecture: amd64
+Version: 3.42.1-0ubuntu1
+APT-ID: 74321
+Multi-Arch: allowed
+Source: pygobject
+Source-Version: 3.42.1-0ubuntu1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.48.0), python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.14), libffi8 (>= 3.4), libgirepository-1.0-1 (>= 1.62.0-4~), libgirepository-1.0-1-with-libffi8 (>= 1.62.0-4~), libglib2.0-0 (>= 2.56.0)
+
+Package: libsnmp-base
+Architecture: all
+Version: 5.9.1+dfsg-1ubuntu2.2
+APT-ID: 72749
+Multi-Arch: foreign
+Source: net-snmp
+Source-Version: 5.9.1+dfsg-1ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: snmp-mibs-downloader
+Replaces: snmp (<< 5.7.3+dfsg-5)
+Breaks: snmp (<< 5.7.3+dfsg-5)
+
+Package: uno-libs-private
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 74534
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libuno-cppu3 (>= 1.4.0), libuno-sal3 (>= 5.3.0~alpha), libuno-salhelpergcc3-3 (>= 1.4.0)
+Replaces: uno-libs3
+Breaks: uno-libs3
+
+Package: python3-tz
+Architecture: all
+Version: 2022.1-1
+APT-ID: 5516
+Source: python-tz
+Source-Version: 2022.1-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tzdata, python3:any
+
+Package: libgl1-amber-dri
+Architecture: amd64
+Version: 21.3.7-0ubuntu1
+APT-ID: 2376
+Multi-Arch: same
+Source: mesa-amber
+Source-Version: 21.3.7-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm-intel1 (>= 2.4.38), libdrm-nouveau2 (>= 2.4.66), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.38), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.4), libglapi-mesa (>= 21.3.5), libstdc++6 (>= 5.2), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Conflicts: libgl1-mesa-dri (<< 22.0.0~)
+Replaces: libgl1-mesa-dri (<< 22.0.0~)
+Provides: dri-drivers
+
+Package: libreoffice-base-core
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72547
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1) | libreoffice-core-nogui (= 1:7.3.6-0ubuntu0.22.04.1), libc6 (>= 2.32), libgcc-s1 (>= 3.4), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 1.4.0), uno-libs-private
+Suggests: libreoffice-base
+Replaces: libreoffice-base-drivers (<< 1:6.1.1~rc1-2)
+
+Package: hdparm
+Architecture: amd64
+Version: 9.60+ds-1build3
+APT-ID: 955
+Source: hdparm
+Source-Version: 9.60+ds-1build3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), lsb-base
+Recommends: powermgmt-base
+
+Package: gir1.2-gmenu-3.0
+Architecture: amd64
+Version: 3.36.0-1ubuntu3
+APT-ID: 684
+Multi-Arch: same
+Source: gnome-menus
+Source-Version: 3.36.0-1ubuntu3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.10.7-1~), libgnome-menu-3-0 (>= 3.6.0)
+
+Package: libreoffice-pdfimport
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72691
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-common (>= 1:5.4~), libreoffice-core (>= 1:5.4~)
+
+Package: libext2fs2
+Architecture: amd64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 72342
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: e2fslibs (<< 1.43.9-1~)
+Breaks: e2fslibs (<< 1.43.9-1~)
+Provides: e2fslibs (= 1.46.5-2ubuntu1.1)
+
+Package: bind9-host
+Architecture: amd64
+Version: 1:9.18.1-1ubuntu1.2
+APT-ID: 71718
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.2
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bind9-libs (= 1:9.18.1-1ubuntu1.2), libc6 (>= 2.34), libidn2-0 (>= 2.0.0)
+Replaces: bind-host (<< 1:9.13.6~)
+Breaks: bind-host (<< 1:9.13.6~)
+Provides: host
+
+Package: libffi8
+Architecture: amd64
+Version: 3.4.2-4
+APT-ID: 2206
+Multi-Arch: same
+Source: libffi
+Source-Version: 3.4.2-4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27)
+Replaces: libffi8ubuntu1 (<< 3.4.2-1)
+Breaks: libffi8ubuntu1 (<< 3.4.2-1)
+Provides: libffi8ubuntu1 (= 3.4.2-4)
+
+Package: pciutils
+Architecture: amd64
+Version: 1:3.7.0-6
+APT-ID: 4861
+Multi-Arch: foreign
+Source: pciutils
+Source-Version: 1:3.7.0-6
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libkmod2 (>= 5~), libpci3 (= 1:3.7.0-6)
+Suggests: bzip2, wget | curl | lynx-cur
+
+Package: gnome-user-docs
+Architecture: all
+Version: 41.5-1ubuntu2
+APT-ID: 821
+Source: gnome-user-docs
+Source-Version: 41.5-1ubuntu2
+Priority: optional
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ubuntu-docs, yelp
+
+Package: alsa-base
+Architecture: all
+Version: 1.0.25+dfsg-0ubuntu7
+APT-ID: 14
+Multi-Arch: foreign
+Source: alsa-driver
+Source-Version: 1.0.25+dfsg-0ubuntu7
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kmod (>= 17-1), linux-sound-base, udev
+Suggests: apmd (>= 3.0.2-1), alsa-oss, oss-compat
+Recommends: alsa-utils
+Provides: alsa
+
+Package: libnftnl11
+Architecture: amd64
+Version: 1.2.1-1build1
+APT-ID: 3049
+Multi-Arch: same
+Source: libnftnl
+Source-Version: 1.2.1-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libmnl0 (>= 1.0.3-4~)
+
+Package: libgssapi-krb5-2
+Architecture: amd64
+Version: 1.19.2-2
+APT-ID: 2511
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcom-err2 (>= 1.43.9), libk5crypto3 (>= 1.16), libkrb5-3 (= 1.19.2-2), libkrb5support0 (>= 1.15~beta1)
+Suggests: krb5-doc, krb5-user
+Breaks: moonshot-gss-eap (<= 1.0)
+
+Package: libsoup2.4-1
+Architecture: amd64
+Version: 2.74.2-3
+APT-ID: 3708
+Multi-Arch: same
+Source: libsoup2.4
+Source-Version: 2.74.2-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: glib-networking (>= 2.32.0), libsoup2.4-common, libbrotli1 (>= 0.6.0), libc6 (>= 2.14), libglib2.0-0 (>= 2.61.2), libgssapi-krb5-2 (>= 1.17), libpsl5 (>= 0.20), libsqlite3-0 (>= 3.5.9), libxml2 (>= 2.7.4), zlib1g (>= 1:1.2.0)
+
+Package: netbase
+Architecture: all
+Version: 6.3
+APT-ID: 4739
+Multi-Arch: foreign
+Source: netbase
+Source-Version: 6.3
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ebtables (<< 2.0.11-2)
+Breaks: ebtables (<< 2.0.11-2)
+
+Package: spice-vdagent
+Architecture: amd64
+Version: 0.22.1-1
+APT-ID: 5689
+Source: spice-vdagent
+Source-Version: 0.22.1-1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.22), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libdrm2 (>= 2.4.3), libglib2.0-0 (>= 2.67.3), libgtk-3-0 (>= 3.22), libpciaccess0, libsystemd0, libx11-6, libxinerama1 (>= 2:1.1.4), libxrandr2 (>= 2:1.2.99.2)
+Pre-Depends: init-system-helpers (>= 1.54~)
+
+Package: libwacom9
+Architecture: amd64
+Version: 2.2.0-1
+APT-ID: 4038
+Multi-Arch: same
+Source: libwacom
+Source-Version: 2.2.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.8), libglib2.0-0 (>= 2.67.3), libgudev-1.0-0 (>= 146), libwacom-common (= 2.2.0-1)
+Recommends: libwacom-bin (= 2.2.0-1)
+
+Package: readline-common
+Architecture: all
+Version: 8.1.2-1
+APT-ID: 5583
+Multi-Arch: foreign
+Source: readline
+Source-Version: 8.1.2-1
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dpkg (>= 1.15.4) | install-info
+Suggests: readline-doc
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+
+Package: libmtp-common
+Architecture: all
+Version: 1.1.19-1build1
+APT-ID: 2977
+Multi-Arch: foreign
+Source: libmtp
+Source-Version: 1.1.19-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libnet-ssleay-perl
+Architecture: amd64
+Version: 1.92-1build2
+APT-ID: 3023
+Multi-Arch: same
+Source: libnet-ssleay-perl
+Source-Version: 1.92-1build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perl-openssl-abi-3, perlapi-5.34.0, libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+
+Package: shotwell-common
+Architecture: all
+Version: 0.30.14-1ubuntu6
+APT-ID: 74400
+Source: shotwell
+Source-Version: 0.30.14-1ubuntu6
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Recommends: shotwell
+Breaks: shotwell (<< 0.26.2-1)
+
+Package: libnghttp2-14
+Architecture: amd64
+Version: 1.43.0-1build3
+APT-ID: 3050
+Multi-Arch: same
+Source: nghttp2
+Source-Version: 1.43.0-1build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libcurl3-gnutls
+Architecture: amd64
+Version: 7.81.0-1ubuntu1.4
+APT-ID: 72304
+Multi-Arch: same
+Source: curl
+Source-Version: 7.81.0-1ubuntu1.4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.34), libgnutls30 (>= 3.7.2), libgssapi-krb5-2 (>= 1.17), libidn2-0 (>= 0.6), libldap-2.5-0 (>= 2.5.4), libnettle8, libnghttp2-14 (>= 1.12.0), libpsl5 (>= 0.16.0), librtmp1 (>= 2.4+20131018.git79459a2-3~), libssh-4 (>= 0.9.0), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+
+Package: fonts-smc-meera
+Architecture: all
+Version: 7.0.3-1
+APT-ID: 506
+Multi-Arch: foreign
+Source: fonts-smc-meera
+Source-Version: 7.0.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~)
+Breaks: fonts-smc (<< 6.1~)
+
+Package: network-manager-openvpn
+Architecture: amd64
+Version: 1.8.18-1
+APT-ID: 4747
+Source: network-manager-openvpn
+Source-Version: 1.8.18-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libnm0 (>= 1.7.0), network-manager, openvpn, adduser
+
+Package: libgupnp-dlna-2.0-4
+Architecture: amd64
+Version: 0.12.0-3
+APT-ID: 2557
+Source: gupnp-dlna
+Source-Version: 0.12.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), libxml2 (>= 2.7.4)
+Replaces: libgupnp-dlna-2.0-3 (<< 0.12)
+Breaks: libgupnp-dlna-2.0-3 (<< 0.12)
+
+Package: gnome-bluetooth-common
+Architecture: all
+Version: 3.34.5-8
+APT-ID: 780
+Multi-Arch: foreign
+Source: gnome-bluetooth
+Source-Version: 3.34.5-8
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: gnome-bluetooth (<< 3.34.5-6~)
+Breaks: gnome-bluetooth (<< 3.34.5-6~)
+
+Package: gnome-power-manager
+Architecture: amd64
+Version: 3.32.0-2build2
+APT-ID: 799
+Source: gnome-power-manager
+Source-Version: 3.32.0-2build2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libglib2.0-0 (>= 2.45.8), libgtk-3-0 (>= 3.4.0), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0), libupower-glib3 (>= 0.99.8), dconf-gsettings-backend | gsettings-backend, default-dbus-session-bus | dbus-session-bus, gnome-settings-daemon-common, upower (>= 0.99)
+
+Package: libatk1.0-data
+Architecture: all
+Version: 2.36.0-3build1
+APT-ID: 1657
+Multi-Arch: foreign
+Source: atk1.0
+Source-Version: 2.36.0-3build1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: openssh-client
+Architecture: amd64
+Version: 1:8.9p1-3
+APT-ID: 4817
+Multi-Arch: foreign
+Source: openssh
+Source-Version: 1:8.9p1-3
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser (>= 3.10), dpkg (>= 1.7.0), passwd, libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libfido2-1 (>= 1.8.0), libgssapi-krb5-2 (>= 1.17), libselinux1 (>= 3.1~), libssl3 (>= 3.0.1), zlib1g (>= 1:1.1.4)
+Suggests: keychain, libpam-ssh, monkeysphere, ssh-askpass
+Recommends: xauth
+Conflicts: sftp
+Replaces: openssh-sk-helper, ssh, ssh-krb5
+Breaks: openssh-sk-helper
+Provides: ssh-client, rsh-client
+
+Package: fonts-tlwg-kinnari
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 519
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-kinnari-ttf | fonts-tlwg-kinnari-otf
+
+Package: libxres1
+Architecture: amd64
+Version: 2:1.2.1-1
+APT-ID: 4263
+Multi-Arch: same
+Source: libxres
+Source-Version: 2:1.2.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: libunity-scopes-json-def-desktop
+Architecture: all
+Version: 7.1.4+19.04.20190319-6build1
+APT-ID: 3937
+Multi-Arch: foreign
+Source: libunity
+Source-Version: 7.1.4+19.04.20190319-6build1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: libunity-common (<< 7.0.7), unity-scopes-json-def
+Replaces: libunity-common (<< 7.0.7)
+Provides: unity-scopes-json-def, libunity-common
+
+Package: iptables
+Architecture: amd64
+Version: 1.8.7-1ubuntu5
+APT-ID: 1137
+Multi-Arch: foreign
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libip4tc2 (= 1.8.7-1ubuntu5), libip6tc2 (= 1.8.7-1ubuntu5), libxtables12 (= 1.8.7-1ubuntu5), netbase (>= 6.0), libc6 (>= 2.34), libmnl0 (>= 1.0.3-4~), libnetfilter-conntrack3 (>= 1.0.6), libnfnetlink0, libnftnl11 (>= 1.1.5)
+Suggests: firewalld, kmod, nftables
+Replaces: iptables-nftables-compat (<< 1.6.2~)
+Breaks: iptables-nftables-compat (<< 1.6.2~)
+
+Package: nautilus-extension-gnome-terminal
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 4727
+Source: gnome-terminal
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-terminal (= 3.44.0-1ubuntu1), libc6 (>= 2.4), libgcc-s1 (>= 3.0), libglib2.0-0 (>= 2.52.0), libgtk-3-0 (>= 3.22.27), libnautilus-extension1a (>= 3.28.0), libstdc++6 (>= 4.1.1)
+Replaces: brasero (<< 3.27.92-2~)
+Breaks: gnome-terminal (<< 3.27.92-2~)
+Enhances: nautilus
+
+Package: libjbig2dec0
+Architecture: amd64
+Version: 0.19-3build2
+APT-ID: 2733
+Multi-Arch: same
+Source: jbig2dec
+Source-Version: 0.19-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: dosfstools
+Architecture: amd64
+Version: 4.2-1build3
+APT-ID: 343
+Source: dosfstools
+Source-Version: 4.2-1build3
+Priority: standard
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: fonts-teluguvijayam
+Architecture: all
+Version: 2.1-1
+APT-ID: 514
+Multi-Arch: foreign
+Source: fonts-teluguvijayam
+Source-Version: 2.1-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libgdk-pixbuf2.0-bin
+Architecture: amd64
+Version: 2.42.8+dfsg-1ubuntu0.1
+APT-ID: 72371
+Multi-Arch: foreign
+Source: gdk-pixbuf
+Source-Version: 2.42.8+dfsg-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.35.4), libglib2.0-0 (>= 2.56.0)
+Replaces: libgdk-pixbuf2.0-dev (<< 2.36.12-2~)
+Breaks: libgdk-pixbuf2.0-dev (<< 2.36.12-2~)
+
+Package: iputils-ping
+Architecture: amd64
+Version: 3:20211215-1
+APT-ID: 1140
+Multi-Arch: foreign
+Source: iputils
+Source-Version: 3:20211215-1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcap2-bin, libc6 (>= 2.34), libcap2 (>= 1:2.10), libidn2-0 (>= 0.6)
+Provides: ping
+
+Package: libglx-mesa0
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72383
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm2 (>= 2.4.75), libexpat1 (>= 2.0.1), libglapi-mesa (= 22.0.5-0ubuntu0.1), libstdc++6 (>= 4.1.1), libx11-6 (>= 2:1.4.99.1), libx11-xcb1 (>= 2:1.7.5), libxcb-dri2-0 (>= 1.8), libxcb-dri3-0 (>= 1.13), libxcb-glx0 (>= 1.8), libxcb-present0, libxcb-shm0, libxcb-sync1, libxcb-xfixes0, libxcb1 (>= 1.9.2), libxext6, libxfixes3, libxshmfence1, libxxf86vm1, libgl1-mesa-dri
+Breaks: glx-diversions (<< 0.8.4~), libopengl-perl (<< 0.6704+dfsg-2)
+Provides: libglx-vendor
+
+Package: libtwolame0
+Architecture: amd64
+Version: 0.4.0-2build2
+APT-ID: 3907
+Multi-Arch: same
+Source: twolame
+Source-Version: 0.4.0-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: fonts-tlwg-sawasdee
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 531
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-sawasdee-ttf | fonts-tlwg-sawasdee-otf
+
+Package: libidn12
+Architecture: amd64
+Version: 1.38-4build1
+APT-ID: 2632
+Multi-Arch: same
+Source: libidn
+Source-Version: 1.38-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: fonts-tlwg-sawasdee-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 532
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-sawasdee (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-sawasdee (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-sawasdee (<< 1:0.6.2-2)
+
+Package: libgdata-common
+Architecture: all
+Version: 0.18.1-2build1
+APT-ID: 2325
+Multi-Arch: foreign
+Source: libgdata
+Source-Version: 0.18.1-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-distupgrade
+Architecture: all
+Version: 1:22.04.14
+APT-ID: 74314
+Source: ubuntu-release-upgrader
+Source-Version: 1:22.04.14
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-update-manager (>= 1:19.04.2~), python3-apt (>= 0.8.5~), python3-dbus, python3-distro-info, python3-yaml, gpgv, lsb-release, sensible-utils, procps
+Replaces: python3-update-manager (<< 1:0.165)
+Breaks: python3-update-manager (<< 1:0.165)
+
+Package: libgcr-base-3-1
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 2315
+Multi-Arch: same
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgck-1-0 (= 3.40.0-4), libc6 (>= 2.28), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.59.0), libp11-kit0 (>= 0.23.18.1)
+Replaces: libgcr-3-1 (<< 3.8.2-2)
+Breaks: libgcr-3-1 (<< 3.8.2-2)
+
+Package: libaudit-common
+Architecture: all
+Version: 1:3.0.7-1build1
+APT-ID: 1677
+Multi-Arch: foreign
+Source: audit
+Source-Version: 1:3.0.7-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-smc-suruma
+Architecture: all
+Version: 3.2.3-1
+APT-ID: 509
+Multi-Arch: foreign
+Source: fonts-smc-suruma
+Source-Version: 3.2.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+Breaks: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+
+Package: gnome-sudoku
+Architecture: amd64
+Version: 1:42.0-1
+APT-ID: 813
+Source: gnome-sudoku
+Source-Version: 1:42.0-1
+Priority: optional
+Section: games
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.43.92), libgtk-3-0 (>= 3.24), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.22.0), libqqwing2v5 (>= 1.3.4), libstdc++6 (>= 4.4), dconf-gsettings-backend | gsettings-backend
+Recommends: yelp
+
+Package: sane-utils
+Architecture: amd64
+Version: 1.1.1-5
+APT-ID: 5637
+Multi-Arch: foreign
+Source: sane-backends
+Source-Version: 1.1.1-5
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, lsb-base (>= 3.0-6), update-inetd, debconf (>= 0.5) | debconf-2.0, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libieee1284-3 (>= 0.2.11), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libsane1 (>= 1.0.27), libsystemd0, libusb-1.0-0 (>= 2:1.0.22), libxml2 (>= 2.7.4)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: avahi-daemon, unpaper
+Breaks: libsane-common (<< 1.1.1-3~)
+
+Package: libxklavier16
+Architecture: amd64
+Version: 5.4-4build2
+APT-ID: 4223
+Multi-Arch: same
+Source: libxklavier
+Source-Version: 5.4-4build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.37.3), libx11-6, libxi6 (>= 2:1.1.2), libxkbfile1 (>= 1:1.1.0), libxml2 (>= 2.7.4), xkb-data (>= 0.8), x11-xkb-utils
+Suggests: iso-codes
+
+Package: libjack-jackd2-0
+Architecture: amd64
+Version: 1.9.20~dfsg-1
+APT-ID: 2722
+Multi-Arch: same
+Source: jackd2
+Source-Version: 1.9.20~dfsg-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdb5.3, libgcc-s1 (>= 3.0), libsamplerate0 (>= 0.1.7), libstdc++6 (>= 11)
+Suggests: jackd2 (= 1.9.20~dfsg-1)
+Conflicts: jackd2 (>> 1.9.20~dfsg-1), jackd2 (<< 1.9.20~dfsg-1), libjack-0.116, libjack-0.125, libjack0
+Replaces: libjack-0.116, libjack-0.125
+Provides: libjack-0.125, libjack-0.116
+
+Package: libauthen-sasl-perl
+Architecture: all
+Version: 2.1600-1.1
+APT-ID: 1682
+Source: libauthen-sasl-perl
+Source-Version: 2.1600-1.1
+Priority: extra
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+Suggests: libdigest-hmac-perl, libgssapi-perl
+
+Package: liblcms2-utils
+Architecture: amd64
+Version: 2.12~rc1-2build2
+APT-ID: 2806
+Multi-Arch: foreign
+Source: lcms2
+Source-Version: 2.12~rc1-2build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libtiff5 (>= 4.0.3)
+
+Package: python3-brlapi
+Architecture: amd64
+Version: 6.4-4ubuntu3
+APT-ID: 74305
+Multi-Arch: same
+Source: brltty
+Source-Version: 6.4-4ubuntu3
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrlapi0.8 (>= 6.4), libc6 (>= 2.34), python3 (<< 3.11), python3 (>= 3.10~)
+
+Package: libatkmm-1.6-1v5
+Architecture: amd64
+Version: 2.28.2-1build1
+APT-ID: 1660
+Multi-Arch: same
+Source: atkmm1.6
+Source-Version: 2.28.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 2.12.0), libc6 (>= 2.4), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.33.14), libglibmm-2.4-1v5 (>= 2.66.2), libsigc++-2.0-0v5 (>= 2.2.0), libstdc++6 (>= 4.1.1)
+Conflicts: libatkmm-1.6-1
+Replaces: libatkmm-1.6-1
+
+Package: libnl-3-200
+Architecture: amd64
+Version: 3.5.0-0.1
+APT-ID: 3059
+Multi-Arch: same
+Source: libnl3
+Source-Version: 3.5.0-0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: fonts-orya-extra
+Architecture: all
+Version: 2.0-6
+APT-ID: 485
+Multi-Arch: foreign
+Source: fonts-orya-extra
+Source-Version: 2.0-6
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-oriya-fonts
+Breaks: ttf-oriya-fonts (<< 2:1.0)
+
+Package: libgphoto2-l10n
+Architecture: all
+Version: 2.5.27-1build2
+APT-ID: 2479
+Multi-Arch: foreign
+Source: libgphoto2
+Source-Version: 2.5.27-1build2
+Priority: optional
+Section: localization
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libdatrie1
+Architecture: amd64
+Version: 0.2.13-2
+APT-ID: 1993
+Multi-Arch: same
+Source: libdatrie
+Source-Version: 0.2.13-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libthai0
+Architecture: amd64
+Version: 0.1.29-1build1
+APT-ID: 3843
+Multi-Arch: same
+Source: libthai
+Source-Version: 0.1.29-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libthai-data (>= 0.1.10), libc6 (>= 2.14), libdatrie1 (>= 0.2.0)
+Enhances: libqtcore4, libqtgui4
+
+Package: language-pack-en-base
+Architecture: all
+Version: 1:22.04+20220721
+APT-ID: 71953
+Source: language-pack-en-base
+Source-Version: 1:22.04+20220721
+Priority: optional
+Section: translations
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: locales (>= 2.3.6), language-pack-en (>= 1:22.04+20220721)
+Pre-Depends: dpkg (>= 1.16.1)
+Conflicts: language-pack-en (<< 1:22.04+20220721)
+Replaces: language-pack-en (<< 1:22.04+20220721), language-pack-en-base (<< 1:22.04+20220721), language-pack-gnome-en (<< 1:22.04+20220721), language-pack-gnome-en-base (<< 1:22.04+20220721), language-pack-kde-en (<< 1:22.04+20220721), language-pack-kde-en-base (<< 1:22.04+20220721)
+
+Package: update-manager
+Architecture: all
+Version: 1:22.04.9
+APT-ID: 5915
+Source: update-manager
+Source-Version: 1:22.04.9
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), dconf-gsettings-backend | gsettings-backend, update-manager-core (= 1:22.04.9), libgtk3-perl, python3-aptdaemon.gtk3widgets (>= 1.1.1+bzr982-0ubuntu13) | synaptic, policykit-1, python3-dbus, python3-gi (>= 3.8), python3-yaml, gir1.2-gtk-3.0, gir1.2-handy-1 (>= 1.5.90), gir1.2-snapd-1, ubuntu-release-upgrader-gtk, update-notifier, gnome-shell | policykit-1-gnome | polkit-kde-agent-1 | lxpolkit | lxqt-policykit | mate-polkit | polkit-1-auth-agent
+Suggests: gir1.2-dbusmenu-glib-0.4, gir1.2-unity-5.0
+Recommends: software-properties-gtk (>= 0.71.2), python3-launchpadlib
+Breaks: update-notifier (<< 3.177)
+
+Package: libgnome-games-support-common
+Architecture: all
+Version: 1.8.2-1build1
+APT-ID: 2434
+Multi-Arch: foreign
+Source: libgnome-games-support
+Source-Version: 1.8.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gnome-font-viewer
+Architecture: amd64
+Version: 41.0-2
+APT-ID: 790
+Source: gnome-font-viewer
+Source-Version: 41.0-2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.14.0), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.56), libgnome-desktop-3-19 (>= 3.17.92), libgtk-3-0 (>= 3.24.1), libhandy-1-0 (>= 1.5.0), libharfbuzz0b (>= 0.9.9), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.22.0)
+
+Package: acl
+Architecture: amd64
+Version: 2.3.1-1
+APT-ID: 2
+Multi-Arch: foreign
+Source: acl
+Source-Version: 2.3.1-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (= 2.3.1-1), libc6 (>= 2.34)
+
+Package: libclutter-1.0-common
+Architecture: all
+Version: 1.26.4+dfsg-4build1
+APT-ID: 1900
+Multi-Arch: foreign
+Source: clutter-1.0
+Source-Version: 1.26.4+dfsg-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libnl-genl-3-200
+Architecture: amd64
+Version: 3.5.0-0.1
+APT-ID: 3064
+Multi-Arch: same
+Source: libnl3
+Source-Version: 3.5.0-0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnl-3-200 (= 3.5.0-0.1), libc6 (>= 2.4)
+
+Package: python3-dateutil
+Architecture: all
+Version: 2.8.1-6
+APT-ID: 5201
+Source: python-dateutil
+Source-Version: 2.8.1-6
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-six (>= 1.5), python3:any, tzdata
+Breaks: khal (<< 1:0.9.10-0.1~), python3-icalendar (<< 4.0.3-2~), python3-vobject (<< 0.9.6.1-0.1~)
+
+Package: apg
+Architecture: amd64
+Version: 2.2.3.dfsg.1-5build2
+APT-ID: 36
+Source: apg
+Source-Version: 2.2.3.dfsg.1-5build2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0)
+
+Package: apt
+Architecture: amd64
+Version: 2.4.7
+APT-ID: 71709
+Essential: yes
+Source: apt
+Source-Version: 2.4.7
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, gpgv | gpgv2 | gpgv1, libapt-pkg6.0 (>= 2.4.7), ubuntu-keyring, libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libgnutls30 (>= 3.7.0), libseccomp2 (>= 2.4.2), libstdc++6 (>= 11), libsystemd0
+Suggests: apt-doc, aptitude | synaptic | wajig, dpkg-dev (>= 1.17.2), gnupg | gnupg2 | gnupg1, powermgmt-base
+Recommends: ca-certificates
+Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~)
+Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10)
+Provides: apt-transport-https (= 2.4.7)
+
+Package: libssh-4
+Architecture: amd64
+Version: 0.9.6-2build1
+APT-ID: 3737
+Multi-Arch: same
+Source: libssh
+Source-Version: 0.9.6-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgssapi-krb5-2 (>= 1.17), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.1.4)
+Breaks: remmina (<< 1.2.31.2+dfsg-1+), remmina-plugin-nx (<< 1.2.31.2+dfsg-1+), x2goclient (<< 4.1.2.1-1+)
+
+Package: bubblewrap
+Architecture: amd64
+Version: 0.6.1-1
+APT-ID: 149
+Multi-Arch: foreign
+Source: bubblewrap
+Source-Version: 0.6.1-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.10), libselinux1 (>= 3.1~)
+Recommends: procps
+Breaks: flatpak (<< 0.8.0-2~)
+
+Package: libwacom-common
+Architecture: all
+Version: 2.2.0-1
+APT-ID: 4036
+Multi-Arch: foreign
+Source: libwacom
+Source-Version: 2.2.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-lao
+Architecture: all
+Version: 0.0.20060226-10ubuntu2
+APT-ID: 455
+Multi-Arch: foreign
+Source: fonts-lao
+Source-Version: 0.0.20060226-10ubuntu2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libreoffice-core
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72550
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fontconfig, fonts-opensymbol (>= 2:102.12), libreoffice-common (>> 1:7.3.6), ure (>= 1:7.3.0~), libabsl20210324 (>= 0~20210324.2-1), libboost-locale1.74.0 (>= 1.74.0), libc6 (>= 2.35), libcairo2 (>= 1.14.0), libclucene-contribs1v5 (>= 2.3.3.4+dfsg), libclucene-core1v5 (>= 2.3.3.4+dfsg), libcups2 (>= 1.7.0), libcurl3-gnutls (>= 7.68.0), libdbus-1-3 (>= 1.9.14), libdconf1 (>= 0.15.2), libeot0, libepoxy0 (>= 1.0), libexpat1 (>= 2.0.1), libexttextcat-2.0-0 (>= 2.2-8), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libgcc-s1 (>= 3.4), libglib2.0-0 (>= 2.38.0), libgpgmepp6 (>= 1.16.0), libgraphite2-3 (>= 1.2.2), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), libharfbuzz-icu0 (>= 0.9.42), libharfbuzz0b (>= 1.4.2), libhunspell-1.7-0, libhyphen0 (>= 2.7.1), libice6 (>= 1:1.0.0), libicu70 (>= 70.1-1~), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libldap-2.5-0 (>= 2.5.4), libmythes-1.2-0, libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.16), libopenjp2-7 (>= 2.2.0), liborcus-0.17-0, liborcus-parser-0.17-0, libpng16-16 (>= 1.6.2-1), libpoppler118 (>= 22.02.0), libraptor2-0 (>= 2.0.14), librdf0 (>= 1.0.17), librevenge-0.0-0, libsm6, libstdc++6 (>= 12), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 3.6.0~beta), libx11-6, libx11-xcb1 (>= 2:1.7.5), libxext6, libxinerama1 (>= 2:1.1.4), libxml2 (>= 2.8), libxmlsec1 (>= 1.2.33), libxmlsec1-nss (>= 1.2.33), libxrandr2, libxrender1, libxslt1.1 (>= 1.1.25), uno-libs-private, zlib1g (>= 1:1.2.0)
+Suggests: gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-ugly, gstreamer1.0-plugins-bad, gstreamer1.0-libav
+Recommends: libpaper-utils
+Conflicts: libreoffice-avmedia-backend-vlc, libreoffice-base (<< 1:7.0.0~alpha~), libreoffice-calc (<< 1:7.0.0~alpha~), libreoffice-core-nogui, libreoffice-draw (<< 1:7.0.0~alpha~), libreoffice-filter-binfilter, libreoffice-impress (<< 1:7.0.0~alpha~), libreoffice-math (<< 1:7.0.0~alpha~), libreoffice-mysql-connector (<< 1:6.2.0~), libreoffice-report-builder (<< 1:7.0.0~alpha~), libreoffice-writer (<< 1:7.0.0~alpha~)
+Replaces: libreoffice-avmedia-backend-gstreamer, libreoffice-common (<< 1:6.3.0~rc1~), libreoffice-core-nogui, libreoffice-pdfimport (<< 1:5.4~)
+Breaks: browser-plugin-libreoffice, libreoffice-avmedia-backend-gstreamer (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-base (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-calc (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-common (<< 1:5.4.1), libreoffice-dev (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-draw (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-evolution (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-gnome (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-gtk2 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-gtk3 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-impress (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-kde4 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-kde5 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-kf5 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-officebean (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-pdfimport (<< 1:5.4~), libreoffice-qt5 (<< 1:7.3.6-0ubuntu0.22.04.1), libreoffice-writer (<< 1:7.3.6-0ubuntu0.22.04.1)
+
+Package: packagekit-tools
+Architecture: amd64
+Version: 1.2.5-2ubuntu2
+APT-ID: 4850
+Multi-Arch: foreign
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: packagekit (= 1.2.5-2ubuntu2), libc6 (>= 2.34), libglib2.0-0 (>= 2.54), libpackagekit-glib2-18 (>= 1.2.5)
+
+Package: libio-socket-ssl-perl
+Architecture: all
+Version: 2.074-2
+APT-ID: 2670
+Source: libio-socket-ssl-perl
+Source-Version: 2.074-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libnet-ssleay-perl, netbase
+Suggests: ca-certificates
+Recommends: libio-socket-ip-perl | libio-socket-inet6-perl, libsocket-perl | libsocket6-perl, liburi-perl | libnet-libidn-perl | libnet-idn-encode-perl
+
+Package: xkb-data
+Architecture: all
+Version: 2.33-1
+APT-ID: 6034
+Multi-Arch: foreign
+Source: xkeyboard-config
+Source-Version: 2.33-1
+Priority: required
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libx11-6 (<< 2:1.4.3), x11-xkb-utils (<< 7.7+5)
+
+Package: libwww-robotrules-perl
+Architecture: all
+Version: 6.02-1
+APT-ID: 4092
+Source: libwww-robotrules-perl
+Source-Version: 6.02-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, liburi-perl
+Replaces: libwww-perl (<< 6.00)
+Breaks: libwww-perl (<< 6.00)
+
+Package: libxrender1
+Architecture: amd64
+Version: 1:0.9.10-1build4
+APT-ID: 4261
+Multi-Arch: same
+Source: libxrender
+Source-Version: 1:0.9.10-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0)
+
+Package: dbus-user-session
+Architecture: amd64
+Version: 1.12.20-2ubuntu4
+APT-ID: 269
+Multi-Arch: foreign
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus (>= 1.12.20-2ubuntu4), libpam-systemd, systemd
+Recommends: systemd-sysv
+Breaks: dbus-x11 (<< 1.9.10-2~), policykit-1 (<< 0.105-12~), udisks2 (<< 2.1.5-2~)
+Provides: dbus-session-bus, default-dbus-session-bus
+
+Package: libepubgen-0.1-1
+Architecture: amd64
+Version: 0.1.1-1ubuntu5
+APT-ID: 2153
+Multi-Arch: same
+Source: libepubgen
+Source-Version: 0.1.1-1ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11)
+
+Package: cpp
+Architecture: amd64
+Version: 4:11.2.0-1ubuntu1
+APT-ID: 218
+Multi-Arch: allowed
+Source: gcc-defaults
+Source-Version: 1.193ubuntu1
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cpp-11 (>= 11.2.0-1~)
+Suggests: cpp-doc
+Conflicts: cpp-doc (<< 1:2.95.3)
+
+Package: libsnmp40
+Architecture: amd64
+Version: 5.9.1+dfsg-1ubuntu2.2
+APT-ID: 72750
+Multi-Arch: same
+Source: net-snmp
+Source-Version: 5.9.1+dfsg-1ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpci3 (>= 1:3.5.1), libperl5.34 (>= 5.34.0), libsensors5 (>= 1:3.5.0), libssl3 (>= 3.0.0~~alpha1), libwrap0 (>= 7.6-4~), libsnmp-base
+
+Package: libnftables1
+Architecture: amd64
+Version: 1.0.2-1ubuntu3
+APT-ID: 72470
+Multi-Arch: same
+Source: nftables
+Source-Version: 1.0.2-1ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgmp10 (>= 2:6.2.1+dfsg), libjansson4 (>= 2.3), libmnl0 (>= 1.0.3-4~), libnftnl11 (>= 1.2.1), libxtables12 (>= 1.6.0+snapshot20161117)
+
+Package: gir1.2-json-1.0
+Architecture: amd64
+Version: 1.6.6-1build1
+APT-ID: 722
+Multi-Arch: same
+Source: json-glib
+Source-Version: 1.6.6-1build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12), libjson-glib-1.0-0 (= 1.6.6-1build1)
+
+Package: libqmi-proxy
+Architecture: amd64
+Version: 1.30.4-1
+APT-ID: 3347
+Multi-Arch: foreign
+Source: libqmi
+Source-Version: 1.30.4-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libqmi-glib5 (= 1.30.4-1), libc6 (>= 2.34), libglib2.0-0 (>= 2.56)
+
+Package: libpython3-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72528
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: extra
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3.10-dbg (>= 3.10.6-1~)
+Replaces: python3-dbg (<< 3.8.0-1)
+Breaks: python3-dbg (<< 3.8.0-1)
+
+Package: libpython3-dbg
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3334
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: extra
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-dbg (>= 3.10.4-1~)
+Replaces: python3-dbg (<< 3.8.0-1)
+Breaks: python3-dbg (<< 3.8.0-1)
+
+Package: libhtml-form-perl
+Architecture: all
+Version: 6.07-1
+APT-ID: 2590
+Source: libhtml-form-perl
+Source-Version: 6.07-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libhtml-parser-perl, libhttp-message-perl, liburi-perl
+
+Package: libpython3-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72529
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3.10-dev (>= 3.10.6-1~)
+Replaces: libpython3.8-dev (<< 3.8.0-2), python3-dev (<< 3.8.0-1)
+Breaks: libpython3.8-dev (<< 3.8.0-2), python3-dev (<< 3.8.0-1)
+
+Package: libpython3-dev
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3335
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-dev (>= 3.10.4-1~)
+Replaces: libpython3.8-dev (<< 3.8.0-2), python3-dev (<< 3.8.0-1)
+Breaks: libpython3.8-dev (<< 3.8.0-2), python3-dev (<< 3.8.0-1)
+
+Package: liblwp-protocol-https-perl
+Architecture: all
+Version: 6.10-1
+APT-ID: 2862
+Source: liblwp-protocol-https-perl
+Source-Version: 6.10-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, ca-certificates, libio-socket-ssl-perl, libnet-http-perl, libwww-perl
+Suggests: libcrypt-ssleay-perl
+
+Package: libglvnd0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 2404
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: libgldispatch0-nvidia
+Breaks: libgldispatch0-nvidia
+
+Package: evolution-data-server-common
+Architecture: all
+Version: 3.44.4-0ubuntu1
+APT-ID: 71798
+Multi-Arch: foreign
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: gnome-initial-setup
+Architecture: amd64
+Version: 42.0.1-1ubuntu2
+APT-ID: 791
+Source: gnome-initial-setup
+Source-Version: 42.0.1-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaccountsservice0 (>= 0.6.24), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libcheese-gtk25 (>= 3.28), libcheese8 (>= 3.18.0), libfontconfig1 (>= 2.12.6), libgdk-pixbuf-2.0-0 (>= 2.25.2), libgdm1 (>= 3.8.3), libgeoclue-2-0 (>= 2.4.0), libglib2.0-0 (>= 2.63.1), libgnome-desktop-4-1 (>= 3.17.92), libgoa-1.0-0b (>= 3.5.90), libgoa-backend-1.0-1 (>= 3.10.0), libgtk-3-0 (>= 3.22.29), libgweather-3-16 (>= 3.13.91), libhandy-1-0 (>= 1.5.90), libibus-1.0-5 (>= 1.5.2), libjson-glib-1.0-0 (>= 1.5.2), libkrb5-3 (>= 1.8+dfsg), libnm0 (>= 1.2), libnma0 (>= 1.1.90), libpango-1.0-0 (>= 1.32.5), libpangocairo-1.0-0 (>= 1.32.5), libpolkit-gobject-1-0 (>= 0.103), libpwquality1 (>= 1.1.0), librest-0.7-0 (>= 0.7), libsecret-1-0 (>= 0.18.8), libsnapd-glib1 (>= 1.42), libsoup2.4-1 (>= 2.41.90), libsysmetrics1 (>= 1.0.5), libwebkit2gtk-4.0-37 (>= 2.26), policykit-1 (>= 0.103), adduser, gnome-settings-daemon (>= 3.24), gnome-control-center-data
+Suggests: gdm3
+Recommends: accountsservice, geoclue-2.0 (>= 2.3.1), gnome-keyring
+
+Package: libwww-perl
+Architecture: all
+Version: 6.61-1
+APT-ID: 4091
+Multi-Arch: foreign
+Source: libwww-perl
+Source-Version: 6.61-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, ca-certificates, libencode-locale-perl, libfile-listing-perl, libhtml-parser-perl, libhtml-tagset-perl, libhtml-tree-perl, libhttp-cookies-perl, libhttp-date-perl, libhttp-message-perl, libhttp-negotiate-perl, liblwp-mediatypes-perl, liblwp-protocol-https-perl, libnet-http-perl, libtry-tiny-perl, liburi-perl, libwww-robotrules-perl, netbase
+Suggests: libauthen-ntlm-perl
+Recommends: libdata-dump-perl, libhtml-form-perl, libhtml-format-perl, libhttp-daemon-perl, libmailtools-perl
+
+Package: libproxy1v5
+Architecture: amd64
+Version: 0.4.17-2
+APT-ID: 3316
+Multi-Arch: same
+Source: libproxy
+Source-Version: 0.4.17-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+Conflicts: libproxy1
+Replaces: libproxy1
+
+Package: libblockdev-part2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1748
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-part-err2 (>= 2.14), libblockdev-utils2 (>= 2.14), libc6 (>= 2.29), libglib2.0-0 (>= 2.42.2), libparted2 (>= 3.1), gdisk (>= 0.8.6), fdisk | util-linux (<< 2.29.2-3~)
+
+Package: libraptor2-0
+Architecture: amd64
+Version: 2.0.15-0ubuntu4
+APT-ID: 3363
+Multi-Arch: same
+Source: raptor2
+Source-Version: 2.0.15-0ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcurl3-gnutls (>= 7.16.2), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25), libyajl2 (>= 2.0.4)
+Suggests: raptor2-utils
+Breaks: libraptor1 (<< 1.4.21-3)
+
+Package: wpasupplicant
+Architecture: amd64
+Version: 2:2.10-6ubuntu2
+APT-ID: 74546
+Multi-Arch: foreign
+Source: wpa
+Source-Version: 2:2.10-6ubuntu2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libnl-3-200 (>= 3.2.21), libnl-genl-3-200 (>= 3.2.7), libnl-route-3-200 (>= 3.4.0), libpcsclite1 (>= 1.0.0), libreadline8 (>= 6.0), libssl3 (>= 3.0.0~~alpha1), lsb-base, adduser
+Suggests: wpagui, libengine-pkcs11-openssl
+
+Package: eog
+Architecture: amd64
+Version: 42.0-1
+APT-ID: 372
+Source: eog
+Source-Version: 42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.10.0), libexempi8 (>= 2.5.0), libexif12 (>= 0.6.21-1~), libgdk-pixbuf-2.0-0 (>= 2.36.5), libgirepository-1.0-1 (>= 0.9.12), libglib2.0-0 (>= 2.42.0), libgnome-desktop-3-19 (>= 3.17.92), libgtk-3-0 (>= 3.24.15), libhandy-1-0 (>= 1.5.0), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libpeas-1.0-0 (>= 1.0.0), librsvg2-2 (>= 2.44), libx11-6, zlib1g (>= 1:1.1.4), dconf-gsettings-backend | gsettings-backend, gir1.2-gtk-3.0 (>= 3.24.15), shared-mime-info (>= 0.20), gsettings-desktop-schemas (>= 42~beta), gir1.2-peas-1.0
+Suggests: eog-plugins
+Recommends: librsvg2-common, yelp
+Breaks: eog-plugins (<< 3.16.4-2~)
+
+Package: libnettle8
+Architecture: amd64
+Version: 3.7.3-1build2
+APT-ID: 3035
+Multi-Arch: same
+Source: nettle
+Source-Version: 3.7.3-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: libabw-0.1-1
+Architecture: amd64
+Version: 0.1.3-1build3
+APT-ID: 1572
+Multi-Arch: same
+Source: libabw
+Source-Version: 0.1.3-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+
+Package: ssl-cert
+Architecture: all
+Version: 1.1.2
+APT-ID: 5699
+Multi-Arch: foreign
+Source: ssl-cert
+Source-Version: 1.1.2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, openssl (>= 0.9.8g-9), adduser
+
+Package: libtry-tiny-perl
+Architecture: all
+Version: 0.31-1
+APT-ID: 3890
+Source: libtry-tiny-perl
+Source-Version: 0.31-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+Suggests: libsub-name-perl
+
+Package: libsuitesparseconfig5
+Architecture: amd64
+Version: 1:5.10.1+dfsg-4build1
+APT-ID: 3790
+Multi-Arch: same
+Source: suitesparse
+Source-Version: 1:5.10.1+dfsg-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+
+Package: printer-driver-foo2zjs-common
+Architecture: all
+Version: 20200505dfsg0-2ubuntu2
+APT-ID: 4967
+Source: foo2zjs
+Source-Version: 20200505dfsg0-2ubuntu2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, xz-utils
+Suggests: tix, tk
+Recommends: printer-driver-foo2zjs (>= 20200505dfsg0-2ubuntu2)
+Replaces: foo2zjs (<< 20111023dfsg0-1~)
+Breaks: foo2zjs (<< 20111023dfsg0-1~)
+Enhances: printer-driver-foo2zjs (>= 20200505dfsg0-2ubuntu2)
+
+Package: libgtk-4-common
+Architecture: all
+Version: 4.6.6+ds-0ubuntu1
+APT-ID: 72416
+Multi-Arch: foreign
+Source: gtk4
+Source-Version: 4.6.6+ds-0ubuntu1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Recommends: libgtk-4-1
+
+Package: libsensors-config
+Architecture: all
+Version: 1:3.6.0-7ubuntu1
+APT-ID: 3658
+Multi-Arch: foreign
+Source: lm-sensors
+Source-Version: 1:3.6.0-7ubuntu1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: lm-sensors
+Replaces: libsensors4
+Breaks: libsensors4
+
+Package: gir1.2-notify-0.7
+Architecture: amd64
+Version: 0.7.9-3ubuntu5.22.04.1
+APT-ID: 71848
+Multi-Arch: same
+Source: libnotify
+Source-Version: 0.7.9-3ubuntu5.22.04.1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0 (>= 0.9.12), libnotify4 (>= 0.7.3)
+
+Package: ftp
+Architecture: all
+Version: 20210827-4build1
+APT-ID: 566
+Multi-Arch: foreign
+Source: tnftp
+Source-Version: 20210827-4build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tnftp
+Replaces: ftp (<= 0.17-35)
+
+Package: libetonyek-0.1-1
+Architecture: amd64
+Version: 0.1.10-3build1
+APT-ID: 2163
+Multi-Arch: same
+Source: libetonyek
+Source-Version: 0.1.10-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), liblangtag1 (>= 0.5.0), librevenge-0.0-0, libstdc++6 (>= 11), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+
+Package: libpython3-all-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72526
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: extra
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3-dbg (= 3.10.6-1~22.04), libpython3.10-dbg
+
+Package: libpython3-all-dbg
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3332
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: extra
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3-dbg (= 3.10.4-0ubuntu2), libpython3.10-dbg
+
+Package: libpython3-all-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72527
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3-dev (= 3.10.6-1~22.04), libpython3.10-dev
+
+Package: libpython3-all-dev
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3333
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3-dev (= 3.10.4-0ubuntu2), libpython3.10-dev
+
+Package: libfprint-2-2
+Architecture: amd64
+Version: 1:1.94.3+tod1-0ubuntu2~22.04.01
+APT-ID: 72343
+Multi-Arch: same
+Source: libfprint
+Source-Version: 1:1.94.3+tod1-0ubuntu2~22.04.01
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libglib2.0-0 (>= 2.56), libgudev-1.0-0 (>= 146), libgusb2 (>= 0.3.0), libnss3 (>= 2:3.13.4-2~), libpixman-1-0 (>= 0.30.0)
+
+Package: hicolor-icon-theme
+Architecture: all
+Version: 0.17-2
+APT-ID: 967
+Multi-Arch: foreign
+Source: hicolor-icon-theme
+Source-Version: 0.17-2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: linux-image-5.15.0-43-generic
+Architecture: amd64
+Version: 5.15.0-43.46
+APT-ID: 73436
+Source: linux-signed
+Source-Version: 5.15.0-43.46
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-5.15.0-43-generic
+Suggests: fdutils, linux-doc | linux-source-5.15.0, linux-tools, linux-headers-5.15.0-43-generic, linux-modules-extra-5.15.0-43-generic
+Recommends: grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo, initramfs-tools | linux-initramfs-tool
+Conflicts: linux-image-unsigned-5.15.0-43-generic
+Provides: zfs-modules, zfs-dkms, virtualbox-guest-modules, v4l2loopback-modules, v4l2loopback-dkms, spl-modules, spl-dkms, redhat-cluster-modules, linux-image, kvm-api-4, ivtv-modules, fuse-module
+
+Package: gcr
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 610
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: default-dbus-session-bus | dbus-session-bus, libgcr-base-3-1 (= 3.40.0-4), libgcr-ui-3-1 (= 3.40.0-4), dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libglib2.0-0 (>= 2.44.0), libgtk-3-0 (>= 3.22.0)
+
+Package: gdb
+Architecture: amd64
+Version: 12.0.90-0ubuntu1
+APT-ID: 611
+Source: gdb
+Source-Version: 12.0.90-0ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbabeltrace1 (>= 1.5.4), libc6 (>= 2.34), libdebuginfod1 (>= 0.180), libexpat1 (>= 2.0.1), libgcc-s1 (>= 4.2), libgmp10 (>= 2:6.2.1+dfsg), libipt2 (>= 2.0), liblzma5 (>= 5.1.1alpha+20110809), libmpfr6 (>= 3.1.3), libncursesw6 (>= 6), libpython3.10 (>= 3.10.0), libreadline8 (>= 8), libsource-highlight4v5 (>= 3.1.9), libstdc++6 (>= 12), libtinfo6 (>= 6), libxxhash0 (>= 0.6.5), zlib1g (>= 1:1.2.0)
+Suggests: gdb-doc, gdbserver
+Recommends: libc-dbg
+Conflicts: gdb
+Replaces: gdb
+Provides: gdb-minimal (= 12.0.90-0ubuntu1)
+
+Package: modemmanager
+Architecture: amd64
+Version: 1.18.6-1
+APT-ID: 4654
+Source: modemmanager
+Source-Version: 1.18.6-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56.0), libgudev-1.0-0 (>= 232), libmbim-glib4 (>= 1.26.0), libmbim-proxy, libmm-glib0 (>= 1.18.2), libpolkit-gobject-1-0 (>= 0.99), libqmi-glib5 (>= 1.30.2), libqmi-proxy, libsystemd0 (>= 209), policykit-1
+Recommends: usb-modeswitch
+
+Package: cups-bsd
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71755
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: extra
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-client (= 2.4.1op1-1ubuntu4.1), cups-common (>= 2.4.1op1-1ubuntu4.1), debconf (>= 0.5) | debconf-2.0, libcups2 (= 2.4.1op1-1ubuntu4.1), libc6 (>= 2.34)
+Suggests: cups, inetutils-inetd | inet-superserver, update-inetd
+Conflicts: lpr, lprng
+Replaces: lpr
+Provides: lpr
+
+Package: pipewire-media-session
+Architecture: amd64
+Version: 0.4.1-2ubuntu1
+APT-ID: 4915
+Multi-Arch: foreign
+Source: pipewire-media-session
+Source-Version: 0.4.1-2ubuntu1
+Priority: optional
+Section: video
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: pipewire (>= 0.3.39), init-system-helpers (>= 1.52), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libpipewire-0.3-0 (>= 0.3.39), libsystemd0
+Conflicts: wireplumber
+Replaces: pipewire-bin (<< 0.3.27-2), pipewire-pulse (<< 0.3.39-1)
+Breaks: pipewire-bin (<< 0.3.27-2), pipewire-pulse (<< 0.3.39-1)
+
+Package: acpid
+Architecture: amd64
+Version: 1:2.0.33-1ubuntu1
+APT-ID: 4
+Source: acpid
+Source-Version: 1:2.0.33-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), lsb-base (>= 3.2-14), kmod
+Pre-Depends: init-system-helpers (>= 1.54~)
+
+Package: libacl1
+Architecture: amd64
+Version: 2.3.1-1
+APT-ID: 1577
+Multi-Arch: same
+Source: acl
+Source-Version: 2.3.1-1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: gjs
+Architecture: amd64
+Version: 1.72.2-0ubuntu1
+APT-ID: 71854
+Source: gjs
+Source-Version: 1.72.2-0ubuntu1
+Priority: extra
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libgjs0g (= 1.72.2-0ubuntu1), libglib2.0-0 (>= 2.58.0), libstdc++6 (>= 4.1.1), gir1.2-gtk-3.0
+
+Package: libtss2-tcti-cmd0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3901
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.7), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: gpg
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71880
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libreadline8 (>= 6.0), libsqlite3-0 (>= 3.7.15), zlib1g (>= 1:1.1.4)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4)
+
+Package: avahi-autoipd
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 73
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdaemon0 (>= 0.14), adduser
+Recommends: isc-dhcp-client, iproute2
+Conflicts: zeroconf
+
+Package: librygel-core-2.6-2
+Architecture: amd64
+Version: 0.40.3-1ubuntu2
+APT-ID: 3621
+Multi-Arch: same
+Source: rygel
+Source-Version: 0.40.3-1ubuntu2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.56.0), libgssdp-1.2-0 (>= 1.1.0), libgupnp-1.2-1 (>= 1.1.2), libxml2 (>= 2.7.4)
+
+Package: gnome-control-center-faces
+Architecture: all
+Version: 1:41.7-0ubuntu0.22.04.5
+APT-ID: 71862
+Multi-Arch: foreign
+Source: gnome-control-center
+Source-Version: 1:41.7-0ubuntu0.22.04.5
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: unity-control-center-faces
+Replaces: unity-control-center-faces
+Provides: unity-control-center-faces
+
+Package: fonts-tlwg-typist
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 535
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-typist-ttf | fonts-tlwg-typist-otf
+
+Package: libglib2.0-bin
+Architecture: amd64
+Version: 2.72.1-1
+APT-ID: 2387
+Multi-Arch: foreign
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-data, libc6 (>= 2.34), libelf1 (>= 0.142), libglib2.0-0 (= 2.72.1-1)
+
+Package: gir1.2-snapd-1
+Architecture: amd64
+Version: 1.60-0ubuntu1
+APT-ID: 746
+Multi-Arch: same
+Source: snapd-glib
+Source-Version: 1.60-0ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, libsnapd-glib1 (= 1.60-0ubuntu1)
+
+Package: systemd-timesyncd
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79620
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4), adduser
+Conflicts: time-daemon
+Replaces: systemd (<< 245.4-2~), time-daemon
+Breaks: systemd (<< 245.4-2~)
+Provides: time-daemon
+
+Package: perl
+Architecture: amd64
+Version: 5.34.0-3ubuntu1
+APT-ID: 4863
+Multi-Arch: allowed
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (= 5.34.0-3ubuntu1), perl-modules-5.34 (>= 5.34.0-3ubuntu1), libperl5.34 (= 5.34.0-3ubuntu1)
+Pre-Depends: dpkg (>= 1.17.17)
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl, make, libtap-harness-archive-perl
+Recommends: netbase
+Conflicts: libjson-pp-perl (<< 2.27200-2)
+Replaces: perl-base (<< 5.34.0-2), perl-modules (<< 5.22.0~)
+Breaks: apt-show-versions (<< 0.22.10), libdist-inkt-perl (<< 0.024-5), libmarc-charset-perl (<< 1.35-3), libperl-dev (<< 5.24.0~), perl-doc (<< 5.34.0-1), perl-modules-5.22, perl-modules-5.24, perl-modules-5.26 (<< 5.26.2-5)
+Provides: podlators-perl (= 4.14), libversion-requirements-perl, libversion-perl (= 1:0.9928), libunicode-collate-perl (= 1.29), libtime-piece-perl (= 1.3401), libtime-local-perl (= 1.3000), libtime-hires-perl (= 1.9767), libthreads-shared-perl (= 1.62), libthreads-perl (= 2.26), libthread-queue-perl (= 3.14), libtest-use-ok-perl (= 1.302183), libtest-tester-perl (= 1.302183), libtest-simple-perl (= 1.302183), libtest-harness-perl (= 3.43), libsys-syslog-perl (= 0.36), libstorable-perl (= 3.23), libpod-simple-perl (= 3.42), libpod-escapes-perl (= 1.07), libperl-ostype-perl (= 1.010), libparse-cpan-meta-perl (= 2.150010), libparent-perl (= 0.238), libparams-check-perl (= 0.38), libnet-ping-perl (= 2.74), libnet-perl (= 1:3.13), libmodule-metadata-perl (= 1.000037), libmodule-load-perl (= 0.36), libmodule-load-conditional-perl (= 0.74), libmodule-corelist-perl (= 5.20210520), libmime-base64-perl (= 3.16), libmath-complex-perl (= 1.5902), libmath-bigint-perl (= 1.999818), liblocale-maketext-simple-perl (= 0.21.01), liblocale-maketext-perl (= 1.29), libjson-pp-perl (= 4.06000), libio-zlib-perl (= 1.11), libio-compress-zlib-perl (= 2.102), libio-compress-perl (= 2.102), libio-compress-bzip2-perl (= 2.102), libio-compress-base-perl (= 2.102), libi18n-langtags-perl (= 0.45), libhttp-tiny-perl (= 0.076), libfile-spec-perl (= 3.8000), libextutils-parsexs-perl (= 3.430000), libextutils-install-perl (= 2.20), libextutils-command-perl (= 7.62), libextutils-cbuilder-perl (= 0.280236), libexperimental-perl (= 0.024), libencode-perl (= 3.08), libdigest-sha-perl (= 6.02), libdigest-perl (= 1.19), libdigest-md5-perl (= 2.58), libcpan-meta-yaml-perl (= 0.018), libcpan-meta-requirements-perl (= 2.140), libcpan-meta-perl (= 2.150010), libcompress-zlib-perl (= 2.102), libcompress-raw-zlib-perl (= 2.101), libcompress-raw-bzip2-perl (= 2.101), libautodie-perl (= 2.34), libattribute-handlers-perl (= 1.01), libarchive-tar-perl (= 2.38), libansicolor-perl (= 5.01)
+
+Package: polkitd
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 4933
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, default-logind | logind, libc6 (>= 2.34), libexpat1 (>= 2.0.1), libglib2.0-0 (>= 2.37.3), libpam0g (>= 0.99.7.1), libpolkit-agent-1-0 (= 0.105-33), libpolkit-gobject-1-0 (= 0.105-33), libsystemd0 (>= 213)
+Replaces: policykit-1 (<< 0.105-32~)
+Breaks: policykit-1 (<< 0.105-32~)
+Provides: polkitd-pkla (= 0.105-33)
+
+Package: libgoa-1.0-common
+Architecture: all
+Version: 3.44.0-1ubuntu1
+APT-ID: 2454
+Multi-Arch: foreign
+Source: gnome-online-accounts
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: libgoa-1.0-0 (<< 3.8.2)
+Breaks: libgoa-1.0-0 (<< 3.8.2)
+
+Package: gstreamer1.0-packagekit
+Architecture: amd64
+Version: 1.2.5-2ubuntu2
+APT-ID: 928
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: packagekit (= 1.2.5-2ubuntu2), libc6 (>= 2.34), libglib2.0-0 (>= 2.54), libgstreamer1.0-0 (>= 1.0.0), libpackagekit-glib2-18 (>= 0.9.4)
+Recommends: gnome-software | apper | packagekit-installer
+Conflicts: gstreamer0.10-packagekit
+Replaces: gstreamer0.10-packagekit
+
+Package: libtinfo6
+Architecture: amd64
+Version: 6.3-2
+APT-ID: 3863
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libgjs0g
+Architecture: amd64
+Version: 1.72.2-0ubuntu1
+APT-ID: 72378
+Multi-Arch: same
+Source: gjs
+Source-Version: 1.72.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.14.0), libffi8 (>= 3.4), libgcc-s1 (>= 3.3.1), libgirepository-1.0-1 (>= 1.66.0), libgirepository-1.0-1-with-libffi8 (>= 1.64), libglib2.0-0 (>= 2.70.0), libmozjs-91-0 (>= 91.10.0), libreadline8 (>= 6.0), libstdc++6 (>= 11), libx11-6
+Conflicts: libgjs0, libgjs0a, libgjs0b, libgjs0c, libgjs0d, libgjs0e, libgjs0f
+Replaces: libgjs0, libgjs0a, libgjs0b, libgjs0c, libgjs0d, libgjs0e, libgjs0f
+Breaks: gnome-characters (<< 3.25.92), gnome-documents (<< 3.30.0), gnome-maps (<< 3.26.1), gnome-shell (<< 3.38.6), gnome-sound-recorder (<< 3.28.1-3~), gnome-weather (<< 3.25.91), ostree-tests (<< 2017.11-1~), polari (<< 3.29.91)
+
+Package: libtirpc-common
+Architecture: all
+Version: 1.3.2-2ubuntu0.1
+APT-ID: 72782
+Multi-Arch: foreign
+Source: libtirpc
+Source-Version: 1.3.2-2ubuntu0.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
+Breaks: libtirpc1, libtirpc3 (<< 1.1.4-0.1~)
+
+Package: libxcb-image0
+Architecture: amd64
+Version: 0.4.0-2
+APT-ID: 4144
+Multi-Arch: same
+Source: xcb-util-image
+Source-Version: 0.4.0-2
+Priority: extra
+Section: libdevel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxcb-shm0, libxcb-util1 (>= 0.4.0), libxcb1
+
+Package: libcanberra-gtk3-module
+Architecture: amd64
+Version: 0.30-10ubuntu1
+APT-ID: 1845
+Multi-Arch: same
+Source: libcanberra
+Source-Version: 0.30-10ubuntu1
+Priority: extra
+Section: debug
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcanberra-gtk3-0 (>= 0.25), libglib2.0-0 (>= 2.12.0), libgtk-3-0 (>= 3.2.2-3), libx11-6
+
+Package: tzdata
+Architecture: all
+Version: 2022c-0ubuntu0.22.04.0
+APT-ID: 74521
+Multi-Arch: foreign
+Source: tzdata
+Source-Version: 2022c-0ubuntu0.22.04.0
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+Provides: tzdata-bookworm
+
+Package: xserver-xorg-video-amdgpu
+Architecture: amd64
+Version: 22.0.0-1ubuntu0.1
+APT-ID: 74557
+Source: xserver-xorg-video-amdgpu
+Source-Version: 22.0.0-1ubuntu0.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libdrm-amdgpu1 (>= 2.4.73), libgbm1 (>= 8.1~0), libudev1 (>= 183), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Suggests: firmware-amd-graphics
+Provides: xorg-driver-video
+
+Package: libx11-xcb1
+Architecture: amd64
+Version: 2:1.7.5-1
+APT-ID: 4099
+Multi-Arch: same
+Source: libx11
+Source-Version: 2:1.7.5-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libx11-6 (= 2:1.7.5-1)
+
+Package: xbrlapi
+Architecture: amd64
+Version: 6.4-4ubuntu3
+APT-ID: 74547
+Multi-Arch: foreign
+Source: brltty
+Source-Version: 6.4-4ubuntu3
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrlapi0.8 (>= 6.4), libc6 (>= 2.34), libicu70 (>= 70.1-1~), libx11-6, libxfixes3, libxtst6
+Replaces: brltty-x11 (<< 4.3-3)
+Breaks: brltty-x11 (<< 4.3-3)
+
+Package: libntfs-3g89
+Architecture: amd64
+Version: 1:2021.8.22-3ubuntu1.1
+APT-ID: 72489
+Source: ntfs-3g
+Source-Version: 1:2021.8.22-3ubuntu1.1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libxshmfence1
+Architecture: amd64
+Version: 1.3-1build4
+APT-ID: 4266
+Multi-Arch: same
+Source: libxshmfence
+Source-Version: 1.3-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27)
+
+Package: libblockdev-swap2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1750
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.23.0), libblockdev-utils2 (>= 2.14), libc6 (>= 2.4), libglib2.0-0 (>= 2.42.2)
+
+Package: libdjvulibre-text
+Architecture: all
+Version: 3.5.28-2build2
+APT-ID: 2072
+Multi-Arch: foreign
+Source: djvulibre
+Source-Version: 3.5.28-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: djview3 (= 3.5.20-9), djvulibre-desktop (<< 3.5.20-9), libdjvulibre15
+
+Package: libunwind8
+Architecture: amd64
+Version: 1.3.2-2build2
+APT-ID: 3953
+Multi-Arch: same
+Source: libunwind
+Source-Version: 1.3.2-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.1.1alpha+20110809)
+Conflicts: libunwind1-dev
+Replaces: libgcc1 (<< 1:4.0.0-2)
+
+Package: usb-creator-common
+Architecture: all
+Version: 0.3.13
+APT-ID: 5924
+Source: usb-creator
+Source-Version: 0.3.13
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-dbus, gir1.2-udisks-2.0, udisks2, genisoimage, python3-debian
+
+Package: cups-common
+Architecture: all
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71757
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-smc
+Architecture: all
+Version: 1:7.2
+APT-ID: 498
+Multi-Arch: foreign
+Source: fonts-smc
+Source-Version: 1:7.2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-smc-anjalioldlipi (>= 7.1.2), fonts-smc-chilanka (>= 1.400), fonts-smc-dyuthi (>= 3.0.2), fonts-smc-gayathri (>= 1.100), fonts-smc-karumbi (>= 1.1.2), fonts-smc-keraleeyam (>= 3.0.2), fonts-smc-manjari (>= 1.710), fonts-smc-meera (>= 7.0.3), fonts-smc-rachana (>= 7.0.2), fonts-smc-raghumalayalamsans (>= 2.2.1), fonts-smc-suruma (>= 3.2.2), fonts-smc-uroob (>= 2.0.2)
+Pre-Depends: dpkg (>= 1.15.6~)
+Replaces: ttf-malayalam-fonts
+Breaks: ttf-malayalam-fonts (<< 2:1.0)
+
+Package: libldb2
+Architecture: amd64
+Version: 2:2.4.4-0ubuntu0.1
+APT-ID: 72447
+Multi-Arch: same
+Source: ldb
+Source-Version: 2:2.4.4-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libldap-2.5-0 (>= 2.5.4), liblmdb0 (>= 0.9.9), libtalloc2 (>= 2.3.1~), libtdb1 (>= 1.4.3~), libtevent0 (>= 0.10.2~)
+Replaces: libldb0
+Breaks: ldb-tools (<< 1.1.30~), libldb0, libldb1 (<< 2:2~), libsamdb0 (<< 4.0.0~alpha17~git20110724.dfsg1-1), python-samba (<< 2:4.7.0~), samba (<< 2:4.7.0~), samba-dsdb-modules (<< 2:4.7.0~), samba-libs (<< 2:4.7.0~), samba-testsuite (<< 2:4.7.0~)
+
+Package: ntfs-3g
+Architecture: amd64
+Version: 1:2021.8.22-3ubuntu1.1
+APT-ID: 74239
+Source: ntfs-3g
+Source-Version: 1:2021.8.22-3ubuntu1.1
+Priority: standard
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libntfs-3g89 (= 1:2021.8.22-3ubuntu1.1)
+Pre-Depends: fuse3
+
+Package: libmagic-mgc
+Architecture: amd64
+Version: 1:5.41-3
+APT-ID: 2876
+Multi-Arch: foreign
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libmagic1 (<< 1:5.28-4~)
+Breaks: libmagic1 (<< 1:5.28-4~)
+
+Package: libpcre3
+Architecture: amd64
+Version: 2:8.39-13ubuntu0.22.04.1
+APT-ID: 72506
+Multi-Arch: same
+Source: pcre3
+Source-Version: 2:8.39-13ubuntu0.22.04.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+
+Package: libpango-1.0-0
+Architecture: amd64
+Version: 1.50.6+ds-2
+APT-ID: 3190
+Multi-Arch: same
+Source: pango1.0
+Source-Version: 1.50.6+ds-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fontconfig (>= 2.13.0), libc6 (>= 2.14), libfribidi0 (>= 1.0.6), libglib2.0-0 (>= 2.67.3), libharfbuzz0b (>= 2.6.0), libthai0 (>= 0.1.25)
+Breaks: libpangocairo-1.0-0 (<< 1.44.7), libpangoft2-1.0-0 (<< 1.44.7), libpangoxft-1.0-0 (<< 1.44.7)
+
+Package: iucode-tool
+Architecture: amd64
+Version: 2.3.1-1build1
+APT-ID: 1154
+Source: iucode-tool
+Source-Version: 2.3.1-1build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: intel-microcode (>= 1)
+
+Package: libunistring2
+Architecture: amd64
+Version: 1.0-1
+APT-ID: 3934
+Multi-Arch: same
+Source: libunistring
+Source-Version: 1.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: python3-monotonic
+Architecture: all
+Version: 1.6-2
+APT-ID: 5323
+Source: python-monotonic
+Source-Version: 1.6-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: gamemode-daemon
+Architecture: amd64
+Version: 1.6.1-1build2
+APT-ID: 584
+Multi-Arch: foreign
+Source: gamemode
+Source-Version: 1.6.1-1build2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: init-system-helpers (>= 1.52), libc6 (>= 2.34), libinih1 (>= 40), libsystemd0 (>= 243)
+Breaks: gamemode (<< 1.5.1-3), libgamemode0 (<< 1.5.1-3)
+
+Package: libtevent0
+Architecture: amd64
+Version: 0.11.0-1build1
+APT-ID: 3824
+Multi-Arch: same
+Source: tevent
+Source-Version: 0.11.0-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtalloc2 (>= 2.3.2~)
+
+Package: kbd
+Architecture: amd64
+Version: 2.3.0-3ubuntu4
+APT-ID: 1164
+Source: kbd
+Source-Version: 2.3.0-3ubuntu4
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), console-setup | console-setup-mini
+Conflicts: console-utilities
+Provides: console-utilities
+
+Package: libidn2-0
+Architecture: amd64
+Version: 2.3.2-2build1
+APT-ID: 2633
+Multi-Arch: same
+Source: libidn2
+Source-Version: 2.3.2-2build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libunistring2 (>= 0.9.7)
+
+Package: libexiv2-27
+Architecture: amd64
+Version: 0.27.5-3ubuntu1
+APT-ID: 2182
+Multi-Arch: same
+Source: exiv2
+Source-Version: 0.27.5-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+Suggests: exiv2
+Replaces: libexiv2-dev (<< 0.27.2-7~)
+Breaks: libexiv2-dev (<< 0.27.2-7~)
+
+Package: python3-cffi-backend
+Architecture: amd64
+Version: 1.15.0-1build2
+APT-ID: 5178
+Multi-Arch: same
+Source: python-cffi
+Source-Version: 1.15.0-1build2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.34), libffi8 (>= 3.4)
+Provides: python3-cffi-backend-api-min (= 9729), python3-cffi-backend-api-max (= 10495), python3-cffi-backend-api-9729
+
+Package: libldap-common
+Architecture: all
+Version: 2.5.13+dfsg-0ubuntu0.22.04.1
+APT-ID: 72443
+Multi-Arch: foreign
+Source: openldap
+Source-Version: 2.5.13+dfsg-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libldap-2.4-2 (<< 2.4.44+dfsg-1)
+
+Package: libgusb2
+Architecture: amd64
+Version: 0.3.10-1
+APT-ID: 2563
+Multi-Arch: same
+Source: libgusb
+Source-Version: 0.3.10-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.44.0), libusb-1.0-0 (>= 2:1.0.22)
+Recommends: usb.ids
+
+Package: libwavpack1
+Architecture: amd64
+Version: 5.4.0-1build2
+APT-ID: 4041
+Multi-Arch: same
+Source: wavpack
+Source-Version: 5.4.0-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: fonts-smc-karumbi
+Architecture: all
+Version: 1.1.2-2
+APT-ID: 503
+Multi-Arch: foreign
+Source: fonts-smc-karumbi
+Source-Version: 1.1.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: network-manager-config-connectivity-ubuntu
+Architecture: all
+Version: 1.36.6-0ubuntu2
+APT-ID: 74211
+Multi-Arch: foreign
+Source: network-manager
+Source-Version: 1.36.6-0ubuntu2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: network-manager (>= 1.36.6-0ubuntu2)
+
+Package: apt-config-icons-hidpi
+Architecture: all
+Version: 0.15.2-2
+APT-ID: 47
+Multi-Arch: foreign
+Source: appstream
+Source-Version: 0.15.2-2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: apt-config-icons
+
+Package: libtasn1-6
+Architecture: amd64
+Version: 4.18.0-4build1
+APT-ID: 3811
+Multi-Arch: same
+Source: libtasn1-6
+Source-Version: 4.18.0-4build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: gir1.2-gstreamer-1.0
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 71838
+Multi-Arch: same
+Source: gstreamer1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12-4~), libgstreamer1.0-0 (>= 1.20.0)
+
+Package: xserver-xorg-core
+Architecture: amd64
+Version: 2:21.1.3-2ubuntu2.1
+APT-ID: 74554
+Source: xorg-server
+Source-Version: 2:21.1.3-2ubuntu2.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-common (>= 2:21.1.3-2ubuntu2.1), keyboard-configuration, udev (>= 149), libegl1, libaudit1 (>= 1:2.2.1), libbsd0 (>= 0.7.0), libc6 (>= 2.35), libdbus-1-3 (>= 1.9.14), libdrm2 (>= 2.4.66), libepoxy0 (>= 1.5.4), libgbm1 (>= 17.1.0~rc2), libgcrypt20 (>= 1.9.0), libgl1, libpciaccess0 (>= 0.12.902), libpixman-1-0 (>= 0.30.0), libselinux1 (>= 3.1~), libsystemd0, libudev1 (>= 183), libunwind8, libxau6 (>= 1:1.0.9), libxcvt0 (>= 0.1.0), libxdmcp6, libxfont2 (>= 1:2.0.1), libxshmfence1
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Recommends: libgl1-mesa-dri (>= 7.10.2-4), default-logind | logind, xcvt
+Conflicts: xserver-xorg-input-evtouch, xserver-xorg-video-modesetting
+Replaces: xserver-xorg (<< 1:7.7+10~), xserver-xorg-video-modesetting
+Breaks: libgl1-mesa-dri (<< 18.0.5), systemd (<< 226-4~), xserver-xorg (<< 1:7.7+10~)
+Provides: xserver-xorg-video-modesetting, xorg-video-abi-25, xorg-input-abi-24
+
+Package: gstreamer1.0-gl
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 926
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libglib2.0-0 (>= 2.56), libgraphene-1.0-0 (>= 1.5.4), libgstreamer-gl1.0-0 (>= 1.20.0), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libx11-6
+Replaces: gstreamer1.0-plugins-bad (<< 1.15.1)
+Breaks: gstreamer1.0-plugins-bad (<< 1.15.1)
+Provides: gstreamer1.0-videosource, gstreamer1.0-videosink
+
+Package: gnome-todo-common
+Architecture: all
+Version: 3.28.1-6ubuntu1
+APT-ID: 820
+Source: gnome-todo
+Source-Version: 3.28.1-6ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: gnome-todo (<< 3.26.2-2~)
+Breaks: gnome-todo (<< 3.26.2-2~)
+
+Package: libmpg123-0
+Architecture: amd64
+Version: 1.29.3-1build1
+APT-ID: 2966
+Multi-Arch: same
+Source: mpg123
+Source-Version: 1.29.3-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: libdmapsharing-3.0-2
+Architecture: amd64
+Version: 2.9.41-3build2
+APT-ID: 2078
+Multi-Arch: same
+Source: libdmapsharing
+Source-Version: 2.9.41-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-glib1 (>= 0.6.16), libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.41.1), libgstreamer-plugins-base1.0-0 (>= 1.0.6), libgstreamer1.0-0 (>= 1.0.0), libsoup2.4-1 (>= 2.48), zlib1g (>= 1:1.1.4)
+
+Package: libpipewire-0.3-common
+Architecture: all
+Version: 0.3.48-1ubuntu1
+APT-ID: 3259
+Multi-Arch: foreign
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libxcb-icccm4
+Architecture: amd64
+Version: 0.4.1-1.1build2
+APT-ID: 4142
+Multi-Arch: same
+Source: xcb-util-wm
+Source-Version: 0.4.1-1.1build2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.2.5), libxcb1
+
+Package: ibus-gtk3
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 1099
+Multi-Arch: same
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.67.3), libgtk-3-0 (>= 3.12.0), libibus-1.0-5 (>= 1.5.21), libpango-1.0-0 (>= 1.14.0)
+
+Package: ibus-gtk4
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 1100
+Multi-Arch: same
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.46.0~), libgtk-4-1 (>= 4.3.1), libibus-1.0-5 (>= 1.5.21), libpango-1.0-0 (>= 1.14.0)
+
+Package: python3-minimal
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74334
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dpkg (>= 1.13.20)
+Pre-Depends: python3.10-minimal (>= 3.10.6-1~)
+
+Package: python3-minimal
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5320
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: dpkg (>= 1.13.20)
+Pre-Depends: python3.10-minimal (>= 3.10.4-1~)
+
+Package: libmbim-glib4
+Architecture: amd64
+Version: 1.26.2-1build1
+APT-ID: 2894
+Multi-Arch: same
+Source: libmbim
+Source-Version: 1.26.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.56)
+
+Package: libxkbfile1
+Architecture: amd64
+Version: 1:1.1.0-1build3
+APT-ID: 4219
+Multi-Arch: same
+Source: libxkbfile
+Source-Version: 1:1.1.0-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6
+
+Package: fonts-knda
+Architecture: all
+Version: 2:1.3
+APT-ID: 454
+Multi-Arch: foreign
+Source: fonts-knda
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-gubbi, fonts-lohit-knda, fonts-navilu
+Replaces: ttf-kannada-fonts
+Breaks: ttf-kannada-fonts (<< 2:1.0)
+
+Package: gir1.2-freedesktop
+Architecture: amd64
+Version: 1.72.0-1
+APT-ID: 668
+Multi-Arch: same
+Source: gobject-introspection
+Source-Version: 1.72.0-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (= 1.72.0-1)
+Provides: gir1.2-xrandr-1.3 (= 1.72.0-1), gir1.2-xlib-2.0 (= 1.72.0-1), gir1.2-xft-2.0 (= 1.72.0-1), gir1.2-xfixes-4.0 (= 1.72.0-1), gir1.2-vulkan-1.0 (= 1.72.0-1), gir1.2-libxml2-2.0 (= 1.72.0-1), gir1.2-gl-1.0 (= 1.72.0-1), gir1.2-freetype2-2.0 (= 1.72.0-1), gir1.2-fontconfig-2.0 (= 1.72.0-1), gir1.2-dbusglib-1.0 (= 1.72.0-1), gir1.2-dbus-1.0 (= 1.72.0-1), gir1.2-cairo-1.0 (= 1.72.0-1)
+
+Package: libe-book-0.1-1
+Architecture: amd64
+Version: 0.1.3-2build2
+APT-ID: 2106
+Multi-Arch: same
+Source: libe-book
+Source-Version: 0.1.3-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), liblangtag1 (>= 0.5.0), librevenge-0.0-0, libstdc++6 (>= 11), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+
+Package: libayatana-appindicator3-1
+Architecture: amd64
+Version: 0.5.90-7ubuntu2
+APT-ID: 1701
+Source: libayatana-appindicator
+Source-Version: 0.5.90-7ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libayatana-indicator3-7 (>= 0.6.0), libc6 (>= 2.4), libdbusmenu-glib4 (>= 0.4.2), libdbusmenu-gtk3-4 (>= 0.4.2), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0)
+Conflicts: libappindicator3-1
+Replaces: libappindicator3-1
+Provides: libappindicator3-1 (= 12.10)
+
+Package: libgamemode0
+Architecture: amd64
+Version: 1.6.1-1build2
+APT-ID: 2290
+Multi-Arch: same
+Source: gamemode
+Source-Version: 1.6.1-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdbus-1-3 (>= 1.9.14), gamemode-daemon
+
+Package: libpam-systemd
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79609
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libpam0g (>= 0.99.7.1), systemd (= 249.11-0ubuntu3.4), libpam-runtime (>= 1.0.1-6), default-dbus-system-bus | dbus-system-bus, systemd-sysv
+Provides: logind (= 249.11-0ubuntu3.4), default-logind (= 249.11-0ubuntu3.4)
+
+Package: libboost-iostreams1.74.0
+Architecture: amd64
+Version: 1.74.0-14ubuntu3
+APT-ID: 1769
+Multi-Arch: same
+Source: boost1.74
+Source-Version: 1.74.0-14ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), liblzma5 (>= 5.2.2), libstdc++6 (>= 5.2), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+
+Package: sgml-base
+Architecture: all
+Version: 1.30
+APT-ID: 5654
+Multi-Arch: foreign
+Source: sgml-base
+Source-Version: 1.30
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.16.4)
+Suggests: sgml-base-doc
+
+Package: usb-modeswitch-data
+Architecture: all
+Version: 20191128-4
+APT-ID: 5927
+Source: usb-modeswitch-data
+Source-Version: 20191128-4
+Priority: extra
+Section: comm
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: udev, usb-modeswitch (>= 2.4.0)
+Conflicts: usb-modeswitch-data-packed
+Replaces: usb-modeswitch-data-packed
+Breaks: usb-modeswitch (<< 2.4.0)
+Provides: usb-modeswitch-data-packed
+
+Package: fonts-gubbi
+Architecture: all
+Version: 1.3-5build1
+APT-ID: 442
+Multi-Arch: foreign
+Source: fonts-gubbi
+Source-Version: 1.3-5build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libtss2-tcti-device0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3902
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.4), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: libpwquality-common
+Architecture: all
+Version: 1.4.4-1build2
+APT-ID: 3329
+Multi-Arch: foreign
+Source: libpwquality
+Source-Version: 1.4.4-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libpwquality-tools (<< 1.4.1-2~)
+Breaks: libpwquality-tools (<< 1.4.1-2~)
+
+Package: libx11-protocol-perl
+Architecture: all
+Version: 0.56-7.1
+APT-ID: 4097
+Source: libx11-protocol-perl
+Source-Version: 0.56-7.1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+Recommends: perl (>= 5.19.8) | libio-socket-ip-perl
+
+Package: liblzo2-2
+Architecture: amd64
+Version: 2.10-2build3
+APT-ID: 2869
+Multi-Arch: same
+Source: lzo2
+Source-Version: 2.10-2build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libpulsedsp
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 3328
+Multi-Arch: same
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpulse0 (= 1:15.99.1+dfsg1-1ubuntu1)
+
+Package: libwayland-cursor0
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72820
+Multi-Arch: same
+Source: wayland
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28), libwayland-client0 (>= 1.20.0)
+Conflicts: libwayland0 (<< 1.1.0-1)
+Replaces: libwayland0 (<< 1.1.0-1)
+
+Package: fonts-tlwg-garuda
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 517
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-garuda-ttf | fonts-tlwg-garuda-otf
+
+Package: libbrlapi0.8
+Architecture: amd64
+Version: 6.4-4ubuntu3
+APT-ID: 72273
+Multi-Arch: same
+Source: brltty
+Source-Version: 6.4-4ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0
+
+Package: gnome-bluetooth-3-common
+Architecture: all
+Version: 42.0-5
+APT-ID: 779
+Multi-Arch: foreign
+Source: gnome-bluetooth3
+Source-Version: 42.0-5
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-tlwg-purisa
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 529
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-purisa-ttf | fonts-tlwg-purisa-otf
+
+Package: libgnome-todo
+Architecture: amd64
+Version: 3.28.1-6ubuntu1
+APT-ID: 2439
+Source: gnome-todo
+Source-Version: 3.28.1-6ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: gnome-todo (<< 3.26.2-2~)
+Breaks: gnome-todo (<< 3.26.2-2~)
+
+Package: ppp
+Architecture: amd64
+Version: 2.4.9-1+1ubuntu3
+APT-ID: 4959
+Source: ppp
+Source-Version: 2.4.9-1+1ubuntu3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpam-modules, libpam-runtime, procps, libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libpcap0.8 (>= 0.9.8), libssl3 (>= 3.0.0~~alpha1), libsystemd0
+Breaks: network-manager (<< 0.9.8.8-7~), network-manager-pptp (<< 0.9.8.4-3~), pppdcapiplugin (<< 1:3.25+dfsg1-3.4~)
+
+Package: printer-driver-splix
+Architecture: amd64
+Version: 2.0.0+svn315-7fakesync1build3
+APT-ID: 4978
+Source: splix
+Source-Version: 2.0.0+svn315-7fakesync1build3
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcups2 (>= 1.4.0), libcupsimage2 (>= 1.4.0), libgcc-s1 (>= 3.3.1), libjbig0 (>= 2.0), libstdc++6 (>= 5), cups (>= 1.5.0-3~), cups-client, cups-filters (>= 1.0.36)
+Replaces: splix (<< 2.0.0+svn299-1)
+Breaks: splix (<< 2.0.0+svn299-1)
+
+Package: libreoffice-common
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72549
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-style-colibre, ure, ucf (>= 0.8)
+Suggests: libreoffice-style
+Recommends: fonts-liberation2 | ttf-mscorefonts-installer, apparmor (>= 2.13.1~), poppler-data, xdg-utils, python3-uno (>= 4.4.0~beta2), libexttextcat-data
+Conflicts: broffice, libreoffice-base (<< 1:7.0.0~alpha~), libreoffice-base-nogui (<< 1:7.0.0~alpha~), libreoffice-calc (<< 1:7.0.0~alpha~), libreoffice-calc-nogui (<< 1:7.0.0~alpha~), libreoffice-draw (<< 1:7.0.0~alpha~), libreoffice-draw-nogui (<< 1:7.0.0~alpha~), libreoffice-evolution (<< 1:7.0.0~alpha~), libreoffice-filter-mobiledev, libreoffice-gnome (<< 1:7.0.0~alpha~), libreoffice-impress (<< 1:7.0.0~alpha~), libreoffice-impress-nogui (<< 1:7.0.0~alpha~), libreoffice-l10n (<< 7.0), libreoffice-l10n-4.3, libreoffice-l10n-4.4, libreoffice-librelogo (<< 1:7.0.0~alpha~), libreoffice-math (<< 1:7.0.0~alpha~), libreoffice-math-nogui (<< 1:7.0.0~alpha~), libreoffice-report-builder (<< 1:7.0.0~alpha~), libreoffice-sdbc-postgresql (<< 1:7.0.0~alpha~), libreoffice-wiki-publisher (<< 1.2.0+LibO5.4.0~rc2), libreoffice-writer (<< 1:7.0.0~alpha~), libreoffice-writer-nogui (<< 1:7.0.0~alpha~), openoffice.org-unbundled, python3-uno (<< 1:7.0.0~alpha~)
+Replaces: libreoffice-base (<< 1:6.4.0~beta1-2~), libreoffice-pdfimport (<< 1:5.4~), openclipart-libreoffice (<= 1:0.18+dfsg-17)
+Breaks: libreoffice-base (<< 1:6.4.0~beta1-2~), libreoffice-core (>= 1:7.4~), libreoffice-core (<< 1:7.3~), libreoffice-evolution (<< 1:7.0.0~alpha), libreoffice-gnome (<< 1:7.0.0~alpha), libreoffice-help (<< 5.4), libreoffice-help-5.2, libreoffice-l10n (<< 7.0), libreoffice-librelogo (<< 1:7.0.0~alpha), libreoffice-report-builder (<< 1:7.0.0~alpha), libreoffice-sdbc-postgresql (<< 1:7.0.0~alpha), libreoffice-style-andromeda (<< 1:7.3~), libreoffice-style-crystal (>= 1:7.4~), libreoffice-style-crystal (<< 1:7.3~), libreoffice-style-galaxy (>= 1:7.4~), libreoffice-style-galaxy (<< 1:7.3~), libreoffice-style-hicontrast (>= 1:7.4~), libreoffice-style-hicontrast (<< 1:7.3~), libreoffice-style-tango (<< 1:7.0.0~alpha), libreoffice-writer2latex (<< 1.0.2-9), libreoffice-writer2xhtml (<< 1.0.2-9), openclipart-libreoffice (<= 1:0.18+dfsg-17), python3-uno (<< 1:7.0.0~alpha)
+Provides: libreoffice-l10n-en-us
+
+Package: libnl-route-3-200
+Architecture: amd64
+Version: 3.5.0-0.1
+APT-ID: 3070
+Multi-Arch: same
+Source: libnl3
+Source-Version: 3.5.0-0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnl-3-200 (= 3.5.0-0.1), libc6 (>= 2.34)
+
+Package: libmpdec3
+Architecture: amd64
+Version: 2.5.1-2build2
+APT-ID: 2962
+Multi-Arch: same
+Source: mpdecimal
+Source-Version: 2.5.1-2build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+Breaks: libpython3.8-stdlib (<< 2.8.5-2)
+
+Package: apport-gtk
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 71707
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3, python3-apport (>= 2.20.11-0ubuntu82.1), gir1.2-gtk-3.0 (>= 3.1.90), gir1.2-wnck-3.0, python3-gi, apport (>= 0.41), procps, gnome-terminal | x-terminal-emulator, whoopsie-preferences
+Recommends: update-notifier, gdb | gdb-minimal
+
+Package: libselinux1
+Architecture: amd64
+Version: 3.3-1build2
+APT-ID: 3653
+Multi-Arch: same
+Source: libselinux
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpcre2-8-0 (>= 10.22)
+
+Package: libfile-mimeinfo-perl
+Architecture: all
+Version: 0.31-1
+APT-ID: 2225
+Source: libfile-mimeinfo-perl
+Source-Version: 0.31-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libencode-locale-perl, libfile-basedir-perl, libfile-desktopentry-perl, shared-mime-info
+Recommends: libio-stringy-perl
+
+Package: libpeas-common
+Architecture: all
+Version: 1.32.0-1
+APT-ID: 3236
+Multi-Arch: foreign
+Source: libpeas
+Source-Version: 1.32.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: yelp-xsl
+Architecture: all
+Version: 42.0-1
+APT-ID: 6073
+Multi-Arch: foreign
+Source: yelp-xsl
+Source-Version: 42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libgtk3-perl
+Architecture: all
+Version: 0.038-1
+APT-ID: 2538
+Source: libgtk3-perl
+Source-Version: 0.038-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, gir1.2-gdkpixbuf-2.0 (>= 2.38.0+dfsg-5~), gir1.2-gtk-3.0, gir1.2-pango-1.0, libcairo-gobject-perl, libglib-object-introspection-perl (>= 0.043), libglib-perl
+
+Package: libarchive13
+Architecture: amd64
+Version: 3.6.0-1ubuntu1
+APT-ID: 1624
+Multi-Arch: same
+Source: libarchive
+Source-Version: 3.6.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libbz2-1.0, libc6 (>= 2.33), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.2.2), libnettle8, libxml2 (>= 2.7.4), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Suggests: lrzip
+
+Package: python3-lib2to3
+Architecture: all
+Version: 3.10.4-0ubuntu1
+APT-ID: 5298
+Multi-Arch: foreign
+Source: python3-stdlib-extensions
+Source-Version: 3.10.4-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Automatic: yes
+Depends: python3:any (>= 3.10.1-0~), python3:any (<< 3.11)
+Replaces: libpython3.6-stdlib (<< 3.6.4~rc1-2), libpython3.7-stdlib (<< 3.7.0~a3-3), python3.6-2to3 (<< 3.6.4-2), python3.7-2to3 (<< 3.7.0~a3-3)
+Breaks: libpython3.10-stdlib (<< 3.10.0~b1), libpython3.6-stdlib (<< 3.6.4~rc1-2), libpython3.7-stdlib (<< 3.7.0~a3-3), python3.6-2to3 (<< 3.6.4-2), python3.7-2to3 (<< 3.7.0~a3-3)
+Provides: python3.10-lib2to3
+
+Package: avahi-utils
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 75
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (= 0.8-5ubuntu5), libavahi-common3 (= 0.8-5ubuntu5), libc6 (>= 2.34), libgdbm6 (>= 1.16), avahi-daemon (= 0.8-5ubuntu5)
+
+Package: libxmlb2
+Architecture: amd64
+Version: 0.3.6-2build1
+APT-ID: 4241
+Multi-Arch: same
+Source: libxmlb
+Source-Version: 0.3.6-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.53.2), liblzma5 (>= 5.1.1alpha+20120614)
+
+Package: usb.ids
+Architecture: all
+Version: 2022.04.02-1
+APT-ID: 5928
+Multi-Arch: foreign
+Source: usb.ids
+Source-Version: 2022.04.02-1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: usbutils (<< 1:008-1)
+Breaks: usbutils (<< 1:008-1)
+
+Package: liblzma5
+Architecture: amd64
+Version: 5.2.5-2ubuntu1
+APT-ID: 2868
+Multi-Arch: same
+Source: xz-utils
+Source-Version: 5.2.5-2ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~)
+
+Package: sed
+Architecture: amd64
+Version: 4.8-1ubuntu2
+APT-ID: 5648
+Essential: yes
+Multi-Arch: foreign
+Source: sed
+Source-Version: 4.8-1ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+
+Package: libdebuginfod-common
+Architecture: all
+Version: 0.186-1build1
+APT-ID: 2048
+Multi-Arch: foreign
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, ucf
+Pre-Depends: debconf
+
+Package: lsb-base
+Architecture: all
+Version: 11.1.0ubuntu4
+APT-ID: 4600
+Multi-Arch: foreign
+Source: lsb
+Source-Version: 11.1.0ubuntu4
+Priority: important
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libjpeg-turbo8
+Architecture: amd64
+Version: 2.1.2-0ubuntu1
+APT-ID: 2740
+Multi-Arch: same
+Source: libjpeg-turbo
+Source-Version: 2.1.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: libjpeg8 (<< 8c-2ubuntu5)
+Breaks: libjpeg8 (<< 8c-2ubuntu5)
+
+Package: ibus-table
+Architecture: all
+Version: 1.16.7-1
+APT-ID: 1105
+Source: ibus-table
+Source-Version: 1.16.7-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ibus (>= 1.5.22-2~), dconf-gsettings-backend | gsettings-backend, python3:any
+Suggests: ibus-table-array30, ibus-table-cangjie, ibus-table-cangjie-big, ibus-table-cangjie3, ibus-table-cangjie5, ibus-table-cantonese, ibus-table-cantonhk, ibus-table-cns11643, ibus-table-compose, ibus-table-easy, ibus-table-easy-big, ibus-table-emoji, ibus-table-erbi, ibus-table-erbi-qs, ibus-table-ipa-x-sampa, ibus-table-jyutping, ibus-table-latex, ibus-table-quick, ibus-table-quick-classic, ibus-table-quick3, ibus-table-quick5, ibus-table-rustrad, ibus-table-scj6, ibus-table-stroke5, ibus-table-thai, ibus-table-translit, ibus-table-translit-ua, ibus-table-viqr, ibus-table-wu, ibus-table-wubi, ibus-table-yawerty, ibus-table-yong
+Breaks: ibus-table-array30 (<< 1.4.6-Source-2~), ibus-table-cangjie (<< 1.4.6-Source-2~), ibus-table-cangjie-big (<< 1.4.6-Source-2~), ibus-table-cangjie3 (<< 1.4.6-Source-2~), ibus-table-cangjie5 (<< 1.4.6-Source-2~), ibus-table-cantonese (<< 1.4.6-Source-2~), ibus-table-cantonhk (<< 1.4.6-Source-2~), ibus-table-cns11643 (<< 1.3.0.20100528-4~), ibus-table-compose (<< 1.3.0.20100528-4~), ibus-table-easy (<< 1.4.6-Source-2~), ibus-table-easy-big (<< 1.4.6-Source-2~), ibus-table-emoji (<< 1.3.0.20100528-4~), ibus-table-erbi (<< 1.4.6-Source-2~), ibus-table-erbi-qs (<< 1.4.6-Source-2~), ibus-table-ipa-x-sampa (<< 1.3.0.20100528-4~), ibus-table-jyutping (<< 1.4.6-Source-2~), ibus-table-latex (<< 1.3.0.20100528-4~), ibus-table-quick (<< 1.4.6-Source-2~), ibus-table-quick-classic (<< 1.4.6-Source-2~), ibus-table-quick3 (<< 1.4.6-Source-2~), ibus-table-quick5 (<< 1.4.6-Source-2~), ibus-table-rustrad (<< 1.3.0.20100528-4~), ibus-table-scj6 (<< 1.4.6-Source-2~), ibus-table-stroke5 (<< 1.4.6-Source-2~), ibus-table-thai (<< 1.3.0.20100528-4~), ibus-table-translit (<< 1.3.0.20100528-4~), ibus-table-translit-ua (<< 1.3.0.20100528-4~), ibus-table-viqr (<< 1.3.0.20100528-4~), ibus-table-wu (<< 1.4.6-Source-2~), ibus-table-wubi (<< 1.4.6-Source-2~), ibus-table-yawerty (<< 1.3.0.20100528-4~), ibus-table-yong (<< 1.4.6-Source-2~)
+
+Package: libplist3
+Architecture: amd64
+Version: 2.2.0-6build2
+APT-ID: 3270
+Multi-Arch: same
+Source: libplist
+Source-Version: 2.2.0-6build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: tar
+Architecture: amd64
+Version: 1.34+dfsg-1build3
+APT-ID: 5740
+Essential: yes
+Multi-Arch: foreign
+Source: tar
+Source-Version: 1.34+dfsg-1build3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: bzip2, ncompress, xz-utils, tar-scripts, tar-doc
+Conflicts: cpio (<= 2.4.2-38)
+Replaces: cpio (<< 2.4.2-39)
+Breaks: dpkg-dev (<< 1.14.26)
+
+Package: tcl
+Architecture: amd64
+Version: 8.6.11+1build2
+APT-ID: 5743
+Multi-Arch: foreign
+Source: tcltk-defaults
+Source-Version: 8.6.11+1build2
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tcl8.6 (>= 8.6.11+dfsg-1~)
+Breaks: tcl8.3 (<< 8.3.5-15), tcl8.4 (<< 8.4.20-2), tcl8.5 (<< 8.5.14-3), tcl8.6 (<< 8.6.0-2)
+Provides: tclsh
+
+Package: pptp-linux
+Architecture: amd64
+Version: 1.10.0-1build3
+APT-ID: 4962
+Source: pptp-linux
+Source-Version: 1.10.0-1build3
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), ppp
+
+Package: libgspell-1-common
+Architecture: all
+Version: 1.9.1-4
+APT-ID: 2508
+Multi-Arch: foreign
+Source: gspell
+Source-Version: 1.9.1-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libhttp-negotiate-perl
+Architecture: all
+Version: 6.01-1
+APT-ID: 2601
+Source: libhttp-negotiate-perl
+Source-Version: 6.01-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, libhttp-message-perl
+Replaces: libwww-perl (<< 6.00)
+Breaks: libwww-perl (<< 6.00)
+
+Package: pulseaudio
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 4987
+Multi-Arch: foreign
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libapparmor1 (>= 2.6~devel), libasound2 (>= 1.2.1.1), libc6 (>= 2.34), libcap2 (>= 1:2.10), libdbus-1-3 (>= 1.9.14), libfftw3-single3 (>= 3.3.5), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.31.18), libgstreamer-plugins-base1.0-0 (>= 1.10.0), libgstreamer1.0-0 (>= 1.14.0), libice6 (>= 1:1.0.0), libltdl7 (>= 2.4.6), liborc-0.4-0 (>= 1:0.4.25), libpulse0 (= 1:15.99.1+dfsg1-1ubuntu1), libsm6, libsnapd-glib1 (>= 1.49), libsndfile1 (>= 1.0.20), libsoxr0 (>= 0.1.1), libspeexdsp1 (>= 1.2~beta3.2-1), libstdc++6 (>= 11), libsystemd0, libtdb1 (>= 1.2.7+git20101214), libudev1 (>= 183), libwebrtc-audio-processing1, libwrap0 (>= 7.6-4~), libx11-6 (>= 2:1.7.0), libx11-xcb1 (>= 2:1.7.2), libxcb1, libxtst6, adduser, lsb-base (>= 3.2-13), libasound2-plugins, pulseaudio-utils
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: udev, pavumeter, pavucontrol, paprefs, ubuntu-sounds
+Recommends: rtkit, default-logind | logind, dbus-user-session
+
+Package: libgtk2.0-bin
+Architecture: amd64
+Version: 2.24.33-2ubuntu2
+APT-ID: 2535
+Multi-Arch: foreign
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgtk2.0-0 (= 2.24.33-2ubuntu2), libgtk2.0-common, gtk-update-icon-cache
+
+Package: libnatpmp1
+Architecture: amd64
+Version: 20150609-7.1build2
+APT-ID: 2994
+Multi-Arch: same
+Source: libnatpmp
+Source-Version: 20150609-7.1build2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7)
+Suggests: minissdpd, natpmpc
+
+Package: ucf
+Architecture: all
+Version: 3.0043
+APT-ID: 5904
+Multi-Arch: foreign
+Source: ucf
+Source-Version: 3.0043
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91), sensible-utils
+
+Package: ufw
+Architecture: all
+Version: 0.36.1-4build1
+APT-ID: 5908
+Source: ufw
+Source-Version: 0.36.1-4build1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: iptables, lsb-base (>= 3.0-6), ucf, python3:any, debconf (>= 0.5) | debconf-2.0
+Suggests: rsyslog
+
+Package: libavahi-common-data
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1685
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-lazr.restfulclient
+Architecture: all
+Version: 0.14.4-1
+APT-ID: 5292
+Source: lazr.restfulclient
+Source-Version: 0.14.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-httplib2 (>= 0.7.7), python3-lazr.uri, python3-wadllib (>= 1.1.4), python3-distro, python3-oauthlib, python3-pkg-resources, python3-six, python3:any
+
+Package: libcolord2
+Architecture: amd64
+Version: 1.4.6-1
+APT-ID: 1925
+Multi-Arch: same
+Source: colord
+Source-Version: 1.4.6-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libglib2.0-0 (>= 2.58), liblcms2-2 (>= 2.6), libudev1 (>= 196)
+Suggests: colord
+
+Package: ure
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 74535
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: uno-libs-private (= 1:7.3.6-0ubuntu0.22.04.1), libc6 (>= 2.34), libgcc-s1 (>= 3.0), libicu70 (>= 70.1-1~), liblangtag1 (>= 0.4.0), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 4.0.0~alpha), libuno-purpenvhelpergcc3-3 (>= 1.4.0), libuno-sal3 (>= 5.3.0~alpha), libuno-salhelpergcc3-3 (>= 3.6.0~beta), libxml2 (>= 2.8)
+Replaces: libjuh-java (<< 1:6.4.0~rc1-6), libjurt-java (<< 1:6.4.0~rc1-6), libreoffice-common (<< 1:4.5.0), libreoffice-core (<< 1:5.3.0~beta1~), libridl-java (<< 1:6.4.0~rc1-6), libunoloader-java (<< 1:6.4.0~rc1-6), ure-java (<< 1:7.1.1~rc2-1)
+Breaks: libjuh-java (<< 1:6.4.0~rc1-6), libjurt-java (<< 1:6.4.0~rc1-6), libreoffice-common (<< 1:4.5.0), libreoffice-core (<< 1:7.2.0~), libreoffice-core-nogui (<< 1:7.2.0~), libridl-java (<< 1:6.4.0~rc1-6), libunoloader-java (<< 1:6.4.0~rc1-6), ure-java (<< 1:7.1.1~rc2-1)
+
+Package: libfont-afm-perl
+Architecture: all
+Version: 1.20-3
+APT-ID: 2240
+Source: libfont-afm-perl
+Source-Version: 1.20-3
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libcap2-bin
+Architecture: amd64
+Version: 1:2.44-1build3
+APT-ID: 1852
+Multi-Arch: foreign
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.33)
+Recommends: libpam-cap
+Replaces: libcap-bin
+Breaks: libcap-bin
+
+Package: python3-venv
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78610
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10-venv (>= 3.10.6-1~), python3 (= 3.10.6-1~22.04), python3-distutils (>= 3.10.6-1~)
+
+Package: python3-venv
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 58240
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10-venv (>= 3.10.4-1~), python3 (= 3.10.4-0ubuntu2), python3-distutils (>= 3.9.10-2~)
+
+Package: whiptail
+Architecture: amd64
+Version: 0.52.21-5ubuntu2
+APT-ID: 5965
+Multi-Arch: foreign
+Source: newt
+Source-Version: 0.52.21-5ubuntu2
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libnewt0.52 (>= 0.52.21), libpopt0 (>= 1.14), libslang2 (>= 2.2.4)
+
+Package: gir1.2-glib-2.0
+Architecture: amd64
+Version: 1.72.0-1
+APT-ID: 683
+Multi-Arch: same
+Source: gobject-introspection
+Source-Version: 1.72.0-1
+Priority: required
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgirepository-1.0-1 (>= 1.72.0), libglib2.0-0 (>= 2.71.2)
+Provides: gir1.2-gobject-2.0 (= 1.72.0-1), gir1.2-gmodule-2.0 (= 1.72.0-1), gir1.2-girepository-2.0 (= 1.72.0-1), gir1.2-gio-2.0 (= 1.72.0-1)
+
+Package: base-passwd
+Architecture: amd64
+Version: 3.5.52build1
+APT-ID: 87
+Essential: yes
+Multi-Arch: foreign
+Source: base-passwd
+Source-Version: 3.5.52build1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libdebconfclient0 (>= 0.145)
+Recommends: debconf (>= 0.5) | debconf-2.0
+Replaces: base
+
+Package: libcrack2
+Architecture: amd64
+Version: 2.9.6-3.4build4
+APT-ID: 1944
+Multi-Arch: same
+Source: cracklib2
+Source-Version: 2.9.6-3.4build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Recommends: cracklib-runtime
+Breaks: cracklib-runtime (<< 2.9.2-4)
+
+Package: libsasl2-modules
+Architecture: amd64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3637
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libssl3 (>= 3.0.0~~alpha1)
+Suggests: libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal, libsasl2-modules-ldap, libsasl2-modules-otp, libsasl2-modules-sql
+Breaks: logcheck-database (<= 1.3.16~)
+
+Package: libxcb-dri2-0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4134
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: ghostscript-x
+Architecture: amd64
+Version: 9.55.0~dfsg1-0ubuntu5
+APT-ID: 633
+Source: ghostscript
+Source-Version: 9.55.0~dfsg1-0ubuntu5
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ghostscript (= 9.55.0~dfsg1-0ubuntu5), libc6 (>= 2.14), libx11-6, libxt6
+
+Package: libgpod4
+Architecture: amd64
+Version: 0.8.3-16build2
+APT-ID: 2486
+Multi-Arch: same
+Source: libgpod
+Source-Version: 0.8.3-16build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.18), libimobiledevice6 (>= 1.3.0), libplist3 (>= 2.2.0), libsqlite3-0 (>= 3.5.9), libxml2 (>= 2.7.4), zlib1g (>= 1:1.2.0)
+Recommends: libgpod-common
+Replaces: libgpod4-nogtk (<< 0.8.3-8.1~)
+Breaks: libgpod4-nogtk (<< 0.8.3-8.1~)
+
+Package: gir1.2-nma-1.0
+Architecture: amd64
+Version: 1.8.34-1ubuntu1
+APT-ID: 733
+Multi-Arch: same
+Source: libnma
+Source-Version: 1.8.34-1ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gtk-3.0, gir1.2-nm-1.0, libnma0 (>= 1.8.28)
+
+Package: libsasl2-2
+Architecture: amd64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3635
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsasl2-modules-db (>= 2.1.27+dfsg2-3ubuntu1), libc6 (>= 2.34)
+Recommends: libsasl2-modules (>= 2.1.27+dfsg2-3ubuntu1)
+Replaces: libsasl2
+Breaks: postfix (<= 2.8.3-1), slapd (<= 2.4.25-3)
+
+Package: libxcb-dri3-0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4136
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1 (>= 1.12)
+
+Package: geoclue-2.0
+Architecture: amd64
+Version: 2.5.7-3ubuntu3
+APT-ID: 619
+Source: geoclue-2.0
+Source-Version: 2.5.7-3ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-glib1 (>= 0.6.16), libc6 (>= 2.34), libglib2.0-0 (>= 2.44.0), libjson-glib-1.0-0 (>= 1.5.2), libmm-glib0 (>= 1.6), libnotify4 (>= 0.7.0), libsoup2.4-1 (>= 2.42)
+Recommends: avahi-daemon, iio-sensor-proxy, modemmanager, wpasupplicant
+Replaces: geoclue (>= 2.0), geoclue-2-demo (<< 2.4.12-2~)
+Breaks: geoclue (>= 2.0), geoclue-2-demo (<< 2.4.12-2~)
+
+Package: libcairo2
+Architecture: amd64
+Version: 1.16.0-5ubuntu2
+APT-ID: 1832
+Multi-Arch: same
+Source: cairo
+Source-Version: 1.16.0-5ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.9.1), libpixman-1-0 (>= 0.30.0), libpng16-16 (>= 1.6.2-1), libx11-6, libxcb-render0, libxcb-shm0, libxcb1 (>= 1.6), libxext6, libxrender1, zlib1g (>= 1:1.1.4)
+Breaks: libwebkit2gtk-3.0-25 (<< 2.4.5-2~), libwebkitgtk-1.0-0 (<< 2.4.5-2~), libwebkitgtk-3.0-0 (<< 2.4.5-2~), weston (<< 1.5.0-3~)
+
+Package: libgbm1
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72362
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm2 (>= 2.4.75), libexpat1 (>= 2.0.1), libstdc++6 (>= 4.1.1), libwayland-server0 (>= 1.15.0)
+
+Package: hyphen-en-us
+Architecture: all
+Version: 2.8.8-7build2
+APT-ID: 1058
+Multi-Arch: foreign
+Source: hyphen
+Source-Version: 2.8.8-7build2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: dictionaries-common
+Suggests: libreoffice-writer
+Provides: hyphen-hyphenation-patterns-en-us, hyphen-hyphenation-patterns-en, hyphen-hyphenation-patterns
+
+Package: python3-lockfile
+Architecture: all
+Version: 1:0.12.2-2.2
+APT-ID: 5302
+Source: python-lockfile
+Source-Version: 1:0.12.2-2.2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-lockfile-doc
+
+Package: libgexiv2-2
+Architecture: amd64
+Version: 0.14.0-1build1
+APT-ID: 2354
+Multi-Arch: same
+Source: gexiv2
+Source-Version: 0.14.0-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libexiv2-27 (>= 0.27.5), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.37.3), libstdc++6 (>= 11)
+
+Package: libpciaccess0
+Architecture: amd64
+Version: 0.16-3
+APT-ID: 3219
+Multi-Arch: same
+Source: libpciaccess
+Source-Version: 0.16-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), zlib1g (>= 1:1.1.4)
+Suggests: pciutils
+
+Package: libatm1
+Architecture: amd64
+Version: 1:2.5.1-4build2
+APT-ID: 1663
+Multi-Arch: same
+Source: linux-atm
+Source-Version: 1:2.5.1-4build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: xxd
+Architecture: amd64
+Version: 2:8.2.3995-1ubuntu2.1
+APT-ID: 74562
+Multi-Arch: foreign
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2.1
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: vim-common (<< 2:7.4.2347-1~)
+Breaks: vim-common (<< 2:7.4.2347-1~)
+
+Package: python3-ibus-1.0
+Architecture: all
+Version: 1.5.26-4
+APT-ID: 5262
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, gir1.2-ibus-1.0, python3-gi (>= 3.8)
+Replaces: gir1.2-ibus-1.0 (<< 1.5.21-4~exp1)
+Breaks: gir1.2-ibus-1.0 (<< 1.5.21-4~exp1)
+
+Package: gstreamer1.0-clutter-3.0
+Architecture: amd64
+Version: 3.0.27-2ubuntu1
+APT-ID: 71891
+Multi-Arch: same
+Source: clutter-gst-3.0
+Source-Version: 3.0.27-2ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libclutter-1.0-0 (>= 1.20.0), libclutter-gst-3.0-0 (>= 3.0.4), libglib2.0-0 (>= 2.37.3), libgstreamer1.0-0 (>= 1.4.0), libx11-6
+
+Package: libxcursor1
+Architecture: amd64
+Version: 1:1.2.0-2build4
+APT-ID: 4192
+Multi-Arch: same
+Source: libxcursor
+Source-Version: 1:1.2.0-2build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.4.99.1), libxfixes3, libxrender1
+
+Package: libclucene-contribs1v5
+Architecture: amd64
+Version: 2.3.3.4+dfsg-1ubuntu5
+APT-ID: 1896
+Multi-Arch: same
+Source: clucene-core
+Source-Version: 2.3.3.4+dfsg-1ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libclucene-core1v5 (>= 2.3.3.4+dfsg), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4)
+Conflicts: libclucene-contribs1
+Replaces: libclucene-contribs1
+
+Package: libkpathsea6
+Architecture: amd64
+Version: 2021.20210626.59705-1build1
+APT-ID: 2779
+Multi-Arch: same
+Source: texlive-bin
+Source-Version: 2021.20210626.59705-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Breaks: texlive-binaries (<< 2014)
+
+Package: deja-dup
+Architecture: amd64
+Version: 42.9-1ubuntu3
+APT-ID: 71765
+Source: deja-dup
+Source-Version: 42.9-1ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: duplicity (>= 0.7.14), dconf-gsettings-backend | gsettings-backend, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.65.1), libgpg-error0 (>= 1.14), libgtk-3-0 (>= 3.22), libhandy-1-0 (>= 1.5.90), libjson-glib-1.0-0 (>= 1.5.2), libpackagekit-glib2-18 (>= 1.1.0), libsecret-1-0 (>= 0.18.6), libsoup2.4-1 (>= 2.48)
+Suggests: python3-pydrive
+Recommends: gvfs-backends, packagekit, policykit-1
+
+Package: apturl-common
+Architecture: amd64
+Version: 0.5.2ubuntu22
+APT-ID: 56
+Source: apturl
+Source-Version: 0.5.2ubuntu22
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-apt, python3-update-manager
+Replaces: apturl (<< 0.3.6ubuntu2)
+
+Package: libgdm1
+Architecture: amd64
+Version: 42.0-1ubuntu7
+APT-ID: 72375
+Source: gdm3
+Source-Version: 42.0-1ubuntu7
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libglib2.0-0 (>= 2.44.0), libsystemd0
+Replaces: gdm3 (<< 3.18.0-3~)
+Breaks: gdm3 (<< 3.18.0-3~)
+
+Package: libvorbisfile3
+Architecture: amd64
+Version: 1.3.7-1build2
+APT-ID: 4023
+Multi-Arch: same
+Source: libvorbis
+Source-Version: 1.3.7-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libogg0 (>= 1.1.0), libvorbis0a (= 1.3.7-1build2)
+
+Package: libexpat1
+Architecture: amd64
+Version: 2.4.7-1
+APT-ID: 2185
+Multi-Arch: same
+Source: expat
+Source-Version: 2.4.7-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+
+Package: libgtop-2.0-11
+Architecture: amd64
+Version: 2.40.0-2build3
+APT-ID: 2546
+Multi-Arch: same
+Source: libgtop2
+Source-Version: 2.40.0-2build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.18.0), libxau6 (>= 1:1.0.9), libgtop2-common (>= 2.40.0-2build3)
+
+Package: gir1.2-gdkpixbuf-2.0
+Architecture: amd64
+Version: 2.42.8+dfsg-1ubuntu0.1
+APT-ID: 71832
+Multi-Arch: same
+Source: gdk-pixbuf
+Source-Version: 2.42.8+dfsg-1ubuntu0.1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.3), libgdk-pixbuf-2.0-0 (>= 2.39.2)
+Breaks: libgtk3-perl (<< 0.034-2~)
+Provides: gir1.2-gdkpixdata-2.0 (= 2.42.8+dfsg-1ubuntu0.1)
+
+Package: grub-pc-bin
+Architecture: amd64
+Version: 2.06-2ubuntu7
+APT-ID: 914
+Multi-Arch: foreign
+Source: grub2
+Source-Version: 2.06-2ubuntu7
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.36), grub-common (= 2.06-2ubuntu7)
+Suggests: desktop-base (>= 4.0.6)
+Replaces: grub-common (<= 1.97~beta2-1), grub-pc (<< 1.99-1), grub2 (<< 2.06-2ubuntu7)
+
+Package: libdb5.3
+Architecture: amd64
+Version: 5.3.28+dfsg1-0.8ubuntu3
+APT-ID: 2004
+Multi-Arch: same
+Source: db5.3
+Source-Version: 5.3.28+dfsg1-0.8ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: bluez-cups
+Architecture: amd64
+Version: 5.64-0ubuntu1
+APT-ID: 137
+Source: bluez
+Source-Version: 5.64-0ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.28), cups
+
+Package: xdg-desktop-portal-gtk
+Architecture: amd64
+Version: 1.14.0-1build1
+APT-ID: 6021
+Multi-Arch: foreign
+Source: xdg-desktop-portal-gtk
+Source-Version: 1.14.0-1build1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus-user-session | dbus-x11, gsettings-desktop-schemas, xdg-desktop-portal (>= 1.14.0), libc6 (>= 2.34), libfontconfig1 (>= 2.12.6), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.55.1), libgtk-3-0 (>= 3.21.5)
+Suggests: accountsservice, evince, xdg-desktop-portal-gnome
+Provides: xdg-desktop-portal-backend (= 1.14.0)
+
+Package: zip
+Architecture: amd64
+Version: 3.0-12build2
+APT-ID: 6080
+Multi-Arch: foreign
+Source: zip
+Source-Version: 3.0-12build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34)
+Recommends: unzip
+
+Package: libgcab-1.0-0
+Architecture: amd64
+Version: 1.4-3build2
+APT-ID: 2296
+Multi-Arch: same
+Source: gcab
+Source-Version: 1.4-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.61.2), zlib1g (>= 1:1.1.4)
+
+Package: libp11-kit0
+Architecture: amd64
+Version: 0.24.0-6build1
+APT-ID: 3163
+Multi-Arch: same
+Source: p11-kit
+Source-Version: 0.24.0-6build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libffi8 (>= 3.4)
+Breaks: opencryptoki (<= 3.6.1+dfsg-1)
+
+Package: python3-jeepney
+Architecture: all
+Version: 0.7.1-3
+APT-ID: 5276
+Source: jeepney
+Source-Version: 0.7.1-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: libpython3.10-minimal
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72534
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libssl3 (>= 3.0.0~~alpha1)
+Recommends: libpython3.10-stdlib
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: libpython3.10-minimal
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79376
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libssl3 (>= 3.0.0~~alpha1)
+Recommends: libpython3.10-stdlib
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: libpython3.10-minimal
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 3340
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libssl3 (>= 3.0.0~~alpha1)
+Recommends: libpython3.10-stdlib
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: fonts-lohit-gujr
+Architecture: all
+Version: 2.92.4-4
+APT-ID: 463
+Multi-Arch: foreign
+Source: fonts-lohit-gujr
+Source-Version: 2.92.4-4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-gujarati-fonts (<= 1:0.5.12)
+Breaks: ttf-gujarati-fonts (<= 1:0.5.12)
+
+Package: libavahi-core7
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1691
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-common3 (= 0.8-5ubuntu5), libc6 (>= 2.15)
+
+Package: fonts-lohit-guru
+Architecture: all
+Version: 2.91.2-2build1
+APT-ID: 464
+Multi-Arch: foreign
+Source: fonts-lohit-guru
+Source-Version: 2.91.2-2build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-punjabi-fonts (<= 1:0.5.12)
+Breaks: ttf-punjabi-fonts (<= 1:0.5.12)
+
+Package: libijs-0.35
+Architecture: amd64
+Version: 0.35-15build2
+APT-ID: 2640
+Multi-Arch: same
+Source: ijs
+Source-Version: 0.35-15build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: librdf0
+Architecture: amd64
+Version: 1.0.17-1.1ubuntu3
+APT-ID: 3382
+Multi-Arch: same
+Source: redland
+Source-Version: 1.0.17-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libdb5.3, libltdl7 (>= 2.4.6), libraptor2-0 (>= 2.0.14), librasqal3 (>= 0.9.31)
+Suggests: librdf-storage-postgresql, librdf-storage-mysql, librdf-storage-sqlite, librdf-storage-virtuoso, redland-utils
+
+Package: fonts-tlwg-norasi-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 528
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-norasi (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-norasi (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-norasi (<< 1:0.6.2-2)
+
+Package: libfwupd2
+Architecture: amd64
+Version: 1.7.5-3
+APT-ID: 2281
+Multi-Arch: same
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libcurl3-gnutls (>= 7.63.0), libglib2.0-0 (>= 2.53.2), libjcat1 (>= 0.1.0), libjson-glib-1.0-0 (>= 1.5.2)
+
+Package: libapt-pkg6.0
+Architecture: amd64
+Version: 2.4.7
+APT-ID: 72265
+Multi-Arch: same
+Source: apt
+Source-Version: 2.4.7
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r127), liblzma5 (>= 5.1.1alpha+20120614), libstdc++6 (>= 11), libsystemd0 (>= 221), libudev1 (>= 183), libxxhash0 (>= 0.7.1), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.2.2.3)
+Recommends: apt (>= 2.4.7)
+Breaks: appstream (<< 0.9.0-3~), apt (<< 1.6~), aptitude (<< 0.8.9), dpkg (<< 1.20.8), libapt-inst1.5 (<< 0.9.9~)
+Provides: libapt-pkg (= 2.4.7)
+
+Package: ubuntu-drivers-common
+Architecture: amd64
+Version: 1:0.9.6.1
+APT-ID: 5886
+Source: ubuntu-drivers-common
+Source-Version: 1:0.9.6.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), debconf (>= 0.5.00) | debconf-2.0, libc6 (>= 2.34), libdrm2 (>= 2.3.1), libkmod2 (>= 5~), libpci3 (>= 1:3.5.1), python3-apt, python3-xkit, python3-click, udev (>= 204-0ubuntu4~), pciutils, usbutils, kmod | module-init-tools
+Pre-Depends: dpkg (>= 1.15.7.2)
+Suggests: python3-aptdaemon.pkcompat
+Conflicts: jockey-common, jockey-gtk, jockey-kde, nvidia-common (<< 1:0.2.46)
+Replaces: jockey-common, jockey-gtk, jockey-kde, nvidia-common (<< 1:0.2.46)
+Breaks: nvidia-prime (<< 0.6)
+Provides: nvidia-common, jockey-kde, jockey-gtk, jockey-common
+
+Package: python3-ptyprocess
+Architecture: all
+Version: 0.7.0-3
+APT-ID: 5408
+Source: ptyprocess
+Source-Version: 0.7.0-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: fonts-tlwg-typo-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 538
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-typo (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-typo (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-typo (<< 1:0.6.2-2)
+
+Package: libxmuu1
+Architecture: amd64
+Version: 2:1.1.3-3
+APT-ID: 4253
+Multi-Arch: same
+Source: libxmu
+Source-Version: 2:1.1.3-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6
+
+Package: libcdio-cdda2
+Architecture: amd64
+Version: 10.2+2.0.0-1build3
+APT-ID: 1861
+Multi-Arch: same
+Source: libcdio-paranoia
+Source-Version: 10.2+2.0.0-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcdio19 (>= 2.1.0)
+
+Package: ubuntu-release-upgrader-gtk
+Architecture: all
+Version: 1:22.04.14
+APT-ID: 74532
+Source: ubuntu-release-upgrader
+Source-Version: 1:22.04.14
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, ubuntu-release-upgrader-core (= 1:22.04.14), update-manager, python3-distupgrade (= 1:22.04.14), python3-dbus, python3-gi (>= 3.8), gir1.2-vte-2.91, gir1.2-gtk-3.0, gir1.2-webkit2-4.0
+
+Package: remmina-plugin-rdp
+Architecture: amd64
+Version: 1.4.25+dfsg-1
+APT-ID: 5594
+Multi-Arch: same
+Source: remmina
+Source-Version: 1.4.25+dfsg-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.6.0), libcups2 (>= 1.6.0), libfreerdp-client2-2 (>= 2.2.0~), libfreerdp2-2 (>= 2.3.0+dfsg1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.67.3), libgtk-3-0 (>= 3.21.4), libwinpr2-2 (>= 2.1.0+dfsg1), libx11-6, remmina (= 1.4.25+dfsg-1)
+
+Package: initramfs-tools-bin
+Architecture: amd64
+Version: 0.140ubuntu13
+APT-ID: 1126
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libudev1 (>= 183)
+
+Package: libefivar1
+Architecture: amd64
+Version: 37-6ubuntu2
+APT-ID: 2136
+Multi-Arch: same
+Source: efivar
+Source-Version: 37-6ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: efibootmgr (<< 0.12-2)
+
+Package: pulseaudio-utils
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 4989
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpulse0 (= 1:15.99.1+dfsg1-1ubuntu1), libsndfile1 (>= 1.0.20), libx11-6, libx11-xcb1 (>= 2:1.7.2), libxcb1, libpulsedsp
+Suggests: avahi-daemon, pulseaudio
+Replaces: pulseaudio (<< 1:14.2-3~)
+Breaks: pulseaudio (<< 1:14.2-3~)
+
+Package: libmozjs-91-0
+Architecture: amd64
+Version: 91.10.0-0ubuntu1
+APT-ID: 72459
+Multi-Arch: same
+Source: mozjs91
+Source-Version: 91.10.0-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.4), libicu70 (>= 70.1-1~), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4), tzdata
+
+Package: apparmor
+Architecture: amd64
+Version: 3.0.4-2ubuntu2.1
+APT-ID: 71703
+Source: apparmor
+Source-Version: 3.0.4-2ubuntu2.1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf, lsb-base, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34)
+Suggests: apparmor-profiles-extra, apparmor-utils
+Replaces: fcitx-data (<< 1:4.2.9.1-1ubuntu2)
+Breaks: apparmor-profiles-extra (<< 1.21), fcitx-data (<< 1:4.2.9.1-1ubuntu2), snapd (<< 2.44.3+20.04~)
+
+Package: xdg-desktop-portal-gnome
+Architecture: amd64
+Version: 42.1-0ubuntu1
+APT-ID: 74550
+Multi-Arch: foreign
+Source: xdg-desktop-portal-gnome
+Source-Version: 42.1-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus-user-session | dbus-x11, gsettings-desktop-schemas, xdg-desktop-portal (>= 1.7.1), xdg-desktop-portal-gtk, libadwaita-1-0 (>= 1.0.0), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.12.6), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.55.1), libgnome-bg-4-1 (>= 3.17.92), libgnome-desktop-4-1 (>= 3.17.92), libgtk-4-1 (>= 4.0.0), libx11-6
+Suggests: accountsservice, evince
+Recommends: gnome-shell (>= 41~) | budgie-desktop (>= 10.5.3-3~), gnome-settings-daemon (>= 41~)
+Provides: xdg-desktop-portal-backend (= 1.7.1)
+
+Package: libsnapd-glib1
+Architecture: amd64
+Version: 1.60-0ubuntu1
+APT-ID: 3692
+Multi-Arch: same
+Source: snapd-glib
+Source-Version: 1.60-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.67.1), libjson-glib-1.0-0 (>= 1.5.2), libsoup2.4-1 (>= 2.39.2)
+Suggests: snapd
+
+Package: at-spi2-core
+Architecture: amd64
+Version: 2.44.0-3
+APT-ID: 60
+Multi-Arch: foreign
+Source: at-spi2-core
+Source-Version: 2.44.0-3
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.67.4), libsystemd0, libx11-6, libxtst6, gsettings-desktop-schemas
+
+Package: usb-creator-gtk
+Architecture: all
+Version: 0.3.13
+APT-ID: 5925
+Source: usb-creator
+Source-Version: 0.3.13
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), usb-creator-common (= 0.3.13), python3-gi, gir1.2-gtk-3.0, gir1.2-gudev-1.0, gir1.2-pango-1.0, gir1.2-glib-2.0, gir1.2-unity-7.0, python3-dbus
+
+Package: libdeflate0
+Architecture: amd64
+Version: 1.10-2
+APT-ID: 2058
+Multi-Arch: same
+Source: libdeflate
+Source-Version: 1.10-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libcogl20
+Architecture: amd64
+Version: 1.22.8-3build1
+APT-ID: 1918
+Multi-Arch: same
+Source: cogl
+Source-Version: 1.22.8-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgl1, libc6 (>= 2.17), libcairo2 (>= 1.10), libdrm2 (>= 2.4.17), libegl1, libgbm1 (>= 8.1~0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.32.0), libwayland-client0 (>= 1.20.0), libwayland-egl1 (>= 1.15.0), libwayland-server0 (>= 1.2.0), libx11-6, libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxrandr2 (>= 2:1.2.0)
+Suggests: libgles2
+Recommends: libcogl-common
+Breaks: libclutter-1.0-0 (<< 1.17)
+
+Package: libatk-bridge2.0-0
+Architecture: amd64
+Version: 2.38.0-3
+APT-ID: 1652
+Multi-Arch: same
+Source: at-spi2-atk
+Source-Version: 2.38.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 2.36.0~), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.7), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.41.1)
+
+Package: libgif7
+Architecture: amd64
+Version: 5.1.9-2build2
+APT-ID: 2366
+Multi-Arch: same
+Source: giflib
+Source-Version: 5.1.9-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libjpeg8
+Architecture: amd64
+Version: 8c-2ubuntu10
+APT-ID: 2743
+Multi-Arch: same
+Source: libjpeg8-empty
+Source-Version: 8c-2ubuntu10
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libjpeg-turbo8 (>= 1.1.90+svn722-1ubuntu6)
+
+Package: libmutter-10-0
+Architecture: amd64
+Version: 42.2-0ubuntu1
+APT-ID: 72461
+Multi-Arch: same
+Source: mutter
+Source-Version: 42.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adwaita-icon-theme, gsettings-desktop-schemas (>= 40~alpha), mutter-common (>= 42.2-0ubuntu1), libatk1.0-0 (>= 2.2.0), libc6 (>= 2.34), libcairo-gobject2 (>= 1.12.16), libcairo2 (>= 1.14.0), libcanberra0 (>= 0.2), libdrm2 (>= 2.4.71), libegl1, libfontconfig1 (>= 2.12.6), libfribidi0 (>= 1.0.0), libgbm1 (>= 17.3.0~rc1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgl1, libglib2.0-0 (>= 2.70.0), libgnome-desktop-3-19 (>= 3.36.0), libgraphene-1.0-0 (>= 1.10.0), libgtk-3-0 (>= 3.19.12), libgudev-1.0-0 (>= 232), libice6 (>= 1:1.0.0), libinput10 (>= 1.19.0), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.46.0), libpangocairo-1.0-0 (>= 1.46.0), libpangoft2-1.0-0 (>= 1.46.0), libpipewire-0.3-0 (>= 0.3.33), libsm6, libstartup-notification0 (>= 0.11), libsystemd0 (>= 226), libudev1 (>= 183), libwacom9 (>= 2.0.0), libwayland-server0 (>= 1.20.0), libx11-6 (>= 2:1.7.0), libx11-xcb1 (>= 2:1.7.5), libxau6 (>= 1:1.0.9), libxcb-randr0 (>= 1.3), libxcb-res0 (>= 1.10), libxcb1, libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6 (>= 2:1.3.0), libxfixes3 (>= 1:6.0.0), libxi6 (>= 2:1.6.99.1), libxinerama1 (>= 2:1.1.4), libxkbcommon-x11-0 (>= 0.5.0), libxkbcommon0 (>= 0.5.0), libxkbfile1 (>= 1:1.1.0), libxrandr2 (>= 2:1.5.0), libxtst6
+Breaks: apparmor (<< 2.13.3-5~), gnome-control-center (<< 1:3.25.2), gnome-settings-daemon (<< 3.31.101), gnome-shell (<< 42~rc), libgtk-3-0 (<< 3.24.33-1ubuntu2~), libgtk-4-1 (<< 4.6.3+ds1-0ubuntu1~)
+
+Package: patch
+Architecture: amd64
+Version: 2.7.6-7build2
+APT-ID: 4857
+Multi-Arch: foreign
+Source: patch
+Source-Version: 2.7.6-7build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: ed, diffutils-doc
+
+Package: libdee-1.0-4
+Architecture: amd64
+Version: 1.2.7+17.10.20170616-6ubuntu4
+APT-ID: 2054
+Multi-Arch: same
+Source: dee
+Source-Version: 1.2.7+17.10.20170616-6ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.68.0), libicu70 (>= 70.1-1~)
+Replaces: libdee-1.0-1
+Breaks: libdee-1.0-1 (<< 0.5.22-1)
+
+Package: libfido2-1
+Architecture: amd64
+Version: 1.10.0-1
+APT-ID: 2214
+Multi-Arch: same
+Source: libfido2
+Source-Version: 1.10.0-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcbor0.8 (>= 0.5.0), libssl3 (>= 3.0.0~~alpha1), libudev1 (>= 183), zlib1g (>= 1:1.2.0)
+
+Package: x11-common
+Architecture: all
+Version: 1:7.7+23ubuntu2
+APT-ID: 5989
+Multi-Arch: foreign
+Source: xorg
+Source-Version: 1:7.7+23ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-base (>= 1.3-9ubuntu2)
+
+Package: libiec61883-0
+Architecture: amd64
+Version: 1.2.0-4build3
+APT-ID: 2636
+Multi-Arch: same
+Source: libiec61883
+Source-Version: 1.2.0-4build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libraw1394-11 (>= 2.1.2)
+
+Package: kmod
+Architecture: amd64
+Version: 29-1ubuntu1
+APT-ID: 1176
+Multi-Arch: foreign
+Source: kmod
+Source-Version: 29-1ubuntu1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.1.1alpha+20120614), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0), libkmod2 (= 29-1ubuntu1), lsb-base
+
+Package: os-prober
+Architecture: amd64
+Version: 1.79ubuntu2
+APT-ID: 4832
+Source: os-prober
+Source-Version: 1.79ubuntu2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), grub-common, mount
+
+Package: firmware-sof-signed
+Architecture: all
+Version: 2.0-1ubuntu3
+APT-ID: 75025
+Source: firmware-sof
+Source-Version: 2.0-1ubuntu3
+Priority: optional
+Section: restricted/kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=restricted,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=restricted,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: linux-firmware (<= 1.202)
+Breaks: linux-firmware (<= 1.202)
+
+Package: bluez-obexd
+Architecture: amd64
+Version: 5.64-0ubuntu1
+APT-ID: 138
+Source: bluez
+Source-Version: 5.64-0ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.35.9), libical3 (>= 3.0.0)
+Recommends: dbus-user-session
+Conflicts: obexd-client, obexd-server
+Replaces: obexd-client, obexd-server
+
+Package: libtss2-tcti-swtpm0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3904
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.14), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: busybox-static
+Architecture: amd64
+Version: 1:1.30.1-7ubuntu3
+APT-ID: 152
+Source: busybox
+Source-Version: 1:1.30.1-7ubuntu3
+Priority: standard
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: busybox
+Replaces: busybox
+Provides: busybox
+
+Package: liblouis20
+Architecture: amd64
+Version: 3.20.0-2ubuntu0.1
+APT-ID: 72453
+Multi-Arch: same
+Source: liblouis
+Source-Version: 3.20.0-2ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), liblouis-data
+
+Package: liblangtag-common
+Architecture: all
+Version: 0.6.3-2ubuntu1
+APT-ID: 2788
+Multi-Arch: foreign
+Source: liblangtag
+Source-Version: 0.6.3-2ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: cups-client
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71756
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, cups-common (>= 2.4.1op1-1ubuntu4.1), libcups2 (= 2.4.1op1-1ubuntu4.1), libc6 (>= 2.34)
+Suggests: cups, cups-bsd, smbclient
+Conflicts: lprng
+
+Package: baobab
+Architecture: amd64
+Version: 41.0-2
+APT-ID: 80
+Source: baobab
+Source-Version: 41.0-2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcairo2 (>= 1.2.4), libglib2.0-0 (>= 2.55.1), libgtk-3-0 (>= 3.24.1), libhandy-1-0 (>= 1.5.90), libpango-1.0-0 (>= 1.14.0)
+Recommends: yelp
+
+Package: remmina-plugin-vnc
+Architecture: amd64
+Version: 1.4.25+dfsg-1
+APT-ID: 5596
+Multi-Arch: same
+Source: remmina
+Source-Version: 1.4.25+dfsg-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.6.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.26.0), libgtk-3-0 (>= 3.9.12), libvncclient1 (>= 0.9.10), remmina (= 1.4.25+dfsg-1)
+
+Package: cups-ppdc
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71761
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-common (>= 2.4.1op1-1ubuntu4.1), libc6 (>= 2.34), libcups2 (>= 2.3~b6), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5)
+
+Package: alsa-ucm-conf
+Architecture: all
+Version: 1.2.6.3-1ubuntu1
+APT-ID: 16
+Multi-Arch: foreign
+Source: alsa-ucm-conf
+Source-Version: 1.2.6.3-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.2.4)
+
+Package: libxml-xpathengine-perl
+Architecture: all
+Version: 0.14-1
+APT-ID: 4235
+Source: libxml-xpathengine-perl
+Source-Version: 0.14-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: gir1.2-wnck-3.0
+Architecture: amd64
+Version: 40.1-1
+APT-ID: 757
+Multi-Arch: same
+Source: libwnck3
+Source-Version: 40.1-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0 (>= 0.10), gir1.2-gtk-3.0 (>= 3.22.0), libwnck-3-0 (>= 3.36.0)
+
+Package: speech-dispatcher-espeak-ng
+Architecture: amd64
+Version: 0.11.1-1ubuntu1
+APT-ID: 79616
+Multi-Arch: foreign
+Source: speech-dispatcher
+Source-Version: 0.11.1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdotconf0 (>= 1.0.13), libespeak-ng1 (>= 1.50+dfsg), libglib2.0-0 (>= 2.36), libltdl7 (>= 2.4.6), speech-dispatcher (= 0.11.1-1ubuntu1)
+
+Package: libwayland-server0
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72825
+Multi-Arch: same
+Source: wayland
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libffi8 (>= 3.4)
+Conflicts: libwayland0 (<< 1.1.0-1)
+Replaces: libwayland0 (<< 1.1.0-1)
+Breaks: weston (<< 1.2.0)
+
+Package: libcolorhug2
+Architecture: amd64
+Version: 1.4.6-1
+APT-ID: 1927
+Multi-Arch: same
+Source: colord
+Source-Version: 1.4.6-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcolord2 (>= 1.4.3), libglib2.0-0 (>= 2.58), libgusb2 (>= 0.2.7)
+
+Package: libsmbios-c2
+Architecture: amd64
+Version: 2.4.3-1build1
+APT-ID: 3688
+Source: libsmbios
+Source-Version: 2.4.3-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: libsmbios-doc
+Conflicts: libsmbios2, libsmbios2v5
+Replaces: libsmbios2, libsmbios2v5
+Provides: libsmbios2v5 (= 2.3.1-0ubuntu2), libsmbios2 (= 2.3.1-1)
+
+Package: libglx0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 2407
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglvnd0 (= 1.4.0-1), libx11-6 (>= 2:1.4.99.1), libglx-mesa0
+
+Package: libcairomm-1.0-1v5
+Architecture: amd64
+Version: 1.12.2-4build3
+APT-ID: 1835
+Multi-Arch: same
+Source: cairomm
+Source-Version: 1.12.2-4build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo2 (>= 1.12.0), libgcc-s1 (>= 3.3.1), libsigc++-2.0-0v5 (>= 2.5.1), libstdc++6 (>= 5.2)
+Conflicts: libcairomm-1.0-1
+Replaces: libcairomm-1.0-1
+
+Package: gnome-session-bin
+Architecture: amd64
+Version: 42.0-1ubuntu2
+APT-ID: 801
+Source: gnome-session
+Source-Version: 42.0-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: default-dbus-session-bus | dbus-session-bus, gsettings-desktop-schemas, upower (>= 0.9.0), dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libegl1, libepoxy0 (>= 1.0), libgl1, libgles2, libglib2.0-0 (>= 2.70.0), libgnome-desktop-3-19 (>= 3.34.2), libgtk-3-0 (>= 3.22.0), libice6 (>= 1:1.0.0), libjson-glib-1.0-0 (>= 1.5.2), libsm6, libsystemd0 (>= 209), libx11-6, libxcomposite1 (>= 1:0.4.5)
+Recommends: gnome-startup-applications, default-logind | logind
+Breaks: gdm3 (<< 3.37.90)
+
+Package: laptop-detect
+Architecture: all
+Version: 0.16
+APT-ID: 1536
+Source: laptop-detect
+Source-Version: 0.16
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: dmidecode
+
+Package: libblockdev-fs2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1734
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.24.2), libblockdev-part-err2 (>= 2.14), libblockdev-utils2 (>= 2.16), libc6 (>= 2.7), libglib2.0-0 (>= 2.42.2), libmount1 (>= 2.30.2), libparted-fs-resize0 (>= 3.1), libparted2 (>= 3.1), e2fsprogs
+
+Package: libmagic1
+Architecture: amd64
+Version: 1:5.41-3
+APT-ID: 2877
+Multi-Arch: same
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.33), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.1.4), libmagic-mgc (= 1:5.41-3)
+Suggests: file
+
+Package: libgcr-ui-3-1
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 2316
+Multi-Arch: same
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgck-1-0 (= 3.40.0-4), libgcr-base-3-1 (= 3.40.0-4), libc6 (>= 2.14), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.59.0), libgtk-3-0 (>= 3.22.0), libpango-1.0-0 (>= 1.18.0)
+Replaces: libgcr-3-1 (<< 3.8.2-2)
+Breaks: libgcr-3-1 (<< 3.8.2-2)
+
+Package: python3-reportlab-accel
+Architecture: amd64
+Version: 3.6.8-1
+APT-ID: 5452
+Multi-Arch: same
+Source: python-reportlab
+Source-Version: 3.6.8-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.4)
+Provides: python3.10-reportlab-accel
+
+Package: libcaca0
+Architecture: amd64
+Version: 0.99.beta19-2.2ubuntu4
+APT-ID: 1825
+Multi-Arch: same
+Source: libcaca
+Source-Version: 0.99.beta19-2.2ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncursesw6 (>= 6), libslang2 (>= 2.2.4), libstdc++6 (>= 4.1.1), libtinfo6 (>= 6), zlib1g (>= 1:1.1.4)
+
+Package: python3-distro
+Architecture: all
+Version: 1.7.0-1
+APT-ID: 5215
+Multi-Arch: foreign
+Source: python-distro
+Source-Version: 1.7.0-1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-release, python3:any
+
+Package: cups-daemon
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71759
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, bc, libcups2 (= 2.4.1op1-1ubuntu4.1), lsb-base, procps, ssl-cert, libapparmor1 (>= 2.7.0~beta1+bzr1772), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.22.0), libgssapi-krb5-2 (>= 1.17), libpam0g (>= 0.99.7.1), libpaper1, libsnapd-glib1 (>= 1.49), libsystemd0
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: cups, cups-bsd, cups-client (>= 2.4.1op1-1ubuntu4.1), cups-common (>= 2.4.1op1-1ubuntu4.1), cups-filters, cups-pdf, cups-ppdc, cups-server-common (>= 2.4.1op1-1ubuntu4.1), foomatic-db-compressed-ppds | foomatic-db, ghostscript, poppler-utils, smbclient, udev
+Recommends: avahi-daemon, colord, cups-browsed, ipp-usb
+Replaces: cups (<< 2.1.0-6~)
+Breaks: cups (<< 2.1.0-6~)
+
+Package: ubuntu-settings
+Architecture: all
+Version: 22.04.6
+APT-ID: 5899
+Source: ubuntu-settings
+Source-Version: 22.04.6
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, gnome-control-center-data, gsettings-desktop-schemas (>= 40), libglib2.0-bin (>= 2.53.4-3ubuntu1~)
+
+Package: grub-gfxpayload-lists
+Architecture: amd64
+Version: 0.7
+APT-ID: 907
+Source: grub-gfxpayload-lists
+Source-Version: 0.7
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: grub-pc (>= 1.99~20101210-1ubuntu2)
+
+Package: update-inetd
+Architecture: all
+Version: 4.51
+APT-ID: 5914
+Multi-Arch: foreign
+Source: update-inetd
+Source-Version: 4.51
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, perl:any
+
+Package: libjansson4
+Architecture: amd64
+Version: 2.13.1-1.1build3
+APT-ID: 2726
+Multi-Arch: same
+Source: jansson
+Source-Version: 2.13.1-1.1build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: python3-pymacaroons
+Architecture: all
+Version: 0.13.0-4
+APT-ID: 5421
+Multi-Arch: foreign
+Source: pymacaroons
+Source-Version: 0.13.0-4
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-nacl (>= 1.1.2), python3-six (>= 1.8.0), python3:any
+
+Package: libfribidi0
+Architecture: amd64
+Version: 1.0.8-2ubuntu3.1
+APT-ID: 72357
+Multi-Arch: same
+Source: fribidi
+Source-Version: 1.0.8-2ubuntu3.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: ubuntu-advantage-desktop-daemon
+Architecture: amd64
+Version: 1.9~22.04.1
+APT-ID: 74527
+Source: ubuntu-advantage-desktop-daemon
+Source-Version: 1.9~22.04.1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ubuntu-advantage-tools, libc6 (>= 2.34), libglib2.0-0 (>= 2.39.4), libjson-glib-1.0-0 (>= 1.5.2), libpolkit-gobject-1-0 (>= 0.99)
+Conflicts: ubuntu-advantage-daemon
+Replaces: ubuntu-advantage-daemon
+Provides: ubuntu-advantage-daemon
+
+Package: liblua5.3-0
+Architecture: amd64
+Version: 5.3.6-1build1
+APT-ID: 2856
+Multi-Arch: same
+Source: lua5.3
+Source-Version: 5.3.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libstdc++6 (>= 4.1.1)
+
+Package: libencode-locale-perl
+Architecture: all
+Version: 1.05-1.1
+APT-ID: 2148
+Source: libencode-locale-perl
+Source-Version: 1.05-1.1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: fonts-lohit-mlym
+Architecture: all
+Version: 2.92.2-2
+APT-ID: 466
+Multi-Arch: foreign
+Source: fonts-lohit-mlym
+Source-Version: 2.92.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-malayalam-fonts (<= 1:0.5.12)
+Breaks: ttf-malayalam-fonts (<= 1:0.5.12)
+
+Package: libcdio19
+Architecture: amd64
+Version: 2.1.0-3build1
+APT-ID: 1864
+Multi-Arch: same
+Source: libcdio
+Source-Version: 2.1.0-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libpython3.10-stdlib
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72535
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.6-1~22.04), media-types | mime-support, libbz2-1.0, libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libdb5.3, libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1)
+Replaces: python3-gdbm (<< 3.9.9-1~)
+Breaks: python3-gdbm (<< 3.9.9-1~)
+
+Package: libpython3.10-stdlib
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79377
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3ubuntu0.1), media-types | mime-support, libbz2-1.0, libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libdb5.3, libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1)
+Replaces: python3-gdbm (<< 3.9.9-1~)
+Breaks: python3-gdbm (<< 3.9.9-1~)
+
+Package: libpython3.10-stdlib
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 3341
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3), media-types | mime-support, libbz2-1.0, libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libdb5.3, libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1)
+Replaces: python3-gdbm (<< 3.9.9-1~)
+Breaks: python3-gdbm (<< 3.9.9-1~)
+
+Package: libraw1394-11
+Architecture: amd64
+Version: 2.1.2-2build2
+APT-ID: 3375
+Multi-Arch: same
+Source: libraw1394
+Source-Version: 2.1.2-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Suggests: libraw1394-doc
+
+Package: librtmp1
+Architecture: amd64
+Version: 2.4+20151223.gitfa8646d.1-2build4
+APT-ID: 3619
+Multi-Arch: same
+Source: rtmpdump
+Source-Version: 2.4+20151223.gitfa8646d.1-2build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgmp10 (>= 2:6.2.1+dfsg), libgnutls30 (>= 3.7.2), libhogweed6, libnettle8, zlib1g (>= 1:1.1.4)
+
+Package: python3-defer
+Architecture: all
+Version: 1.0.6-2.1ubuntu1
+APT-ID: 5209
+Source: python-defer
+Source-Version: 1.0.6-2.1ubuntu1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~)
+
+Package: wireless-tools
+Architecture: amd64
+Version: 30~pre9-13.1ubuntu4
+APT-ID: 5973
+Multi-Arch: foreign
+Source: wireless-tools
+Source-Version: 30~pre9-13.1ubuntu4
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libiw30 (>= 30~pre1)
+
+Package: colord
+Architecture: amd64
+Version: 1.4.6-1
+APT-ID: 206
+Multi-Arch: foreign
+Source: colord
+Source-Version: 1.4.6-1
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: acl, adduser, colord-data, policykit-1 (>= 0.103), dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcolord2 (>= 1.4.3), libcolorhug2 (>= 0.1.30), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.58), libgudev-1.0-0 (>= 146), libgusb2 (>= 0.2.7), liblcms2-2 (>= 2.2+git20110628), libpolkit-gobject-1-0 (>= 0.103), libsane1 (>= 1.0.27), libsqlite3-0 (>= 3.5.9), libsystemd0
+
+Package: libproxy1-plugin-networkmanager
+Architecture: amd64
+Version: 0.4.17-2
+APT-ID: 3315
+Multi-Arch: same
+Source: libproxy
+Source-Version: 0.4.17-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libdbus-1-3 (>= 1.9.14), libstdc++6 (>= 5), libproxy1v5 (= 0.4.17-2)
+Enhances: libproxy1v5
+
+Package: libsonic0
+Architecture: amd64
+Version: 0.2.0-11build1
+APT-ID: 3703
+Multi-Arch: same
+Source: sonic
+Source-Version: 0.2.0-11build1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libmanette-0.2-0
+Architecture: amd64
+Version: 0.2.6-3build1
+APT-ID: 2883
+Multi-Arch: same
+Source: libmanette
+Source-Version: 0.2.6-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libevdev2 (>= 1.4.5), libglib2.0-0 (>= 2.50.0), libgudev-1.0-0 (>= 146)
+
+Package: libgupnp-1.2-1
+Architecture: amd64
+Version: 1.4.3-1
+APT-ID: 2552
+Multi-Arch: same
+Source: gupnp
+Source-Version: 1.4.3-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.66), libgssdp-1.2-0 (>= 1.4.0.1), libsoup2.4-1 (>= 2.48.0), libuuid1 (>= 2.16), libxml2 (>= 2.7.4), shared-mime-info
+
+Package: xserver-xorg-input-all
+Architecture: amd64
+Version: 1:7.7+23ubuntu2
+APT-ID: 6047
+Source: xorg
+Source-Version: 1:7.7+23ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-xorg-input-libinput
+Recommends: xserver-xorg-input-wacom
+
+Package: adwaita-icon-theme
+Architecture: all
+Version: 41.0-1ubuntu1
+APT-ID: 9
+Multi-Arch: foreign
+Source: adwaita-icon-theme
+Source-Version: 41.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: hicolor-icon-theme, gtk-update-icon-cache, ubuntu-mono | adwaita-icon-theme-full
+Recommends: librsvg2-common
+Replaces: adwaita-icon-theme-full (<< 41.0-1ubuntu1), gnome-themes-standard-data (<< 3.18.0-2~)
+Breaks: adwaita-icon-theme-full (<< 41.0-1ubuntu1), gnome-themes-standard-data (<< 3.18.0-2~)
+
+Package: debconf
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 276
+Multi-Arch: foreign
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: perl-base (>= 5.20.1-3~)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog, libterm-readline-gnu-perl, libgtk3-perl, libnet-ldap-perl, perl, debconf-kde-helper (>= 0.1+git20110702)
+Recommends: apt-utils (>= 0.5.1), debconf-i18n
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Replaces: debconf-tiny
+Breaks: apt-listchanges (<< 3.14), ubiquity (<< 17.10.2), update-notifier-common (<< 3.187~)
+Provides: debconf-2.0
+
+Package: libgoa-1.0-0b
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 2453
+Multi-Arch: same
+Source: gnome-online-accounts
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgoa-1.0-common (>= 3.44.0-1ubuntu1), libc6 (>= 2.4), libglib2.0-0 (>= 2.52)
+Conflicts: libgoa-1.0-0
+Replaces: libgoa-1.0-0
+
+Package: plymouth-theme-spinner
+Architecture: amd64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4926
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libplymouth5 (>= 0.9.5), plymouth (= 0.9.5+git20211018-1ubuntu3), plymouth-label (= 0.9.5+git20211018-1ubuntu3), lsb-release
+Replaces: plymouth-themes (<< 0.9.4git20190712-0ubuntu1~)
+Breaks: plymouth-themes (<< 0.9.4git20190712-0ubuntu1~)
+Provides: plymouth-theme
+
+Package: libgpm2
+Architecture: amd64
+Version: 1.20.7-10build1
+APT-ID: 2482
+Multi-Arch: same
+Source: gpm
+Source-Version: 1.20.7-10build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: gpm
+
+Package: linux-image-generic-hwe-22.04
+Architecture: amd64
+Version: 5.15.0.48.48
+APT-ID: 73466
+Source: linux-meta
+Source-Version: 5.15.0.48.48
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-image-5.15.0-48-generic, linux-modules-extra-5.15.0-48-generic, linux-firmware, intel-microcode, amd64-microcode
+Recommends: thermald
+Provides: zfs-modules (= 2.1.4-0ubuntu0.1), wireguard-modules (= 1.0.0), virtualbox-guest-modules (= 5.15.0-48), v4l2loopback-modules (= 0.12.5-1ubuntu5), spl-modules (= 2.1.4-0ubuntu0.1)
+
+Package: vim-common
+Architecture: all
+Version: 2:8.2.3995-1ubuntu2.1
+APT-ID: 74538
+Multi-Arch: foreign
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2.1
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xxd
+Recommends: vim | vim-gtk3 | vim-athena | vim-nox | vim-tiny
+
+Package: libwebpdemux2
+Architecture: amd64
+Version: 1.2.2-2
+APT-ID: 4057
+Multi-Arch: same
+Source: libwebp
+Source-Version: 1.2.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libwebp7
+
+Package: libreoffice-draw
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72554
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.35), libcdr-0.1-1, libdbus-1-3 (>= 1.9.14), libfreehand-0.1-1, libgcc-s1 (>= 3.0), libglib2.0-0 (>= 2.38.0), libicu70 (>= 70.1-1~), libmspub-0.1-1, libmwaw-0.3-3, libodfgen-0.1-1, libpagemaker-0.0-0, libpng16-16 (>= 1.6.2-1), librevenge-0.0-0, libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 3.6.0~beta), libvisio-0.1-1, libwpg-0.3-3, libxml2 (>= 2.8), uno-libs-private, zlib1g (>= 1:1.1.4)
+Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-core (<< 1:6.4.1~rc1-3), libreoffice-impress (<< 1:5.2.0-2)
+Breaks: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-core (<< 1:6.4.1~rc1-3), libreoffice-impress (<< 1:5.2.0-2)
+
+Package: libtiff5
+Architecture: amd64
+Version: 4.3.0-6ubuntu0.1
+APT-ID: 72779
+Multi-Arch: same
+Source: tiff
+Source-Version: 4.3.0-6ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdeflate0 (>= 1.0), libjbig0 (>= 2.0), libjpeg8 (>= 8c), liblzma5 (>= 5.1.1alpha+20120614), libwebp7, libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+
+Package: libdrm-nouveau2
+Architecture: amd64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2095
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libdrm2 (>= 2.4.108)
+
+Package: libinput10
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72428
+Multi-Arch: same
+Source: libinput
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libevdev2 (>= 1.10.0), libmtdev1 (>= 1.1.0), libudev1 (>= 183), libwacom9 (>= 2.0.0), libinput-bin (>= 1.20.0-1ubuntu0.1)
+
+Package: python3.10-venv
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78614
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10 (= 3.10.6-1~22.04), python3-pip-whl, python3-setuptools-whl, python3.10-distutils
+Breaks: python3-pip (<< 1.5.6-4)
+
+Package: python3.10-venv
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79556
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3ubuntu0.1), python3-pip-whl, python3-setuptools-whl, python3.10-distutils
+Breaks: python3-pip (<< 1.5.6-4)
+
+Package: python3.10-venv
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 58466
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3), python3-pip-whl, python3-setuptools-whl, python3.10-distutils
+Breaks: python3-pip (<< 1.5.6-4)
+
+Package: python3-reportlab
+Architecture: all
+Version: 3.6.8-1
+APT-ID: 5451
+Source: python-reportlab
+Source-Version: 3.6.8-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-reportlab-accel (>= 3.6.8-1), python3-pil, python3:any
+Suggests: pdf-viewer, python3-egenix-mxtexttools (>= 2.0.6-3.1), python-reportlab-doc
+Recommends: python3-renderpm
+
+Package: printer-driver-c2esp
+Architecture: amd64
+Version: 27-11build1
+APT-ID: 4965
+Source: c2esp
+Source-Version: 27-11build1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcups2 (>= 2.3~b6), libcupsfilters1 (>= 1.0~b1), libjbig0 (>= 2.0), zlib1g (>= 1:1.1.4)
+Suggests: psutils
+Recommends: cups-ppdc
+
+Package: gnome-system-monitor
+Architecture: amd64
+Version: 42.0-1
+APT-ID: 814
+Source: gnome-system-monitor
+Source-Version: 42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.56.0), libglibmm-2.4-1v5 (>= 2.66.2), libgtk-3-0 (>= 3.22.0), libgtkmm-3.0-1v5 (>= 3.24.5), libgtop-2.0-11 (>= 2.37.90), libhandy-1-0 (>= 1.5.90), libpango-1.0-0 (>= 1.37.2), libpangocairo-1.0-0 (>= 1.14.0), librsvg2-2 (>= 2.35.0), libsigc++-2.0-0v5 (>= 2.2.0), libstdc++6 (>= 11), libsystemd0
+Recommends: gvfs
+
+Package: language-selector-gnome
+Architecture: all
+Version: 0.219
+APT-ID: 1535
+Source: language-selector
+Source-Version: 0.219
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: language-selector-common (= 0.219), python3:any, python3-gi, gir1.2-gtk-3.0, python3-apt, aptdaemon (>= 0.40+bzr527), python3-aptdaemon.gtk3widgets, im-config (>= 0.29-1ubuntu10~)
+Recommends: yelp
+
+Package: libip4tc2
+Architecture: amd64
+Version: 1.8.7-1ubuntu5
+APT-ID: 2674
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28)
+
+Package: software-properties-common
+Architecture: all
+Version: 0.99.22.3
+APT-ID: 74407
+Source: software-properties
+Source-Version: 0.99.22.3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ca-certificates, gir1.2-glib-2.0, gir1.2-packagekitglib-1.0 (>= 1.1.0-2), packagekit, python-apt-common (>= 0.9), python3, python3-dbus, python3-gi, python3-software-properties (= 0.99.22.3), python3:any
+Replaces: python-software-properties (<< 0.85), python3-software-properties (<< 0.85)
+Breaks: python-software-properties (<< 0.85), python3-software-properties (<< 0.85)
+
+Package: thunderbird
+Architecture: amd64
+Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+APT-ID: 74434
+Source: thunderbird
+Source-Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+Priority: optional
+Section: mail
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.35), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.10.0), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libgcc-s1 (>= 4.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.9.14), libharfbuzz0b (>= 0.6.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0), libstdc++6 (>= 12), libx11-6, libx11-xcb1 (>= 2:1.7.5), libxcb-shm0, libxcb1, libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6, libxrender1, libxt6
+Suggests: thunderbird-gnome-support, ttf-lyx, libotr5
+Recommends: myspell-en-us | hunspell-dictionary | myspell-dictionary, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk3-4
+Conflicts: mozilla-thunderbird
+Replaces: mozilla-thunderbird, thunderbird-gnome-support (<= 3.0.4+nobinonly-0ubuntu3)
+Breaks: enigmail (<< 2:2.2), jsunit (<< 0.2.2-2ubuntu1), thunderbird-gnome-support (<= 3.0.4+nobinonly-0ubuntu3), tinyjsd (<< 1.2+git1-1ubuntu1)
+Provides: mail-reader
+
+Package: libpixman-1-0
+Architecture: amd64
+Version: 0.40.0-1build4
+APT-ID: 3262
+Multi-Arch: same
+Source: pixman
+Source-Version: 0.40.0-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: libtag1v5
+Architecture: amd64
+Version: 1.11.1+dfsg.1-3ubuntu3
+APT-ID: 3805
+Multi-Arch: same
+Source: taglib
+Source-Version: 1.11.1+dfsg.1-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtag1v5-vanilla (= 1.11.1+dfsg.1-3ubuntu3)
+Conflicts: libtag-extras0, libtag1c2a
+Replaces: libtag1c2a
+
+Package: libsystemd0
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79611
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: important
+Section: libs
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libzstd1 (>= 1.4.0)
+
+Package: linux-sound-base
+Architecture: all
+Version: 1.0.25+dfsg-0ubuntu7
+APT-ID: 4530
+Source: alsa-driver
+Source-Version: 1.0.25+dfsg-0ubuntu7
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, kmod (>= 17-1)
+Suggests: alsa-base (>= 1.0.18-1)
+
+Package: transmission-gtk
+Architecture: amd64
+Version: 3.00-2ubuntu2
+APT-ID: 5867
+Source: transmission
+Source-Version: 3.00-2ubuntu2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: transmission-common (= 3.00-2ubuntu2), libayatana-appindicator3-1 (>= 0.4.90), libc6 (>= 2.34), libcurl4 (>= 7.18.0), libevent-2.1-7 (>= 2.1.8-stable), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libminiupnpc17 (>= 1.9.20140610), libnatpmp1 (>= 20150609), libpango-1.0-0 (>= 1.14.0), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.1.4)
+Recommends: xdg-utils
+
+Package: libfreetype6
+Architecture: amd64
+Version: 2.11.1+dfsg-1ubuntu0.1
+APT-ID: 72354
+Multi-Arch: same
+Source: freetype
+Source-Version: 2.11.1+dfsg-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.33), libpng16-16 (>= 1.6.2-1), zlib1g (>= 1:1.1.4)
+
+Package: printer-driver-brlaser
+Architecture: amd64
+Version: 6-3
+APT-ID: 4964
+Source: brlaser
+Source-Version: 6-3
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcups2 (>= 2.3~b6), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+
+Package: libfontembed1
+Architecture: amd64
+Version: 1.28.15-0ubuntu1
+APT-ID: 2247
+Multi-Arch: same
+Source: cups-filters
+Source-Version: 1.28.15-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: pci.ids
+Architecture: all
+Version: 0.0~2022.01.22-1
+APT-ID: 4860
+Multi-Arch: foreign
+Source: pci.ids
+Source-Version: 0.0~2022.01.22-1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: pciutils (<< 1:3.6.2-4~)
+Breaks: pciutils (<< 1:3.6.2-4~)
+
+Package: xserver-xorg-video-intel
+Architecture: amd64
+Version: 2:2.99.917+git20210115-1
+APT-ID: 6057
+Source: xserver-xorg-video-intel
+Source-Version: 2:2.99.917+git20210115-1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm-intel1 (>= 2.4.38), libdrm2 (>= 2.4.62), libpciaccess0 (>= 0.8.0+git20071002), libpixman-1-0 (>= 0.30.0), libudev1 (>= 183), libx11-6, libx11-xcb1 (>= 2:1.7.2), libxcb-dri2-0, libxcb-util1 (>= 0.4.0), libxcb1, libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxinerama1 (>= 2:1.1.4), libxrandr2 (>= 2:1.2.99.2), libxrender1, libxss1, libxtst6, libxvmc1 (>= 2:1.0.12), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Provides: xorg-driver-video
+
+Package: libevdocument3-4
+Architecture: amd64
+Version: 42.3-0ubuntu2
+APT-ID: 72336
+Multi-Arch: same
+Source: evince
+Source-Version: 42.3-0ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libarchive13 (>= 3.6.0), libc6 (>= 2.35), libcairo2 (>= 1.14.0), libdjvulibre21 (>= 3.5.28), libgdk-pixbuf-2.0-0 (>= 2.40), libglib2.0-0 (>= 2.55.1), libgtk-3-0 (>= 3.22.0), libgxps2 (>= 0.2.1), libkpathsea6 (>= 2021.20210626.59705), libpango-1.0-0 (>= 1.18.0), libpoppler-glib8 (>= 22.02.0), libspectre1 (>= 0.2.3), libsynctex2 (>= 2021.20210626.59705), libtiff5 (>= 4.0.3), libxml2 (>= 2.7.4)
+
+Package: libtcl8.6
+Architecture: amd64
+Version: 8.6.12+dfsg-1build1
+APT-ID: 3814
+Multi-Arch: same
+Source: tcl8.6
+Source-Version: 8.6.12+dfsg-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tzdata, libc6 (>= 2.35), zlib1g (>= 1:1.2.2)
+Suggests: tcl8.6
+Conflicts: tcl74 (<= 7.4p3-2), tcl8.6 (<< 8.6.0-2)
+Replaces: tcl8.6 (<< 8.6.0-2)
+Breaks: nsf (<< 2.2.0)
+Provides: libtcl
+
+Package: tracker-miner-fs
+Architecture: amd64
+Version: 3.3.0-1
+APT-ID: 5865
+Source: tracker-miners
+Source-Version: 3.3.0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.70.0), libtracker-sparql-3.0-0 (>= 3.3.0~beta), libupower-glib3 (>= 0.99.0), tracker-extract (= 3.3.0-1), init-system-helpers (>= 1.52), tracker (>= 3.3.0~), procps
+Breaks: bijiben (<< 40), brasero (<< 3.12.2-8~), gnome-applets (<< 3.40.0-4~), gnome-books (<< 40), gnome-boxes (<< 40), gnome-documents (<< 3.34.0-4~), gnome-music (<< 40), gnome-photos (<< 40), gnome-usage (<< 3.38.1-3~), nautilus (<< 40), netatalk (<< 3.1.12~ds-8.1), rygel (<< 0.40.1-3~)
+
+Package: libmount1
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 2952
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: cryptsetup-bin
+
+Package: gir1.2-gnomedesktop-3.0
+Architecture: amd64
+Version: 42.4-0ubuntu1
+APT-ID: 71835
+Multi-Arch: same
+Source: gnome-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdesktopenums-3.0 (>= 3.27.0), gir1.2-glib-2.0 (>= 0.10.2-1~), gir1.2-gtk-3.0 (>= 3.3.6), libgnome-desktop-3-19 (>= 42~beta)
+Breaks: gnome-shell (<< 3.34)
+
+Package: gir1.2-javascriptcoregtk-4.0
+Architecture: amd64
+Version: 2.36.7-0ubuntu0.22.04.1
+APT-ID: 71842
+Multi-Arch: same
+Source: webkit2gtk
+Source-Version: 2.36.7-0ubuntu0.22.04.1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12-4), libjavascriptcoregtk-4.0-18 (= 2.36.7-0ubuntu0.22.04.1)
+
+Package: sound-icons
+Architecture: all
+Version: 0.1-8
+APT-ID: 5677
+Multi-Arch: foreign
+Source: sound-icons
+Source-Version: 0.1-8
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libmtdev1
+Architecture: amd64
+Version: 1.1.6-1build4
+APT-ID: 2976
+Multi-Arch: same
+Source: mtdev
+Source-Version: 1.1.6-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: gir1.2-udisks-2.0
+Architecture: amd64
+Version: 2.9.4-1ubuntu2
+APT-ID: 752
+Multi-Arch: same
+Source: udisks2
+Source-Version: 2.9.4-1ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.30), libudisks2-0 (>= 2.9.0)
+
+Package: libwhoopsie-preferences0
+Architecture: amd64
+Version: 23
+APT-ID: 4063
+Source: whoopsie-preferences
+Source-Version: 23
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3)
+Breaks: whoopsie (<< 0.2.47)
+
+Package: libshout3
+Architecture: amd64
+Version: 2.4.5-1build3
+APT-ID: 3670
+Multi-Arch: same
+Source: libshout
+Source-Version: 2.4.5-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libogg0 (>= 1.0rc3), libspeex1 (>= 1.2~beta3-1), libssl3 (>= 3.0.0~~alpha1), libtheora0 (>= 0.0.0.alpha7.dfsg), libvorbis0a (>= 1.1.2)
+
+Package: gstreamer1.0-tools
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 71895
+Source: gstreamer1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libgstreamer1.0-0 (>= 1.16.1)
+Suggests: gstreamer1.0-plugins-base
+
+Package: udisks2
+Architecture: amd64
+Version: 2.9.4-1ubuntu2
+APT-ID: 5906
+Multi-Arch: foreign
+Source: udisks2
+Source-Version: 2.9.4-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, libblockdev-fs2, libblockdev-loop2, libblockdev-part2, libblockdev-swap2, parted, udev, libacl1 (>= 2.2.23), libatasmart4 (>= 0.13), libblockdev-utils2 (>= 2.24), libblockdev2 (>= 2.25), libc6 (>= 2.34), libglib2.0-0 (>= 2.50), libgudev-1.0-0 (>= 165), libmount1 (>= 2.30), libpolkit-agent-1-0 (>= 0.102), libpolkit-gobject-1-0 (>= 0.102), libsystemd0 (>= 209), libudisks2-0 (>= 2.9.0), libuuid1 (>= 2.16)
+Suggests: btrfs-progs, f2fs-tools, libblockdev-mdraid2, mdadm, nilfs-tools, reiserfsprogs, udftools, udisks2-bcache, udisks2-btrfs, udisks2-lvm2, udisks2-zram, xfsprogs, exfatprogs
+Recommends: dosfstools, e2fsprogs, eject, libblockdev-crypto2, ntfs-3g, policykit-1, libpam-systemd
+
+Package: libxau6
+Architecture: amd64
+Version: 1:1.0.9-1build5
+APT-ID: 4123
+Multi-Arch: same
+Source: libxau
+Source-Version: 1:1.0.9-1build5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libxaw7
+Architecture: amd64
+Version: 2:1.0.14-1
+APT-ID: 4125
+Multi-Arch: same
+Source: libxaw
+Source-Version: 2:1.0.14-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.15), libx11-6, libxext6, libxmu6 (>= 2:1.1.3), libxpm4, libxt6
+
+Package: totem-common
+Architecture: all
+Version: 42.0-1ubuntu1
+APT-ID: 5860
+Multi-Arch: foreign
+Source: totem
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: emacsen-common
+Architecture: all
+Version: 3.0.4
+APT-ID: 370
+Source: emacsen-common
+Source-Version: 3.0.4
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: emacs19, emacs20, emacs21-common, emacs22-common, emacs23-common, emacs24-common, emacs25-common, xemacs21-support (<< 21.4.24-6~)
+
+Package: file
+Architecture: amd64
+Version: 1:5.41-3
+APT-ID: 420
+Multi-Arch: foreign
+Source: file
+Source-Version: 1:5.41-3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libmagic1 (= 1:5.41-3)
+Breaks: debhelper (<< 12.2~)
+
+Package: rhythmbox-plugins
+Architecture: amd64
+Version: 3.4.4-5ubuntu1
+APT-ID: 5605
+Source: rhythmbox
+Source-Version: 3.4.4-5ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdmapsharing-3.0-2 (>= 2.9.19), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.38.0), libgpod4 (>= 0.8.2-4), libgrilo-0.3-0 (>= 0.3.0), libgstreamer1.0-0 (>= 1.4.0), libgtk-3-0 (>= 3.20.0), libgudev-1.0-0 (>= 146), libjson-glib-1.0-0 (>= 1.5.2), liblirc-client0, libmtp9 (>= 1.1.0), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.14.0), libpeas-1.0-0 (>= 1.0.0), librhythmbox-core10 (= 3.4.4-5ubuntu1), libsecret-1-0 (>= 0.18), libsoup2.4-1 (>= 2.42.0), libtotem-plparser18 (>= 3.26.0), python3 (<< 3.11), python3 (>= 3.10~), python3.10, python3:any, rhythmbox (= 3.4.4-5ubuntu1), gir1.2-rb-3.0 (= 3.4.4-5ubuntu1), gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-webkit2-4.0, gir1.2-peas-1.0, gir1.2-gstreamer-1.0, gir1.2-secret-1, python3-gi, python3-mako
+
+Package: bzip2
+Architecture: amd64
+Version: 1.0.8-5build1
+APT-ID: 155
+Multi-Arch: foreign
+Source: bzip2
+Source-Version: 1.0.8-5build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0 (= 1.0.8-5build1), libc6 (>= 2.34)
+Suggests: bzip2-doc
+Replaces: libbz2 (<< 0.9.5d-3)
+
+Package: genisoimage
+Architecture: amd64
+Version: 9:1.1.11-3.2ubuntu1
+APT-ID: 618
+Source: cdrkit
+Source-Version: 9:1.1.11-3.2ubuntu1
+Priority: optional
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libmagic1 (>= 5.12), zlib1g (>= 1:1.1.4)
+Suggests: wodim, cdrkit-doc
+Conflicts: mkhybrid, mkisofs
+Replaces: mkisofs
+Provides: mkisofs
+
+Package: python3-requests
+Architecture: all
+Version: 2.25.1+dfsg-2
+APT-ID: 5454
+Source: requests
+Source-Version: 2.25.1+dfsg-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-certifi, python3-chardet (>= 3.0.2), python3-idna, python3-urllib3 (>= 1.21.1), python3:any, ca-certificates
+Suggests: python3-cryptography, python3-idna (>= 2.5), python3-openssl, python3-socks, python-requests-doc
+Breaks: awscli (<< 1.11.139)
+
+Package: libdata-dump-perl
+Architecture: all
+Version: 1.25-1
+APT-ID: 1984
+Source: libdata-dump-perl
+Source-Version: 1.25-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libgsound0
+Architecture: amd64
+Version: 1.0.3-2build1
+APT-ID: 2506
+Multi-Arch: same
+Source: gsound
+Source-Version: 1.0.3-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcanberra0 (>= 0.2), libglib2.0-0 (>= 2.37.3)
+
+Package: libpipeline1
+Architecture: amd64
+Version: 1.5.5-1
+APT-ID: 3257
+Multi-Arch: same
+Source: libpipeline
+Source-Version: 1.5.5-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.26)
+
+Package: aptdaemon
+Architecture: all
+Version: 1.1.1+bzr982-0ubuntu39
+APT-ID: 53
+Source: aptdaemon
+Source-Version: 1.1.1+bzr982-0ubuntu39
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), gir1.2-glib-2.0, python3-aptdaemon (= 1.1.1+bzr982-0ubuntu39), python3-gi, policykit-1
+Replaces: python3-aptdaemon.pkcompat
+Breaks: python3-aptdaemon.pkcompat, software-center (<< 1.1.21)
+
+Package: libnss-systemd
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79608
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), systemd (= 249.11-0ubuntu3.4)
+
+Package: debianutils
+Architecture: amd64
+Version: 5.5-1ubuntu2
+APT-ID: 281
+Essential: yes
+Multi-Arch: foreign
+Source: debianutils
+Source-Version: 5.5-1ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.34)
+Breaks: ifupdown (<< 0.8.36+nmu1), printer-driver-pnm2ppa (<< 1.13-12), x11-common (<< 1:7.7+23~)
+
+Package: libpopt0
+Architecture: amd64
+Version: 1.18-3build1
+APT-ID: 3301
+Multi-Arch: same
+Source: popt
+Source-Version: 1.18-3build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libxcb1
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4187
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxau6 (>= 1:1.0.9), libxdmcp6
+Breaks: alsa-utils (<< 1.0.24.2-5)
+
+Package: libclutter-gtk-1.0-0
+Architecture: amd64
+Version: 1.8.4-4build2
+APT-ID: 1906
+Multi-Arch: same
+Source: clutter-gtk
+Source-Version: 1.8.4-4build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.2.4), libclutter-1.0-0 (>= 1.23.7), libcogl20 (>= 1.17.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.0), libwayland-client0 (>= 1.20.0)
+
+Package: openprinting-ppds
+Architecture: all
+Version: 20220223-0ubuntu1
+APT-ID: 4815
+Multi-Arch: foreign
+Source: foomatic-db
+Source-Version: 20220223-0ubuntu1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, xz-utils
+Suggests: hpijs-ppds
+Recommends: cups, cups-client, cups-filters | foomatic-filters
+
+Package: libpam-fprintd
+Architecture: amd64
+Version: 1.94.2-1ubuntu0.22.04.1
+APT-ID: 72495
+Multi-Arch: same
+Source: fprintd
+Source-Version: 1.94.2-1ubuntu0.22.04.1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fprintd (= 1.94.2-1ubuntu0.22.04.1), libpam-runtime (>= 1.1.3-2~), libc6 (>= 2.17), libpam0g (>= 0.99.7.1), libsystemd0 (>= 237)
+
+Package: fonts-smc-manjari
+Architecture: all
+Version: 2.000-3
+APT-ID: 505
+Multi-Arch: foreign
+Source: fonts-smc-manjari
+Source-Version: 2.000-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libgstreamer-gl1.0-0
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 2517
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libdrm2 (>= 2.4.17), libegl1, libgbm1 (>= 8.1~0), libgl1, libglib2.0-0 (>= 2.67.3), libgstreamer-plugins-base1.0-0 (>= 1.18.0), libgstreamer1.0-0 (>= 1.20.0), libgudev-1.0-0 (>= 165), libwayland-client0 (>= 1.20.0), libwayland-cursor0 (>= 1.11), libwayland-egl1 (>= 1.15.0), libx11-6, libx11-xcb1 (>= 2:1.7.2), libxcb1
+Recommends: gstreamer1.0-gl
+Replaces: libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
+Breaks: libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
+
+Package: gir1.2-webkit2-4.0
+Architecture: amd64
+Version: 2.36.7-0ubuntu0.22.04.1
+APT-ID: 71850
+Multi-Arch: same
+Source: webkit2gtk
+Source-Version: 2.36.7-0ubuntu0.22.04.1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-javascriptcoregtk-4.0 (= 2.36.7-0ubuntu0.22.04.1), libwebkit2gtk-4.0-37 (= 2.36.7-0ubuntu0.22.04.1), gir1.2-glib-2.0 (>= 0.9.12-4), gir1.2-gtk-3.0 (>= 3.22.0), gir1.2-soup-2.4 (>= 2.54.0)
+
+Package: fonts-telu-extra
+Architecture: all
+Version: 2.0-5
+APT-ID: 513
+Multi-Arch: foreign
+Source: fonts-telu-extra
+Source-Version: 2.0-5
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-telugu-fonts
+Breaks: ttf-telugu-fonts (<< 2:1.0)
+
+Package: avahi-daemon
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 74
+Multi-Arch: foreign
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-common3 (= 0.8-5ubuntu5), libavahi-core7 (= 0.8-5ubuntu5), libc6 (>= 2.34), libcap2 (>= 1:2.16), libdaemon0 (>= 0.14), libdbus-1-3 (>= 1.9.14), libexpat1 (>= 2.0.1), adduser, dbus (>= 0.60), lsb-base (>= 3.0-6), bind9-host | host
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: avahi-autoipd
+Recommends: libnss-mdns (>= 0.11)
+
+Package: python3-importlib-metadata
+Architecture: all
+Version: 4.6.4-1
+APT-ID: 5266
+Source: python-importlib-metadata
+Source-Version: 4.6.4-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-zipp (>= 0.5), python3:any
+
+Package: logrotate
+Architecture: amd64
+Version: 3.19.0-1ubuntu1.1
+APT-ID: 74192
+Multi-Arch: foreign
+Source: logrotate
+Source-Version: 3.19.0-1ubuntu1.1
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cron | anacron | cron-daemon | systemd-sysv, libacl1 (>= 2.2.23), libc6 (>= 2.34), libpopt0 (>= 1.14), libselinux1 (>= 3.1~)
+Suggests: bsd-mailx | mailx
+
+Package: libapparmor1
+Architecture: amd64
+Version: 3.0.4-2ubuntu2.1
+APT-ID: 72262
+Multi-Arch: same
+Source: apparmor
+Source-Version: 3.0.4-2ubuntu2.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: libapparmor-perl (<< 3.0.3-3)
+Breaks: libapparmor-perl (<< 3.0.3-3)
+
+Package: libwbclient0
+Architecture: amd64
+Version: 2:4.15.9+dfsg-0ubuntu0.2
+APT-ID: 72827
+Multi-Arch: same
+Source: samba
+Source-Version: 2:4.15.9+dfsg-0ubuntu0.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.5.0), libc6 (>= 2.34), libgnutls30 (>= 3.7.0), libicu70 (>= 70.1-1~), libsystemd0, libtalloc2 (>= 2.3.3~), libtevent0 (>= 0.11.0~)
+Pre-Depends: dpkg (>= 1.15.6~)
+Breaks: samba-libs (<< 2:4.11.0+dfsg-1~)
+
+Package: liblwp-mediatypes-perl
+Architecture: all
+Version: 6.04-1
+APT-ID: 2861
+Source: liblwp-mediatypes-perl
+Source-Version: 6.04-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: libllvm13
+Architecture: amd64
+Version: 1:13.0.1-2ubuntu2.1
+APT-ID: 72450
+Multi-Arch: same
+Source: llvm-toolchain-13
+Source-Version: 1:13.0.1-2ubuntu2.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libffi8 (>= 3.4), libgcc-s1 (>= 3.3), libstdc++6 (>= 12), libtinfo6 (>= 6), libxml2 (>= 2.7.4), zlib1g (>= 1:1.2.0)
+
+Package: install-info
+Architecture: amd64
+Version: 6.8-4build1
+APT-ID: 1129
+Multi-Arch: foreign
+Source: texinfo
+Source-Version: 6.8-4build1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Pre-Depends: dpkg (>= 1.16.1)
+Replaces: texinfo (<< 4.13a.dfsg.1-2)
+Breaks: texinfo (<< 4.13a.dfsg.1-2)
+
+Package: librsvg2-common
+Architecture: amd64
+Version: 2.52.5+dfsg-3
+APT-ID: 3571
+Multi-Arch: same
+Source: librsvg
+Source-Version: 2.52.5+dfsg-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: librsvg2-2 (= 2.52.5+dfsg-3), libgdk-pixbuf-2.0-0 (>= 2.23.5-2), libglib2.0-0 (>= 2.50.0)
+
+Package: gnome-remote-desktop
+Architecture: amd64
+Version: 42.4-0ubuntu1
+APT-ID: 71866
+Source: gnome-remote-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, init-system-helpers (>= 1.52), libc6 (>= 2.34), libcairo2 (>= 1.10.0), libepoxy0 (>= 1.4.3), libfreerdp-client2-2 (>= 2.5.0), libfreerdp-server2-2 (>= 2.5.0), libfreerdp2-2 (>= 2.5.0), libfuse3-3 (>= 3.2.3), libglib2.0-0 (>= 2.68), libnotify4 (>= 0.7.0), libpipewire-0.3-0 (>= 0.3.1), libsecret-1-0 (>= 0.7), libvncserver1 (>= 0.9.10), libwinpr2-2 (>= 2.3.0), libxkbcommon0 (>= 1.0.0), fuse3, libmutter-10-0 (>= 42.1), pipewire (>= 0.3.0), pipewire-media-session | wireplumber
+Breaks: gnome-control-center (<< 1:41.4-1ubuntu10)
+
+Package: libxcomposite1
+Architecture: amd64
+Version: 1:0.4.5-1build2
+APT-ID: 4190
+Multi-Arch: same
+Source: libxcomposite
+Source-Version: 1:0.4.5-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.4.99.1)
+
+Package: libnuma1
+Architecture: amd64
+Version: 2.0.14-3ubuntu2
+APT-ID: 3105
+Multi-Arch: same
+Source: numactl
+Source-Version: 2.0.14-3ubuntu2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libfile-desktopentry-perl
+Architecture: all
+Version: 0.22-2
+APT-ID: 2219
+Source: libfile-desktopentry-perl
+Source-Version: 0.22-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libfile-basedir-perl, liburi-perl
+Recommends: x-terminal-emulator
+
+Package: libgamemodeauto0
+Architecture: amd64
+Version: 1.6.1-1build2
+APT-ID: 2291
+Multi-Arch: same
+Source: gamemode
+Source-Version: 1.6.1-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: libgamemode0 (= 1.6.1-1build2)
+
+Package: python3-speechd
+Architecture: all
+Version: 0.11.1-1ubuntu1
+APT-ID: 79613
+Source: speech-dispatcher
+Source-Version: 0.11.1-1ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: python3-xdg, python3:any
+Replaces: python-speechd
+Breaks: python-speechd
+
+Package: acpi-support
+Architecture: amd64
+Version: 0.144
+APT-ID: 3
+Source: acpi-support
+Source-Version: 0.144
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: acpid (>= 1.0.4-1ubuntu4)
+Recommends: toshset, wireless-tools
+Conflicts: uswsusp (<= 0.2)
+
+Package: plymouth-theme-ubuntu-text
+Architecture: amd64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4927
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libplymouth5 (>= 0.9.2), plymouth (= 0.9.5+git20211018-1ubuntu3), lsb-release
+Provides: plymouth-theme
+
+Package: libgspell-1-2
+Architecture: amd64
+Version: 1.9.1-4
+APT-ID: 2507
+Multi-Arch: same
+Source: gspell
+Source-Version: 1.9.1-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgspell-1-common (>= 1.9.1-4), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libenchant-2-2 (>= 2.2.3), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.44), libgtk-3-0 (>= 3.20), libharfbuzz0b (>= 0.6.0), libicu70 (>= 70.1-1~), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0)
+
+Package: python3-httplib2
+Architecture: all
+Version: 0.20.2-2
+APT-ID: 5260
+Source: python-httplib2
+Source-Version: 0.20.2-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ca-certificates, python3-pyparsing, python3:any
+Breaks: python3-pysimplesoap (<< 1.16-2.1), python3-wsgi-intercept (<< 1.9.0)
+
+Package: python3
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74297
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3.10 (>= 3.10.6-1~), libpython3-stdlib (= 3.10.6-1~22.04)
+Pre-Depends: python3-minimal (= 3.10.6-1~22.04)
+Suggests: python3-doc (>= 3.10.6-1~22.04), python3-tk (>= 3.10.6-1~), python3-venv (>= 3.10.6-1~22.04)
+Replaces: python3-minimal (<< 3.1.2-2)
+Provides: python3-profiler
+
+Package: python3
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5131
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: python3.10 (>= 3.10.4-1~), libpython3-stdlib (= 3.10.4-0ubuntu2)
+Pre-Depends: python3-minimal (= 3.10.4-0ubuntu2)
+Suggests: python3-doc (>= 3.10.4-0ubuntu2), python3-tk (>= 3.9.10-2~), python3-venv (>= 3.10.4-0ubuntu2)
+Replaces: python3-minimal (<< 3.1.2-2)
+Provides: python3-profiler
+
+Package: libasound2-plugins
+Architecture: amd64
+Version: 1.2.6-1
+APT-ID: 1640
+Multi-Arch: same
+Source: alsa-plugins
+Source-Version: 1.2.6-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.2.5), libc6 (>= 2.34), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libpulse0 (>= 0.99.1-1~), libsamplerate0 (>= 0.1.7)
+
+Package: libatasmart4
+Architecture: amd64
+Version: 0.19-5build2
+APT-ID: 1650
+Multi-Arch: same
+Source: libatasmart
+Source-Version: 0.19-5build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libudev1 (>= 183)
+
+Package: system-config-printer-udev
+Architecture: amd64
+Version: 1.5.16-0ubuntu3
+APT-ID: 5732
+Source: system-config-printer
+Source-Version: 1.5.16-0ubuntu3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.3.2-2~), python3-cups (>= 1.9.42), python3-cupshelpers (>= 1.5.16-0ubuntu3), python3-dbus, libc6 (>= 2.34), libcups2 (>= 1.6.0), libglib2.0-0 (>= 2.12.0), libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.8)
+
+Package: libxft2
+Architecture: amd64
+Version: 2.3.4-1
+APT-ID: 4208
+Multi-Arch: same
+Source: xft
+Source-Version: 2.3.4-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.3.5), libx11-6, libxrender1
+
+Package: libwpd-0.10-10
+Architecture: amd64
+Version: 0.10.3-2build1
+APT-ID: 4080
+Multi-Arch: same
+Source: libwpd
+Source-Version: 0.10.3-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11)
+Conflicts: libwpd0, libwpd2, libwpd3, libwpd4, libwpd5, libwpd6, libwpd8
+Replaces: libwpd0, libwpd2, libwpd3, libwpd4, libwpd5, libwpd6, libwpd8
+
+Package: libdbus-1-3
+Architecture: amd64
+Version: 1.12.20-2ubuntu4
+APT-ID: 2024
+Multi-Arch: same
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0
+Recommends: dbus
+Breaks: dbus (<< 1.9.16-1~)
+
+Package: language-pack-en
+Architecture: all
+Version: 1:22.04+20220721
+APT-ID: 71952
+Source: language-pack-en
+Source-Version: 1:22.04+20220721
+Priority: optional
+Section: translations
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: language-pack-en-base (>= 1:22.04+20220721)
+Pre-Depends: dpkg (>= 1.16.1)
+Replaces: language-pack-en (<< 1:22.04+20220721), language-pack-en-base, language-pack-gnome-en (<< 1:22.04+20220721), language-pack-gnome-en-base (<< 1:22.04+20220721), language-pack-kde-en (<< 1:22.04+20220721), language-pack-kde-en-base (<< 1:22.04+20220721)
+
+Package: x11-utils
+Architecture: amd64
+Version: 7.7+5build2
+APT-ID: 5991
+Multi-Arch: foreign
+Source: x11-utils
+Source-Version: 7.7+5build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfontconfig1 (>= 2.12.6), libfontenc1 (>= 1:1.1.4), libgl1, libx11-6, libx11-xcb1 (>= 2:1.7.2), libxaw7 (>= 2:1.0.14), libxcb-shape0, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.4.5), libxext6, libxft2 (>> 2.1.1), libxi6, libxinerama1 (>= 2:1.1.4), libxkbfile1 (>= 1:1.1.0), libxmu6 (>= 2:1.1.3), libxmuu1 (>= 2:1.1.3), libxrandr2 (>= 2:1.2.0), libxrender1, libxt6 (>= 1:1.1.0), libxtst6, libxv1, libxxf86dga1, libxxf86vm1
+Suggests: mesa-utils
+
+Package: libhtml-tree-perl
+Architecture: all
+Version: 5.07-2
+APT-ID: 2596
+Multi-Arch: foreign
+Source: libhtml-tree-perl
+Source-Version: 5.07-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, libhtml-parser-perl, libhtml-tagset-perl
+Recommends: libhtml-format-perl, libwww-perl
+
+Package: wireless-regdb
+Architecture: all
+Version: 2022.06.06-0ubuntu1~22.04.1
+APT-ID: 74545
+Multi-Arch: foreign
+Source: wireless-regdb
+Source-Version: 2022.06.06-0ubuntu1~22.04.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-urllib3
+Architecture: all
+Version: 1.26.5-1~exp1
+APT-ID: 5521
+Source: python-urllib3
+Source-Version: 1.26.5-1~exp1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-six
+Suggests: python3-cryptography, python3-idna, python3-openssl, python3-socks
+Recommends: ca-certificates
+
+Package: pipewire
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 4912
+Multi-Arch: same
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu1), pipewire-bin (= 0.3.48-1ubuntu1), init-system-helpers (>= 1.52)
+
+Package: libxdamage1
+Architecture: amd64
+Version: 1:1.1.5-2build2
+APT-ID: 4196
+Multi-Arch: same
+Source: libxdamage
+Source-Version: 1:1.1.5-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.4.99.1)
+
+Package: irqbalance
+Architecture: amd64
+Version: 1.8.0-1build1
+APT-ID: 1146
+Source: irqbalance
+Source-Version: 1.8.0-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libglib2.0-0 (>= 2.35.8), libncursesw6 (>= 6), libnuma1 (>= 2.0.11), libsystemd0, libtinfo6 (>= 6)
+Pre-Depends: init-system-helpers (>= 1.54~)
+
+Package: ubuntu-report
+Architecture: amd64
+Version: 1.7.1
+APT-ID: 5895
+Source: ubuntu-report
+Source-Version: 1.7.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: language-pack-gnome-en-base
+Architecture: all
+Version: 1:22.04+20220721
+APT-ID: 72017
+Source: language-pack-gnome-en-base
+Source-Version: 1:22.04+20220721
+Priority: optional
+Section: translations
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: locales (>= 2.3.6), language-pack-gnome-en (>= 1:22.04+20220721)
+Pre-Depends: dpkg (>= 1.16.1)
+Conflicts: language-pack-gnome-en (<< 1:22.04+20220721)
+Replaces: language-pack-en (<< 1:22.04+20220721), language-pack-en-base (<< 1:22.04+20220721), language-pack-gnome-en (<< 1:22.04+20220721), language-pack-gnome-en-base (<< 1:22.04+20220721), language-pack-kde-en (<< 1:22.04+20220721), language-pack-kde-en-base (<< 1:22.04+20220721)
+
+Package: libgdk-pixbuf-2.0-0
+Architecture: amd64
+Version: 2.42.8+dfsg-1ubuntu0.1
+APT-ID: 72369
+Multi-Arch: same
+Source: gdk-pixbuf
+Source-Version: 2.42.8+dfsg-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgdk-pixbuf2.0-common (>= 2.42.8+dfsg-1ubuntu0.1), shared-mime-info, libc6 (>= 2.34), libglib2.0-0 (>= 2.59.0), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3)
+Recommends: libgdk-pixbuf2.0-bin
+Replaces: libgdk-pixbuf2.0-0 (<< 2.40.0+dfsg-6~)
+Breaks: libgdk-pixbuf2.0-0 (<< 2.40.0+dfsg-6~)
+
+Package: fonts-samyak-gujr
+Architecture: all
+Version: 1.2.2-5build1
+APT-ID: 489
+Multi-Arch: foreign
+Source: fonts-samyak
+Source-Version: 1.2.2-5build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-gujarati-fonts (<< 2:1.0)
+Breaks: ttf-gujarati-fonts (<< 2:1.0)
+
+Package: python3-aptdaemon
+Architecture: all
+Version: 1.1.1+bzr982-0ubuntu39
+APT-ID: 5147
+Source: aptdaemon
+Source-Version: 1.1.1+bzr982-0ubuntu39
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), aptdaemon, gir1.2-glib-2.0, gir1.2-packagekitglib-1.0 (>= 1.1.1), python3-apt (>= 0.8.5~ubuntu1), python3-defer (>= 1.0.6), python3-dbus, python3-gi, python3-pkg-resources, iso-codes
+
+Package: gnupg
+Architecture: all
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71874
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dirmngr (<< 2.2.27-3ubuntu2.1.1~), dirmngr (>= 2.2.27-3ubuntu2.1), gnupg-l10n (= 2.2.27-3ubuntu2.1), gnupg-utils (<< 2.2.27-3ubuntu2.1.1~), gnupg-utils (>= 2.2.27-3ubuntu2.1), gpg (<< 2.2.27-3ubuntu2.1.1~), gpg (>= 2.2.27-3ubuntu2.1), gpg-agent (<< 2.2.27-3ubuntu2.1.1~), gpg-agent (>= 2.2.27-3ubuntu2.1), gpg-wks-client (<< 2.2.27-3ubuntu2.1.1~), gpg-wks-client (>= 2.2.27-3ubuntu2.1), gpg-wks-server (<< 2.2.27-3ubuntu2.1.1~), gpg-wks-server (>= 2.2.27-3ubuntu2.1), gpgsm (<< 2.2.27-3ubuntu2.1.1~), gpgsm (>= 2.2.27-3ubuntu2.1), gpgv (<< 2.2.27-3ubuntu2.1.1~), gpgv (>= 2.2.27-3ubuntu2.1)
+Suggests: parcimonie, xloadimage
+Replaces: gnupg2 (<< 2.1.11-7+exp1)
+Breaks: debsig-verify (<< 0.15), dirmngr (<< 2.2.27-3ubuntu2.1), gnupg2 (<< 2.1.11-7+exp1), libgnupg-interface-perl (<< 0.52-3), libgnupg-perl (<= 0.19-1), libmail-gnupg-perl (<= 0.22-1), monkeysphere (<< 0.38~), php-crypt-gpg (<= 1.4.1-1), python-apt (<= 1.1.0~beta4), python-gnupg (<< 0.3.8-3), python3-apt (<= 1.1.0~beta4)
+
+Package: libuno-purpenvhelpergcc3-3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72797
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgcc-s1 (>= 3.0), libstdc++6 (>= 5), libuno-cppu3 (>= 1.4.0), libuno-sal3 (>= 1.4.0)
+Replaces: uno-libs3, ure (<< 5.0.0~rc2-1)
+Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3
+
+Package: gir1.2-rb-3.0
+Architecture: amd64
+Version: 3.4.4-5ubuntu1
+APT-ID: 741
+Multi-Arch: same
+Source: rhythmbox
+Source-Version: 3.4.4-5ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop (>= 0.10.0), gir1.2-glib-2.0 (>= 0.10.0), gir1.2-gst-plugins-base-1.0 (>= 1.4.0), gir1.2-gstreamer-1.0 (>= 1.4.0), gir1.2-gtk-3.0 (>= 3.20.0), librhythmbox-core10 (>= 3.4.3)
+Provides: gir1.2-mpid-3.0 (= 3.4.4-5ubuntu1)
+
+Package: libdebuginfod1
+Architecture: amd64
+Version: 0.186-1build1
+APT-ID: 2050
+Multi-Arch: same
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcurl3-gnutls (>= 7.28.0), libelf1 (= 0.186-1build1), libdw1 (= 0.186-1build1), libdebuginfod-common (>= 0.186-1build1)
+
+Package: libsasl2-modules-db
+Architecture: amd64
+Version: 2.1.27+dfsg2-3ubuntu1
+APT-ID: 3638
+Multi-Arch: same
+Source: cyrus-sasl2
+Source-Version: 2.1.27+dfsg2-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libdb5.3
+
+Package: libmpfr6
+Architecture: amd64
+Version: 4.1.0-3build3
+APT-ID: 2965
+Multi-Arch: same
+Source: mpfr4
+Source-Version: 4.1.0-3build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgmp10 (>= 2:6.2.1+dfsg)
+Breaks: libgmp3 (<< 4.1.4-3), libmpc3 (<< 1.1.0-1~)
+
+Package: liblouis-data
+Architecture: all
+Version: 3.20.0-2ubuntu0.1
+APT-ID: 72451
+Multi-Arch: foreign
+Source: liblouis
+Source-Version: 3.20.0-2ubuntu0.1
+Priority: extra
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: xserver-xorg
+Architecture: amd64
+Version: 1:7.7+23ubuntu2
+APT-ID: 6044
+Source: xorg
+Source-Version: 1:7.7+23ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-xorg-core (>= 2:1.17.2-2), xserver-xorg-input-all | xorg-driver-input, xkb-data (>= 1.4), x11-xkb-utils, python3-apport
+Recommends: libgl1-mesa-dri, mesa-vulkan-drivers, xserver-xorg-legacy, xserver-xorg-video-all
+Provides: xserver
+
+Package: gvfs-fuse
+Architecture: amd64
+Version: 1.48.2-0ubuntu1
+APT-ID: 71902
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fuse3, gvfs (= 1.48.2-0ubuntu1), libc6 (>= 2.34), libfuse3-3 (>= 3.2.3), libglib2.0-0 (>= 2.65.1)
+
+Package: lp-solve
+Architecture: amd64
+Version: 5.5.2.5-2build2
+APT-ID: 4598
+Source: lp-solve
+Source-Version: 5.5.2.5-2build2
+Priority: optional
+Section: math
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcolamd2 (>= 1:4.5.2)
+
+Package: libcheese-gtk25
+Architecture: amd64
+Version: 41.1-1build1
+APT-ID: 1881
+Multi-Arch: same
+Source: cheese
+Source-Version: 41.1-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libcanberra-gtk3-0 (>= 0.25), libcheese8 (= 41.1-1build1), libclutter-1.0-0 (>= 1.16), libclutter-gtk-1.0-0 (>= 0.91.8), libcogl20 (>= 1.17.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.39.90), libgtk-3-0 (>= 3.13.4), libx11-6, gstreamer1.0-clutter-3.0, cheese-common (>= 41.1-1build1)
+
+Package: libgoa-backend-1.0-1
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 2457
+Multi-Arch: same
+Source: gnome-online-accounts
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgoa-1.0-common (>= 3.44.0-1ubuntu1), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libgck-1-0 (>= 2.91.1), libgcr-base-3-1 (>= 3.8.0), libgcr-ui-3-1 (>= 3.8.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.59.0), libgoa-1.0-0b (>= 3.17.92), libgtk-3-0 (>= 3.19.12), libharfbuzz0b (>= 0.6.0), libjavascriptcoregtk-4.0-18 (>= 2.35.90), libjson-glib-1.0-0 (>= 1.5.2), libp11-kit0 (>= 0.23.18.1), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), librest-0.7-0 (>= 0.7.92), libsecret-1-0 (>= 0.7), libsnapd-glib1 (>= 1.43), libsoup2.4-1 (>= 2.42), libwebkit2gtk-4.0-37 (>= 2.26), libxml2 (>= 2.9.0)
+
+Package: fonts-tlwg-typo
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 537
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-typo-ttf | fonts-tlwg-typo-otf
+
+Package: brltty
+Architecture: amd64
+Version: 6.4-4ubuntu3
+APT-ID: 71721
+Multi-Arch: foreign
+Source: brltty
+Source-Version: 6.4-4ubuntu3
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.16), libbluetooth3 (>= 4.91), libbrlapi0.8 (>= 6.4), libc6 (>= 2.34), libcap2 (>= 1:2.10), libdbus-1-3 (>= 1.9.14), libexpat1 (>= 2.0.1), libglib2.0-0 (>= 2.16.0), libgpm2 (>= 1.20.7), libicu70 (>= 70.1-1~), liblouis20 (>= 3.20.0), libncursesw6 (>= 6), libpcre2-32-0 (>= 10.22), libpolkit-gobject-1-0 (>= 0.101), libsystemd0, libtinfo6 (>= 6), debconf (>= 0.5) | debconf-2.0, lsb-base (>= 3.2-14), policykit-1, initramfs-tools (>= 0.40ubuntu30)
+Suggests: brltty-speechd, brltty-x11, console-braille, unicode-cldr-core
+Recommends: python3
+Replaces: libbrlapi1 (<< 3.7.2-7.1)
+
+Package: libmailtools-perl
+Architecture: all
+Version: 2.21-1
+APT-ID: 2882
+Source: libmailtools-perl
+Source-Version: 2.21-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, libnet-perl, libnet-smtp-ssl-perl, libtest-simple-perl, libtimedate-perl
+
+Package: libclucene-core1v5
+Architecture: amd64
+Version: 2.3.3.4+dfsg-1ubuntu5
+APT-ID: 1897
+Multi-Arch: same
+Source: clucene-core
+Source-Version: 2.3.3.4+dfsg-1ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4)
+Conflicts: libclucene-core1
+Replaces: libclucene-core1
+
+Package: gstreamer1.0-plugins-base-apps
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 931
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), gstreamer1.0-tools
+
+Package: libgail18
+Architecture: amd64
+Version: 2.24.33-2ubuntu2
+APT-ID: 2289
+Multi-Arch: same
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.32.0), libc6 (>= 2.4), libglib2.0-0 (>= 2.27.3), libgtk2.0-0 (= 2.24.33-2ubuntu2), libpango-1.0-0 (>= 1.28.3)
+
+Package: gpg-wks-server
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71883
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpg (= 2.2.27-3ubuntu2.1), gpg-agent (= 2.2.27-3ubuntu2.1), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+
+Package: libkrb5support0
+Architecture: amd64
+Version: 1.19.2-2
+APT-ID: 2785
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: libgssapi-krb5-2 (<< 1.13~alpha1-1), libk5crypto3 (<< 1.16), libkadm5clnt-mit9 (<< 1.13~alpha1-1), libkadm5srv-mit9 (<< 1.13~alpha1-1), libkdb5-8 (<< 1.16)
+
+Package: gedit-common
+Architecture: all
+Version: 41.0-3
+APT-ID: 616
+Source: gedit
+Source-Version: 41.0-3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.3.2-2~), dconf-gsettings-backend | gsettings-backend
+Recommends: gedit
+
+Package: libwmf-0.2-7
+Architecture: amd64
+Version: 0.2.12-5ubuntu1
+APT-ID: 4068
+Multi-Arch: same
+Source: libwmf
+Source-Version: 0.2.12-5ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libexpat1 (>= 2.0.1), libfreetype6 (>= 2.2.1), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libwmflite-0.2-7 (>= 0.2.12), libx11-6, zlib1g (>= 1:1.1.4)
+Suggests: libwmf-0.2-7-gtk
+Recommends: fonts-urw-base35
+Replaces: libwmf0.2-7 (<< 0.2.12-1)
+Breaks: libwmf0.2-7 (<< 0.2.12-1)
+
+Package: libuno-cppu3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72795
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.0), libstdc++6 (>= 12), libuno-sal3 (>= 5.3.0~alpha), libuno-salhelpergcc3-3 (>= 1.4.0)
+Replaces: uno-libs3, ure (<< 5.0.0~rc2-1)
+Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3
+
+Package: libodfgen-0.1-1
+Architecture: amd64
+Version: 0.1.8-2build2
+APT-ID: 3121
+Multi-Arch: same
+Source: libodfgen
+Source-Version: 0.1.8-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11), libxml2 (>= 2.7.4)
+
+Package: libgpod-common
+Architecture: amd64
+Version: 0.8.3-16build2
+APT-ID: 2483
+Source: libgpod
+Source-Version: 0.8.3-16build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.31.18), libgpod4 (>= 0.7.90), libimobiledevice6 (>= 1.3.0), libplist3 (>= 2.2.0), libsgutils2-2 (>= 1.27), libusb-1.0-0 (>= 2:1.0.8), libxml2 (>= 2.7.4)
+Replaces: libgpod0 (<< 0.3.0-4)
+
+Package: libsoup-gnome2.4-1
+Architecture: amd64
+Version: 2.74.2-3
+APT-ID: 3706
+Multi-Arch: same
+Source: libsoup2.4
+Source-Version: 2.74.2-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.58), libsoup2.4-1 (= 2.74.2-3)
+
+Package: libboost-filesystem1.74.0
+Architecture: amd64
+Version: 1.74.0-14ubuntu3
+APT-ID: 1768
+Multi-Arch: same
+Source: boost1.74
+Source-Version: 1.74.0-14ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+
+Package: aisleriot
+Architecture: amd64
+Version: 1:3.22.22-1
+APT-ID: 12
+Source: aisleriot
+Source-Version: 1:3.22.22-1
+Priority: optional
+Section: games
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, guile-2.2-libs, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.10.0), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.2), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.19.12), librsvg2-2 (>= 2.32.0)
+Suggests: gnome-cards-data
+Recommends: yelp
+
+Package: python3-software-properties
+Architecture: all
+Version: 0.99.22.3
+APT-ID: 74354
+Source: software-properties
+Source-Version: 0.99.22.3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpg, iso-codes, lsb-release, python3, python3-apt (>= 0.6.20ubuntu16), python3-gi, python3-launchpadlib, python3:any
+Recommends: unattended-upgrades
+
+Package: libsane-hpaio
+Architecture: amd64
+Version: 3.21.12+dfsg0-1
+APT-ID: 3633
+Multi-Arch: same
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcups2 (>= 1.6.0), libdbus-1-3 (>= 1.9.14), libhpmud0 (>= 3.21.12+dfsg0)
+Recommends: hplip (= 3.21.12+dfsg0-1), sane-utils
+Replaces: hplip (<< 3.17.10+repack0-5~)
+Breaks: hplip (<< 3.17.10+repack0-5~)
+
+Package: libsepol2
+Architecture: amd64
+Version: 3.3-1build1
+APT-ID: 3663
+Multi-Arch: same
+Source: libsepol
+Source-Version: 3.3-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libcairo-gobject2
+Architecture: amd64
+Version: 1.16.0-5ubuntu2
+APT-ID: 1829
+Multi-Arch: same
+Source: cairo
+Source-Version: 1.16.0-5ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcairo2 (= 1.16.0-5ubuntu2), libglib2.0-0 (>= 2.14.0)
+
+Package: python3-full
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78595
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), python3.10-full (>= 3.10.6-1~), python3-venv (= 3.10.6-1~22.04), 2to3, idle, python3-distutils, python3-gdbm, python3-lib2to3, python3-tk
+Suggests: python3-dev
+Recommends: python3-doc, python3-examples
+
+Package: python3-full
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 55955
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), python3.10-full (>= 3.10.4-1~), python3-venv (= 3.10.4-0ubuntu2), 2to3, idle, python3-distutils, python3-gdbm, python3-lib2to3, python3-tk
+Suggests: python3-dev
+Recommends: python3-doc, python3-examples
+
+Package: libqpdf28
+Architecture: amd64
+Version: 10.6.3-1
+APT-ID: 3349
+Multi-Arch: same
+Source: qpdf
+Source-Version: 10.6.3-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libgnutls30 (>= 3.7.0), libjpeg8 (>= 8c), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: ubuntu-keyring
+Architecture: all
+Version: 2021.03.26
+APT-ID: 5888
+Multi-Arch: foreign
+Source: ubuntu-keyring
+Source-Version: 2021.03.26
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ubuntu-cloudimage-keyring (<< 2018.02.05)
+Breaks: ubuntu-cloudimage-keyring (<< 2018.02.05)
+
+Package: libgs9-common
+Architecture: all
+Version: 9.55.0~dfsg1-0ubuntu5
+APT-ID: 2500
+Multi-Arch: foreign
+Source: ghostscript
+Source-Version: 9.55.0~dfsg1-0ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-urw-base35 (>= 20200910)
+Recommends: fonts-droid-fallback
+
+Package: librygel-server-2.6-2
+Architecture: amd64
+Version: 0.40.3-1ubuntu2
+APT-ID: 3626
+Multi-Arch: same
+Source: rygel
+Source-Version: 0.40.3-1ubuntu2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.56.0), libgssdp-1.2-0 (>= 1.1.3), libgupnp-1.2-1 (>= 1.1.0), libgupnp-av-1.0-3 (>= 0.12.8), libmediaart-2.0-0 (>= 1.9.0), librygel-core-2.6-2 (>= 0.40.3), libsoup2.4-1 (>= 2.44.0), libxml2 (>= 2.7.4)
+
+Package: libflac8
+Architecture: amd64
+Version: 1.3.3-2build2
+APT-ID: 2237
+Multi-Arch: same
+Source: flac
+Source-Version: 1.3.3-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libogg0 (>= 1.0rc3)
+
+Package: python3.10-examples
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 74365
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10:any (>= 3.10.6-1~22.04)
+
+Package: python3.10-examples
+Architecture: all
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79411
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: python3.10:any (>= 3.10.4-3ubuntu0.1)
+
+Package: python3.10-examples
+Architecture: all
+Version: 3.10.4-3
+APT-ID: 5554
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: python3.10:any (>= 3.10.4-3)
+
+Package: libpoppler-cpp0v5
+Architecture: amd64
+Version: 22.02.0-2ubuntu0.1
+APT-ID: 72515
+Multi-Arch: same
+Source: poppler
+Source-Version: 22.02.0-2ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpoppler118 (= 22.02.0-2ubuntu0.1), libc6 (>= 2.14), libstdc++6 (>= 11)
+Conflicts: libpoppler-cpp0
+Replaces: libpoppler-cpp0
+
+Package: libsmbclient
+Architecture: amd64
+Version: 2:4.15.9+dfsg-0ubuntu0.2
+APT-ID: 72747
+Multi-Arch: same
+Source: samba
+Source-Version: 2:4.15.9+dfsg-0ubuntu0.2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: samba-libs (= 2:4.15.9+dfsg-0ubuntu0.2), libbsd0 (>= 0.0), libc6 (>= 2.14), libtalloc2 (>= 2.3.3~), libtevent0 (>= 0.11.0~), libwbclient0 (= 2:4.15.9+dfsg-0ubuntu0.2)
+Pre-Depends: dpkg (>= 1.15.6~)
+
+Package: libxatracker2
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72850
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm-nouveau2 (>= 2.4.66), libdrm2 (>= 2.4.75), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.4), libllvm13, libstdc++6 (>= 11), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+
+Package: squashfs-tools
+Architecture: amd64
+Version: 1:4.5-3build1
+APT-ID: 5692
+Source: squashfs-tools
+Source-Version: 1:4.5-3build1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), liblzma5 (>= 5.1.1alpha+20120614), liblzo2-2 (>= 2.02), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+
+Package: poppler-data
+Architecture: all
+Version: 0.4.11-1
+APT-ID: 4935
+Multi-Arch: foreign
+Source: poppler-data
+Source-Version: 0.4.11-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.6~)
+Suggests: poppler-utils, ghostscript, fonts-japanese-mincho | fonts-ipafont-mincho, fonts-japanese-gothic | fonts-ipafont-gothic, fonts-arphic-ukai, fonts-arphic-uming, fonts-nanum (>= 20131007~)
+Replaces: cmap-adobe-cns1 (<= 0+20090930-2), cmap-adobe-gb1 (<= 0+20090930-2), cmap-adobe-japan1 (<= 0+20090930-2), cmap-adobe-japan2 (<= 0+20090930-2), cmap-adobe-korea1 (<= 1.20100103-3), gs-cjk-resource (<= 1.20100103-3)
+Breaks: cmap-adobe-cns1 (<= 0+20090930-2), cmap-adobe-gb1 (<= 0+20090930-2), cmap-adobe-japan1 (<= 0+20090930-2), cmap-adobe-japan2 (<= 0+20090930-2), cmap-adobe-korea1 (<= 1.20100103-3), gs-aladdin (<= 6.50-5), gs-cjk-resource (<= 1.20100103-3)
+Enhances: ghostscript
+Provides: gs-cjk-resource, cmap-adobe-korea1, cmap-adobe-japan2, cmap-adobe-japan1, cmap-adobe-gb1, cmap-adobe-cns1
+
+Package: fonts-noto-mono
+Architecture: all
+Version: 20201225-1build1
+APT-ID: 481
+Multi-Arch: foreign
+Source: fonts-noto
+Source-Version: 20201225-1build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-noto-core (<< 20201027-2~), fonts-noto-unhinted (<< 20201027-3~)
+Breaks: fonts-noto-core (<< 20201027-2~), fonts-noto-unhinted (<< 20201027-3~)
+Enhances: fonts-noto-core
+
+Package: python3-pyparsing
+Architecture: all
+Version: 2.4.7-1
+APT-ID: 5426
+Source: pyparsing
+Source-Version: 2.4.7-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python-pyparsing-doc
+
+Package: libwmf-0.2-7-gtk
+Architecture: amd64
+Version: 0.2.12-5ubuntu1
+APT-ID: 4069
+Source: libwmf
+Source-Version: 0.2.12-5ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.12.0), libwmf-0.2-7 (= 0.2.12-5ubuntu1), libwmflite-0.2-7 (>= 0.2.12)
+Replaces: libwmf0.2-7 (<< 0.2.8.4-12)
+Breaks: libwmf0.2-7 (<< 0.2.8.4-12)
+
+Package: linux-headers-5.15.0-48-generic
+Architecture: amd64
+Version: 5.15.0-48.54
+APT-ID: 73268
+Source: linux
+Source-Version: 5.15.0-48.54
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-headers-5.15.0-48, libc6 (>= 2.34), libelf1 (>= 0.142), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.2.3.3)
+Provides: linux-headers-3.0, linux-headers
+
+Package: fonts-tlwg-typist-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 536
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-typist (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-typist (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-typist (<< 1:0.6.2-2)
+
+Package: libbpf0
+Architecture: amd64
+Version: 1:0.5.0-1
+APT-ID: 1789
+Multi-Arch: same
+Source: libbpf
+Source-Version: 0.5.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.22), libelf1 (>= 0.142), zlib1g (>= 1:1.2.3.3)
+
+Package: ubuntu-mono
+Architecture: all
+Version: 20.10-0ubuntu2
+APT-ID: 5890
+Multi-Arch: foreign
+Source: ubuntu-themes
+Source-Version: 20.10-0ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adwaita-icon-theme, hicolor-icon-theme, humanity-icon-theme
+
+Package: libfastjson4
+Architecture: amd64
+Version: 0.99.9-1build2
+APT-ID: 2196
+Multi-Arch: same
+Source: libfastjson
+Source-Version: 0.99.9-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libmnl0
+Architecture: amd64
+Version: 1.0.4-3build2
+APT-ID: 2943
+Multi-Arch: same
+Source: libmnl
+Source-Version: 1.0.4-3build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libboost-thread1.74.0
+Architecture: amd64
+Version: 1.74.0-14ubuntu3
+APT-ID: 1785
+Multi-Arch: same
+Source: boost1.74
+Source-Version: 1.74.0-14ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+
+Package: libreoffice-impress
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72592
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), libreoffice-draw (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), libc6 (>= 2.32), libepoxy0 (>= 1.0), libetonyek-0.1-1, libgcc-s1 (>= 3.0), libmwaw-0.3-3, libodfgen-0.1-1, librevenge-0.0-0, libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 1.4.0), uno-libs-private
+Suggests: bluez
+Conflicts: libreoffice-ogltrans (<< 1:6.1.4-2~)
+Replaces: libreoffice-common (<< 1:6.4.2~rc1~), libreoffice-ogltrans (<< 1:6.1.4-2~)
+Breaks: libreoffice-common (<< 1:6.4.2~rc1~)
+Provides: libreoffice-ogltrans
+
+Package: libtss2-mu0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3898
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.14)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: xserver-xorg-video-vesa
+Architecture: amd64
+Version: 1:2.5.0-1build4
+APT-ID: 6061
+Source: xserver-xorg-video-vesa
+Source-Version: 1:2.5.0-1build4
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Provides: xorg-driver-video
+
+Package: python3-lazr.uri
+Architecture: all
+Version: 1.0.6-2
+APT-ID: 5293
+Source: lazr.uri
+Source-Version: 1.0.6-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-importlib-metadata | python3 (>> 3.8), python3-pkg-resources, python3:any
+
+Package: gir1.2-gtk-3.0
+Architecture: amd64
+Version: 3.24.33-1ubuntu2
+APT-ID: 71839
+Multi-Arch: same
+Source: gtk+3.0
+Source-Version: 3.24.33-1ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-atk-1.0 (>= 2.35.1), gir1.2-freedesktop (>= 1.39.0), gir1.2-gdkpixbuf-2.0 (>= 2.40.0) | libgdk-pixbuf2.0-dev (>= 2.40.0), gir1.2-glib-2.0 (>= 1.39.0), gir1.2-pango-1.0 (>= 1.44.0), libgtk-3-0 (>= 3.24.24), libgtk-3-common
+Breaks: python-gi (<< 3.18), python3-gi (<< 3.18)
+Provides: gir1.2-gdkx11-3.0 (= 3.24.33-1ubuntu2), gir1.2-gdk-3.0 (= 3.24.33-1ubuntu2)
+
+Package: libextutils-depends-perl
+Architecture: all
+Version: 0.8001-1
+APT-ID: 2193
+Source: libextutils-depends-perl
+Source-Version: 0.8001-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, perl (>= 5.31.8)
+
+Package: gvfs-common
+Architecture: all
+Version: 1.48.2-0ubuntu1
+APT-ID: 71900
+Multi-Arch: foreign
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: desktop-file-utils
+Recommends: gvfs
+
+Package: libxml2
+Architecture: amd64
+Version: 2.9.13+dfsg-1ubuntu0.1
+APT-ID: 72851
+Multi-Arch: same
+Source: libxml2
+Source-Version: 2.9.13+dfsg-1ubuntu0.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libicu70 (>= 70.1-1~), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.2.3.3)
+Conflicts: w3c-dtd-xhtml
+
+Package: switcheroo-control
+Architecture: amd64
+Version: 2.4-3build2
+APT-ID: 5724
+Source: switcheroo-control
+Source-Version: 2.4-3build2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.31.18), libgudev-1.0-0 (>= 146)
+
+Package: libxmu6
+Architecture: amd64
+Version: 2:1.1.3-3
+APT-ID: 4251
+Multi-Arch: same
+Source: libxmu
+Source-Version: 2:1.1.3-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6, libxext6, libxt6
+
+Package: gvfs-libs
+Architecture: amd64
+Version: 1.48.2-0ubuntu1
+APT-ID: 71903
+Multi-Arch: same
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gsettings-desktop-schemas (>= 3.33.0), gvfs-common (= 1.48.2-0ubuntu1), libc6 (>= 2.33), libgcr-base-3-1 (>= 3.8.0), libglib2.0-0 (>= 2.68.0), libsecret-1-0 (>= 0.7)
+
+Package: gir1.2-gtk-4.0
+Architecture: amd64
+Version: 4.6.6+ds-0ubuntu1
+APT-ID: 71840
+Multi-Arch: same
+Source: gtk4
+Source-Version: 4.6.6+ds-0ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop (>= 1.39.0), gir1.2-gdkpixbuf-2.0 (>= 2.30.0), gir1.2-glib-2.0 (>= 1.39.0), gir1.2-graphene-1.0 (>= 1.10.4~), gir1.2-pango-1.0 (>= 1.50.0), libgtk-4-1 (>= 4.6.0), libgtk-4-common
+Breaks: python-gi (<< 3.18), python3-gi (<< 3.18)
+Provides: gir1.2-gsk-4.0 (= 4.6.6+ds-0ubuntu1), gir1.2-gdkx11-4.0 (= 4.6.6+ds-0ubuntu1), gir1.2-gdkwayland-4.0 (= 4.6.6+ds-0ubuntu1), gir1.2-gdk-4.0 (= 4.6.6+ds-0ubuntu1)
+
+Package: mutter-common
+Architecture: all
+Version: 42.2-0ubuntu1
+APT-ID: 74199
+Multi-Arch: foreign
+Source: mutter
+Source-Version: 42.2-0ubuntu1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: libmpc3
+Architecture: amd64
+Version: 1.2.1-2build1
+APT-ID: 2959
+Multi-Arch: same
+Source: mpclib3
+Source-Version: 1.2.1-2build1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgmp10 (>= 2:6.2.1+dfsg), libmpfr6 (>= 4.0.0)
+
+Package: gir1.2-packagekitglib-1.0
+Architecture: amd64
+Version: 1.2.5-2ubuntu2
+APT-ID: 735
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.36), libpackagekit-glib2-18 (>= 1.2.5)
+
+Package: libcamel-1.2-63
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72285
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.41.1), libgssapi-krb5-2 (>= 1.17), libicu70 (>= 70.1-1~), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.13.4-2~), libsqlite3-0 (>= 3.6.0), zlib1g (>= 1:1.1.4)
+
+Package: xz-utils
+Architecture: amd64
+Version: 5.2.5-2ubuntu1
+APT-ID: 6067
+Multi-Arch: foreign
+Source: xz-utils
+Source-Version: 5.2.5-2ubuntu1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblzma5 (>= 5.2.2)
+Conflicts: lzma (<< 9.22-1), xz-lzma
+Replaces: lzip (<< 1.8~rc2), xz-lzma
+Breaks: lzip (<< 1.8~rc2)
+Provides: lzma
+
+Package: libglib2.0-data
+Architecture: all
+Version: 2.72.1-1
+APT-ID: 2388
+Multi-Arch: foreign
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gnome-calendar
+Architecture: amd64
+Version: 41.2-3
+APT-ID: 782
+Source: gnome-calendar
+Source-Version: 41.2-3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcairo2 (>= 1.2.4), libdazzle-1.0-0 (>= 3.33.90), libecal-2.0-1 (>= 3.33.4), libedataserver-1.2-26 (>= 3.17.90), libedataserverui-1.2-3 (>= 3.17.1), libgeoclue-2-0 (>= 2.4.0), libglib2.0-0 (>= 2.67.5), libgoa-1.0-0b (>= 3.2.0), libgtk-3-0 (>= 3.22.20), libgweather-3-16 (>= 40.0), libhandy-1-0 (>= 1.5.90), libical3 (>= 3.0.0), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libsoup2.4-1 (>= 2.41.90), gsettings-desktop-schemas (>= 3.21.2)
+Recommends: evolution-data-server
+
+Package: fonts-tlwg-garuda-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 518
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-garuda (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-garuda (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-garuda (<< 1:0.6.2-2)
+
+Package: humanity-icon-theme
+Architecture: all
+Version: 0.6.16
+APT-ID: 973
+Source: humanity-icon-theme
+Source-Version: 0.6.16
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adwaita-icon-theme, hicolor-icon-theme
+
+Package: libzstd1
+Architecture: amd64
+Version: 1.4.8+dfsg-3build1
+APT-ID: 4313
+Multi-Arch: same
+Source: libzstd
+Source-Version: 1.4.8+dfsg-3build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: network-manager-gnome
+Architecture: amd64
+Version: 1.24.0-1ubuntu3
+APT-ID: 4746
+Source: network-manager-applet
+Source-Version: 1.24.0-1ubuntu3
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libayatana-appindicator3-1 (>= 0.4.90), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.43.2), libgtk-3-0 (>= 3.10), libjansson4 (>= 2.7), libmm-glib0 (>= 0.7.991), libnm0 (>= 1.16.0), libnma0 (>= 1.8.28), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libsecret-1-0 (>= 0.18), libselinux1 (>= 3.1~), network-manager (>= 1.8), gnome-shell | policykit-1-gnome | polkit-1-auth-agent, default-dbus-session-bus | dbus-session-bus
+Suggests: network-manager-openconnect-gnome, network-manager-openvpn-gnome, network-manager-vpnc-gnome, network-manager-pptp-gnome
+Recommends: gnome-shell | notification-daemon, gnome-keyring, mobile-broadband-provider-info, iso-codes
+
+Package: libgtk2.0-common
+Architecture: all
+Version: 2.24.33-2ubuntu2
+APT-ID: 2536
+Multi-Arch: foreign
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: libgtk2.0-0
+
+Package: libgraphite2-3
+Architecture: amd64
+Version: 1.3.14-1build2
+APT-ID: 2492
+Multi-Arch: same
+Source: graphite2
+Source-Version: 1.3.14-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: libgraphite2-2.0.0
+Breaks: libgraphite2-2.0.0 (<< 1.2.0)
+Provides: libgraphite2-2.0.0
+
+Package: gstreamer1.0-alsa
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 924
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.27), libc6 (>= 2.4), libglib2.0-0 (>= 2.67.3), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0)
+Suggests: alsa-utils (>= 0.9.0)
+Provides: gstreamer1.0-audiosource, gstreamer1.0-audiosink
+
+Package: util-linux
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 5933
+Essential: yes
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libblkid1 (>= 2.37.2), libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libcrypt1 (>= 1:4.1.0), libmount1 (>= 2.37.2), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libsmartcols1 (>= 2.34), libsystemd0, libtinfo6 (>= 6), libudev1 (>= 183), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: dosfstools, kbd, util-linux-locales
+Conflicts: hardlink
+Replaces: hardlink
+Provides: hardlink
+
+Package: libbsd0
+Architecture: amd64
+Version: 0.11.5-1
+APT-ID: 1796
+Multi-Arch: same
+Source: libbsd
+Source-Version: 0.11.5-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libmd0 (>= 1.0.3-2)
+
+Package: libgee-0.8-2
+Architecture: amd64
+Version: 0.20.5-2
+APT-ID: 2343
+Multi-Arch: same
+Source: libgee-0.8
+Source-Version: 0.20.5-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.43.92)
+
+Package: gnome-shell
+Architecture: amd64
+Version: 42.4-0ubuntu0.22.04.1
+APT-ID: 71870
+Source: gnome-shell
+Source-Version: 42.4-0ubuntu0.22.04.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: evolution-data-server (>= 3.33.1), gir1.2-accountsservice-1.0, gir1.2-adw-1, gir1.2-atk-1.0, gir1.2-atspi-2.0 (>= 2.36), gir1.2-gcr-3 (>= 3.7.5), gir1.2-gdesktopenums-3.0 (>= 3.12), gir1.2-gdkpixbuf-2.0, gir1.2-gdm-1.0 (>= 3.18.2), gir1.2-geoclue-2.0, gir1.2-glib-2.0 (>= 1.56.0), gir1.2-gnomebluetooth-3.0 (>= 3.12.0), gir1.2-gnomedesktop-3.0 (>= 3.35.90), gir1.2-graphene-1.0 (>= 1.10.2), gir1.2-gstreamer-1.0, gir1.2-gtk-3.0 (>= 3.16), gir1.2-gtk-4.0, gir1.2-gweather-3.0 (>= 40.0), gir1.2-freedesktop, gir1.2-ibus-1.0 (>= 1.5.22-2ubuntu2~), gir1.2-mutter-10 (>= 42.0), gir1.2-nm-1.0, gir1.2-nma-1.0, gir1.2-pango-1.0, gir1.2-polkit-1.0, gir1.2-rsvg-2.0, gir1.2-soup-2.4 (>= 2.40.1), gir1.2-upowerglib-1.0 (>= 0.99), gir1.2-webkit2-4.0 (>= 2.16.0), gnome-settings-daemon (>= 40~), gnome-shell-common (= 42.4-0ubuntu0.22.04.1), gsettings-desktop-schemas (>= 42~beta), gstreamer1.0-pipewire (>= 0.3.10), libglib2.0-bin (>= 2.53.0), python3, ubuntu-wallpapers, dconf-gsettings-backend | gsettings-backend, libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.14.0), libecal-2.0-1 (>= 3.33.4), libedataserver-1.2-26 (>= 3.33.1), libgcr-base-3-1 (>= 3.8.0), libgdk-pixbuf-2.0-0 (>= 2.23.0), libgirepository-1.0-1 (>= 1.35.9), libgjs0g (>= 1.71.1), libgles2, libglib2.0-0 (>= 2.67.3), libgnome-autoar-0-0 (>= 0.1.1), libgnome-desktop-3-19 (>= 3.35.90), libgraphene-1.0-0 (>= 1.5.4), libgtk-3-0 (>= 3.21.6), libgtk-4-1 (>= 4.0.0), libical3 (>= 3.0.0), libjson-glib-1.0-0 (>= 1.5.2), libmutter-10-0 (>= 42.0), libnm0 (>= 1.10.4), libpango-1.0-0 (>= 1.37.5), libpangocairo-1.0-0 (>= 1.14.0), libpolkit-agent-1-0 (>= 0.100), libpolkit-gobject-1-0 (>= 0.94), libpulse-mainloop-glib0 (>= 13), libpulse0 (>= 13), libsecret-1-0 (>= 0.7), libsystemd0, libwayland-server0 (>= 1.0.2), libx11-6, libxfixes3
+Suggests: gir1.2-malcontent-0 (>= 0.6.0), gir1.2-telepathyglib-0.12, gir1.2-telepathylogger-0.2 (>= 0.8.0), gnome-backgrounds (>= 3.13.90), gnome-shell-extension-prefs, chrome-gnome-shell
+Recommends: bolt (>= 0.3), gdm3 (>= 3.10.0.1-3~), gkbd-capplet, gnome-control-center (>= 1:3.25.2), gnome-remote-desktop, gnome-menus, gnome-user-docs, ibus, iio-sensor-proxy, power-profiles-daemon, switcheroo-control, ubuntu-session | gnome-session, xserver-xorg-legacy, unzip
+Breaks: gnome-session (<< 3.35.3-1ubuntu4~), gnome-shell-extension-appindicator (<< 36), gnome-shell-extension-autohidetopbar (<< 20180511-2~), gnome-shell-extension-caffeine (<< 0~git20171229-3~), gnome-shell-extension-dash-to-panel (<< 43), gnome-shell-extension-dashtodock (<< 70), gnome-shell-extension-desktop-icons (<< 21.04), gnome-shell-extension-desktop-icons-ng (<< 0.16.0~), gnome-shell-extension-multi-monitors (<< 0.00~git20171014.1.df5d6e4-1.1~), gnome-shell-extension-pixelsaver (<< 1.10+git20161217-49f47bf-1.1~), gnome-shell-extension-taskbar (<< 57.0-2.1~), gnome-shell-extension-top-icons-plus (<< 27-3~), gnome-shell-extension-ubuntu-dock (<< 68ubuntu20.10.1), gnome-shell-extension-workspaces-to-dock (<< 54~), gnome-shell-extensions (<< 40.0~), gnome-shell-pomodoro (<< 0.13.4-2.1~), nautilus (<< 1:3.30), yaru-theme-gnome-shell (<< 22.04.1~)
+Provides: polkit-1-auth-agent, notification-daemon
+
+Package: less
+Architecture: amd64
+Version: 590-1build1
+APT-ID: 1539
+Multi-Arch: foreign
+Source: less
+Source-Version: 590-1build1
+Priority: required
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+
+Package: libuno-cppuhelpergcc3-3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72796
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: uno-libs-private (= 1:7.3.6-0ubuntu0.22.04.1), libc6 (>= 2.32), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-sal3 (>= 5.1.0~alpha), libuno-salhelpergcc3-3 (>= 1.4.0)
+Replaces: uno-libs3, ure (<< 5.0.0~rc2-1)
+Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3
+
+Package: python-apt-common
+Architecture: all
+Version: 2.3.0ubuntu2.1
+APT-ID: 74290
+Multi-Arch: foreign
+Source: python-apt
+Source-Version: 2.3.0ubuntu2.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: python-apt (<< 0.7.98+nmu1)
+Breaks: python-apt (<< 0.7.98+nmu1)
+Enhances: python-apt, python3-apt
+
+Package: gir1.2-gst-plugins-base-1.0
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 700
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12-4~), gir1.2-gstreamer-1.0 (>= 1.20.0), libgstreamer-gl1.0-0 (>= 1.20.0), libgstreamer-plugins-base1.0-0 (>= 1.20.0)
+
+Package: remmina-plugin-secret
+Architecture: amd64
+Version: 1.4.25+dfsg-1
+APT-ID: 5595
+Multi-Arch: same
+Source: remmina
+Source-Version: 1.4.25+dfsg-1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.12.0), libsecret-1-0 (>= 0.7), remmina (= 1.4.25+dfsg-1)
+Replaces: remmina-plugin-gnome
+Breaks: remmina-plugin-gnome
+
+Package: python3-more-itertools
+Architecture: all
+Version: 8.10.0-2
+APT-ID: 5324
+Source: more-itertools
+Source-Version: 8.10.0-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: libdconf1
+Architecture: amd64
+Version: 0.40.0-3
+APT-ID: 2040
+Multi-Arch: same
+Source: dconf
+Source-Version: 0.40.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.55.2)
+
+Package: libxpm4
+Architecture: amd64
+Version: 1:3.5.12-1build2
+APT-ID: 4257
+Multi-Arch: same
+Source: libxpm
+Source-Version: 1:3.5.12-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libx11-6
+
+Package: fonts-sahadeva
+Architecture: all
+Version: 1.0-5
+APT-ID: 487
+Multi-Arch: foreign
+Source: fonts-sahadeva
+Source-Version: 1.0-5
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: fonts-nakula
+Replaces: ttf-devanagari-fonts
+Breaks: ttf-devanagari-fonts (<< 2:1.0)
+
+Package: gir1.2-gudev-1.0
+Architecture: amd64
+Version: 1:237-2build1
+APT-ID: 708
+Multi-Arch: same
+Source: libgudev
+Source-Version: 237-2build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.31.1), libgudev-1.0-0 (>= 234)
+
+Package: libnma-common
+Architecture: all
+Version: 1.8.34-1ubuntu1
+APT-ID: 3076
+Multi-Arch: foreign
+Source: libnma
+Source-Version: 1.8.34-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: network-manager-gnome (<< 1.18.0)
+Breaks: network-manager-gnome (<< 1.18.0)
+
+Package: fonts-samyak-mlym
+Architecture: all
+Version: 1.2.2-5build1
+APT-ID: 490
+Multi-Arch: foreign
+Source: fonts-samyak
+Source-Version: 1.2.2-5build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-malayalam-fonts (<< 2:1.0)
+Breaks: ttf-malayalam-fonts (<< 2:1.0)
+
+Package: libfontconfig1
+Architecture: amd64
+Version: 2.13.1-4.2ubuntu5
+APT-ID: 2244
+Multi-Arch: same
+Source: fontconfig
+Source-Version: 2.13.1-4.2ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libexpat1 (>= 2.0.1), libfreetype6 (>= 2.9.1), libuuid1 (>= 2.16), fontconfig-config (>= 2.13.1-4.2ubuntu5)
+Breaks: xpdf (<= 3.03-11)
+Provides: libfontconfig
+
+Package: libhunspell-1.7-0
+Architecture: amd64
+Version: 1.7.0-4build1
+APT-ID: 2603
+Multi-Arch: same
+Source: hunspell
+Source-Version: 1.7.0-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+Recommends: hunspell-en-us | hunspell-dictionary | myspell-dictionary
+Conflicts: openoffice.org-core (= 2.2.0~rc2-1)
+
+Package: fonts-opensymbol
+Architecture: all
+Version: 2:102.12+LibO7.3.6-0ubuntu0.22.04.1
+APT-ID: 71807
+Multi-Arch: foreign
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fontconfig
+Replaces: ttf-opensymbol
+Provides: ttf-opensymbol
+
+Package: librsync2
+Architecture: amd64
+Version: 2.3.2-1ubuntu1
+APT-ID: 3575
+Multi-Arch: same
+Source: librsync
+Source-Version: 2.3.2-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libgpgme11
+Architecture: amd64
+Version: 1.16.0-1.2ubuntu4
+APT-ID: 2473
+Multi-Arch: same
+Source: gpgme1.0
+Source-Version: 1.16.0-1.2ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnupg (>= 2.1.21-4) | gpg, libassuan0 (>= 2.4.2), libc6 (>= 2.34), libgpg-error0 (>= 1.36)
+Recommends: dirmngr, gpg-agent, gpg-wks-client, gpgsm
+
+Package: psmisc
+Architecture: amd64
+Version: 23.4-2build3
+APT-ID: 4985
+Multi-Arch: foreign
+Source: psmisc
+Source-Version: 23.4-2build3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+Replaces: manpages-de (<< 4.9.1-1)
+Breaks: manpages-de (<< 4.9.1-1)
+
+Package: libasound2
+Architecture: amd64
+Version: 1.2.6.1-1ubuntu1
+APT-ID: 1636
+Multi-Arch: same
+Source: alsa-lib
+Source-Version: 1.2.6.1-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2-data (>= 1.2.6.1-1ubuntu1), libc6 (>= 2.34)
+Suggests: libasound2-plugins (>= 1.0.24)
+Breaks: alsa-utils (<< 1.2.1)
+
+Package: libsbc1
+Architecture: amd64
+Version: 1.5-3build2
+APT-ID: 3642
+Multi-Arch: same
+Source: sbc
+Source-Version: 1.5-3build2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: wamerican
+Architecture: all
+Version: 2020.12.07-2
+APT-ID: 5951
+Multi-Arch: foreign
+Source: scowl
+Source-Version: 2020.12.07-2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+Provides: wordlist
+
+Package: libldap-2.5-0
+Architecture: amd64
+Version: 2.5.13+dfsg-0ubuntu0.22.04.1
+APT-ID: 72442
+Multi-Arch: same
+Source: openldap
+Source-Version: 2.5.13+dfsg-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgnutls30 (>= 3.7.2), libsasl2-2 (>= 2.1.27+dfsg2)
+Recommends: libldap-common
+Conflicts: ldap-utils (<= 2.1.23-1)
+Replaces: libldap-2.3-0, libldap2
+
+Package: systemd
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79617
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libapparmor1 (>= 2.13), libaudit1 (>= 1:2.2.1), libcrypt1 (>= 1:4.4.0), libcryptsetup12 (>= 2:2.4), libgnutls30 (>= 3.7.2), libgpg-error0 (>= 1.14), libip4tc2 (>= 1.8.3), libkmod2 (>= 5~), liblz4-1 (>= 0.0~r130), libmount1 (>= 2.30), libpam0g (>= 0.99.7.1), libseccomp2 (>= 2.4.1), libssl3 (>= 3.0.0~~alpha1), libsystemd0 (= 249.11-0ubuntu3.4), util-linux (>= 2.27.1), mount (>= 2.26), adduser
+Pre-Depends: libblkid1 (>= 2.24), libc6 (>= 2.34), libcap2 (>= 1:2.24-9~), libgcrypt20 (>= 1.9.0), liblz4-1 (>= 0.0~r122), liblzma5 (>= 5.1.1alpha+20120614), libselinux1 (>= 3.1~), libzstd1 (>= 1.4.0)
+Suggests: systemd-container, libfido2-1, libtss2-esys-3.0.2-0, libtss2-mu0, libtss2-rc0, policykit-1
+Recommends: default-dbus-system-bus | dbus-system-bus, networkd-dispatcher, systemd-timesyncd | time-daemon
+Conflicts: consolekit, libpam-ck-connector, systemd-shim
+Breaks: resolvconf (<< 1.83~), udev (<< 247~)
+Provides: systemd-tmpfiles (= 249.11-0ubuntu3.4), systemd-sysusers (= 249.11-0ubuntu3.4)
+
+Package: libtotem0
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 3884
+Multi-Arch: same
+Source: totem
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: video
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.29.4), libc6 (>= 2.33), libcairo-gobject2 (>= 1.14.0), libcairo2 (>= 1.14.0), libgdk-pixbuf-2.0-0 (>= 2.23.0), libgirepository-1.0-1 (>= 0.9.12), libglib2.0-0 (>= 2.59.0), libgnome-desktop-3-19 (>= 3.17.92), libgrilo-0.3-0 (>= 0.3.0), libgstreamer-plugins-base1.0-0 (>= 1.6.0), libgstreamer1.0-0 (>= 1.6.0), libgtk-3-0 (>= 3.22.0), libhandy-1-0 (>= 1.5.90), libpango-1.0-0 (>= 1.37.2), libpangocairo-1.0-0 (>= 1.14.0), libpeas-1.0-0 (>= 1.1.0), libtotem-plparser18 (>= 3.26.5)
+
+Package: mtr-tiny
+Architecture: amd64
+Version: 0.95-1
+APT-ID: 4667
+Source: mtr
+Source-Version: 0.95-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libjansson4 (>= 2.0.1), libncurses6 (>= 6), libtinfo6 (>= 6)
+Replaces: mtr
+Breaks: mtr, suidmanager (<< 0.50)
+
+Package: libudev1
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79612
+Multi-Arch: same
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: important
+Section: libs
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: gpg-agent
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71881
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), pinentry-curses | pinentry, init-system-helpers (>= 1.52), libassuan0 (>= 2.5.1), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libnpth0 (>= 0.90)
+Suggests: dbus-user-session, libpam-systemd, pinentry-gnome3, scdaemon
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg-agent (<< 2.1.21-4)
+Provides: gnupg-agent
+
+Package: libmtp9
+Architecture: amd64
+Version: 1.1.19-1build1
+APT-ID: 2981
+Multi-Arch: same
+Source: libmtp
+Source-Version: 1.1.19-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libmtp-common, libc6 (>= 2.14), libgcrypt20 (>= 1.9.0), libusb-1.0-0 (>= 2:1.0.22)
+Recommends: libmtp-runtime, udev
+
+Package: libstemmer0d
+Architecture: amd64
+Version: 2.2.0-1build1
+APT-ID: 3773
+Multi-Arch: same
+Source: snowball
+Source-Version: 2.2.0-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: console-setup-linux
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 212
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kbd (>= 0.99-12) | console-tools (>= 1:0.2.3-16), keyboard-configuration (= 1.205ubuntu3), init-system-helpers (>= 1.29~) | initscripts
+Suggests: console-setup
+Conflicts: console-setup-freebsd
+Replaces: console-setup (<< 1.71), console-terminus
+Breaks: console-cyrillic (<= 0.9-11), console-setup (<< 1.71), console-terminus
+Provides: console-terminus
+
+Package: libgpg-error0
+Architecture: amd64
+Version: 1.43-3
+APT-ID: 2471
+Multi-Arch: same
+Source: libgpg-error
+Source-Version: 1.43-3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: libgpg-error-l10n
+
+Package: libexempi8
+Architecture: amd64
+Version: 2.5.2-1ubuntu0.22.04.1
+APT-ID: 72340
+Multi-Arch: same
+Source: exempi
+Source-Version: 2.5.2-1ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: libgweather-common
+Architecture: all
+Version: 40.0-5build1
+APT-ID: 2568
+Multi-Arch: foreign
+Source: libgweather
+Source-Version: 40.0-5build1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: wget
+Architecture: amd64
+Version: 1.21.2-2ubuntu1
+APT-ID: 5964
+Multi-Arch: foreign
+Source: wget
+Source-Version: 1.21.2-2ubuntu1
+Priority: standard
+Section: web
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libidn2-0 (>= 0.6), libpcre2-8-0 (>= 10.22), libpsl5 (>= 0.16.0), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Recommends: ca-certificates
+Conflicts: wget-ssl
+
+Package: libxss1
+Architecture: amd64
+Version: 1:1.2.3-1build2
+APT-ID: 4270
+Multi-Arch: same
+Source: libxss
+Source-Version: 1:1.2.3-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.4.99.1), libxext6, x11-common
+
+Package: libxcvt0
+Architecture: amd64
+Version: 0.1.1-3
+APT-ID: 4194
+Multi-Arch: same
+Source: libxcvt
+Source-Version: 0.1.1-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.2.5)
+
+Package: cups-filters-core-drivers
+Architecture: amd64
+Version: 1.28.15-0ubuntu1
+APT-ID: 254
+Source: cups-filters
+Source-Version: 1.28.15-0ubuntu1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bc, cups-ipp-utils, poppler-utils, libc6 (>= 2.34), libcups2 (>= 2.3~b6), libcupsfilters1 (>= 1.28.0), libgcc-s1 (>= 3.3.1), liblcms2-2 (>= 2.2+git20110628), libpoppler-cpp0v5 (>= 22.02.0), libqpdf28 (>> 10.6~), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+Replaces: cups-filters (<< 1.13.0)
+Breaks: cups-filters (<< 1.13.0)
+
+Package: gir1.2-geoclue-2.0
+Architecture: amd64
+Version: 2.5.7-3ubuntu3
+APT-ID: 679
+Multi-Arch: same
+Source: geoclue-2.0
+Source-Version: 2.5.7-3ubuntu3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.6), libgeoclue-2-0 (>= 2.5.3)
+
+Package: shared-mime-info
+Architecture: amd64
+Version: 2.1-2
+APT-ID: 5656
+Multi-Arch: foreign
+Source: shared-mime-info
+Source-Version: 2.1-2
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libxml2 (>= 2.7.4)
+
+Package: gir1.2-unity-7.0
+Architecture: amd64
+Version: 7.1.4+19.04.20190319-6build1
+APT-ID: 753
+Multi-Arch: same
+Source: libunity
+Source-Version: 7.1.4+19.04.20190319-6build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-dbusmenu-glib-0.4 (>= 0.4.90), gir1.2-dee-1.0 (>= 1.2.5~), gir1.2-glib-2.0 (>= 0.10), libunity9 (>= 7.1.3+14.04.20131029.1)
+Conflicts: gir1.2-unity-5.0
+Replaces: gir1.2-unity-5.0
+Provides: gir1.2-unity-5.0
+
+Package: libevview3-3
+Architecture: amd64
+Version: 42.3-0ubuntu2
+APT-ID: 72338
+Multi-Arch: same
+Source: evince
+Source-Version: 42.3-0ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gstreamer1.0-plugins-base, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.29), libcairo2 (>= 1.14.0), libevdocument3-4 (>= 42~beta), libglib2.0-0 (>= 2.38), libgspell-1-2 (>= 1.8.2), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.0.0), libgtk-3-0 (>= 3.22.0), libpango-1.0-0 (>= 1.14.0)
+
+Package: isc-dhcp-common
+Architecture: amd64
+Version: 4.4.1-2.3ubuntu2.2
+APT-ID: 71908
+Source: isc-dhcp
+Source-Version: 4.4.1-2.3ubuntu2.2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debianutils (>= 2.8.2)
+
+Package: p11-kit-modules
+Architecture: amd64
+Version: 0.24.0-6build1
+APT-ID: 4841
+Multi-Arch: same
+Source: p11-kit
+Source-Version: 0.24.0-6build1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libp11-kit0 (= 0.24.0-6build1), libc6 (>= 2.33), libffi8 (>= 3.4), libtasn1-6 (>= 4.14)
+Replaces: p11-kit (<= 0.20.2-1)
+Breaks: p11-kit (<= 0.20.2-1)
+
+Package: remmina
+Architecture: amd64
+Version: 1.4.25+dfsg-1
+APT-ID: 5591
+Multi-Arch: foreign
+Source: remmina
+Source-Version: 1.4.25+dfsg-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-ui-gtk3-0 (>= 0.6.30), libayatana-appindicator3-1 (>= 0.4.90), libc6 (>= 2.34), libcairo2 (>= 1.6.0), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.67.3), libgtk-3-0 (>= 3.21.5), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.14.0), libsodium23 (>= 1.0.10), libsoup2.4-1 (>= 2.30.0), libssh-4 (>= 0.8.1), libvte-2.91-0 (>= 0.51.90), remmina-common (= 1.4.25+dfsg-1), default-dbus-session-bus | dbus-session-bus
+Suggests: remmina-plugin-exec, remmina-plugin-kwallet, remmina-plugin-spice, remmina-plugin-www, remmina-plugin-x2go
+Recommends: remmina-plugin-rdp, remmina-plugin-vnc, remmina-plugin-secret
+
+Package: poppler-utils
+Architecture: amd64
+Version: 22.02.0-2ubuntu0.1
+APT-ID: 74282
+Multi-Arch: foreign
+Source: poppler
+Source-Version: 22.02.0-2ubuntu0.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpoppler118 (= 22.02.0-2ubuntu0.1), libc6 (>= 2.34), libcairo2 (>= 1.12.0), libfreetype6 (>= 2.2.1), liblcms2-2 (>= 2.2+git20110628), libstdc++6 (>= 5.2)
+Conflicts: pdftohtml
+Replaces: pdftohtml, xpdf-reader, xpdf-utils (<< 3.02-2~)
+Breaks: xpdf-common, xpdf-utils (<< 1:0)
+Provides: xpdf-utils, pdftohtml
+
+Package: liblocale-gettext-perl
+Architecture: amd64
+Version: 1.07-4build3
+APT-ID: 2829
+Source: liblocale-gettext-perl
+Source-Version: 1.07-4build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Pre-Depends: perl-base, perlapi-5.34.0
+
+Package: libcdr-0.1-1
+Architecture: amd64
+Version: 0.1.6-2build2
+APT-ID: 1867
+Multi-Arch: same
+Source: libcdr
+Source-Version: 0.1.6-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), liblcms2-2 (>= 2.2+git20110628), librevenge-0.0-0, libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: glib-networking-common
+Architecture: all
+Version: 2.72.0-1
+APT-ID: 769
+Multi-Arch: foreign
+Source: glib-networking
+Source-Version: 2.72.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: glib-networking
+
+Package: linux-modules-5.15.0-48-generic
+Architecture: amd64
+Version: 5.15.0-48.54
+APT-ID: 73804
+Source: linux
+Source-Version: 5.15.0-48.54
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-image-5.15.0-48-generic | linux-image-unsigned-5.15.0-48-generic
+
+Package: fdisk
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 415
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfdisk1 (>= 2.36), libmount1 (>= 2.24.2), libncursesw6 (>= 6), libreadline8 (>= 6.0), libsmartcols1 (>= 2.28~rc1), libtinfo6 (>= 6)
+
+Package: libgles2
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 2382
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglvnd0 (= 1.4.0-1)
+
+Package: libgl1-mesa-dri
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72380
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm-amdgpu1 (>= 2.4.105), libdrm-nouveau2 (>= 2.4.66), libdrm-radeon1 (>= 2.4.31), libdrm2 (>= 2.4.75), libelf1 (>= 0.142), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.4), libglapi-mesa (= 22.0.5-0ubuntu0.1), libllvm13, libsensors5 (>= 1:3.5.0), libstdc++6 (>= 11), libvulkan1 (>= 1.2.131.2), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Recommends: libgl1-amber-dri
+
+Package: gnome-settings-daemon-common
+Architecture: all
+Version: 42.1-1ubuntu2.1
+APT-ID: 71868
+Source: gnome-settings-daemon
+Source-Version: 42.1-1ubuntu2.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: gnome-settings-daemon (<< 3.30.1.2-2~), gnome-settings-daemon-schemas (<< 3.30.1.2-2~)
+Breaks: gnome-settings-daemon (<< 3.30.1.2-2~), gnome-settings-daemon-schemas (<< 3.30.1.2-2~)
+Provides: gnome-settings-daemon-schemas (= 42.1-1ubuntu2.1)
+
+Package: python3-macaroonbakery
+Architecture: all
+Version: 1.3.1-2
+APT-ID: 5306
+Multi-Arch: foreign
+Source: py-macaroon-bakery
+Source-Version: 1.3.1-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-nacl, python3-protobuf, python3-pymacaroons, python3-requests, python3-rfc3339, python3-six (<< 2.0), python3-six (>= 1.11.0), python3:any
+
+Package: libisc-export1105
+Architecture: amd64
+Version: 1:9.11.19+dfsg-2.1ubuntu3
+APT-ID: 2696
+Multi-Arch: same
+Source: bind9-libs
+Source-Version: 1:9.11.19+dfsg-2.1ubuntu3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+
+Package: im-config
+Architecture: all
+Version: 0.50-2
+APT-ID: 1119
+Source: im-config
+Source-Version: 0.50-2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gettext-base
+Recommends: x11-common, zenity | kdialog | kde-baseapps-bin (<< 4:16.08.3-2~) | whiptail
+Conflicts: im-switch
+Provides: im-switch
+
+Package: desktop-file-utils
+Architecture: amd64
+Version: 0.26-1ubuntu3
+APT-ID: 303
+Multi-Arch: foreign
+Source: desktop-file-utils
+Source-Version: 0.26-1ubuntu3
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.49.3)
+
+Package: libappstream4
+Architecture: amd64
+Version: 0.15.2-2
+APT-ID: 1610
+Multi-Arch: same
+Source: appstream
+Source-Version: 0.15.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcurl3-gnutls (>= 7.63.0), libglib2.0-0 (>= 2.67.3+git20210214), libstemmer0d (>= 0+svn527), libxml2 (>= 2.9.0), libxmlb2 (>= 0.3.4), libyaml-0-2
+
+Package: power-profiles-daemon
+Architecture: amd64
+Version: 0.10.1-3
+APT-ID: 4956
+Source: power-profiles-daemon
+Source-Version: 0.10.1-3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.43.2), libgudev-1.0-0 (>= 234), libpolkit-gobject-1-0 (>= 0.99)
+
+Package: cups-ipp-utils
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71760
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcups2 (= 2.4.1op1-1ubuntu4.1), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libpam0g (>= 0.99.7.1)
+Replaces: cups-client (<< 2.0.3-2~)
+Breaks: cups-client (<< 2.0.3-2~)
+
+Package: ubuntu-wallpapers
+Architecture: all
+Version: 22.04.4-0ubuntu1
+APT-ID: 5901
+Source: ubuntu-wallpapers
+Source-Version: 22.04.4-0ubuntu1
+Priority: optional
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: ubuntu-wallpapers-jammy
+Suggests: ubuntu-wallpapers-karmic, ubuntu-wallpapers-lucid, ubuntu-wallpapers-maverick, ubuntu-wallpapers-natty, ubuntu-wallpapers-oneiric, ubuntu-wallpapers-precise, ubuntu-wallpapers-quantal, ubuntu-wallpapers-raring, ubuntu-wallpapers-saucy, ubuntu-wallpapers-trusty, ubuntu-wallpapers-utopic, ubuntu-wallpapers-vivid, ubuntu-wallpapers-wily, ubuntu-wallpapers-xenial, ubuntu-wallpapers-yakkety, ubuntu-wallpapers-zesty, ubuntu-wallpapers-artful, ubuntu-wallpapers-bionic, ubuntu-wallpapers-cosmic, ubuntu-wallpapers-disco, ubuntu-wallpapers-eoan, ubuntu-wallpapers-focal, ubuntu-wallpapers-groovy, ubuntu-wallpapers-hirsute, ubuntu-wallpapers-impish
+
+Package: libyaml-0-2
+Architecture: amd64
+Version: 0.2.2-1build2
+APT-ID: 4294
+Multi-Arch: same
+Source: libyaml
+Source-Version: 0.2.2-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libpng16-16
+Architecture: amd64
+Version: 1.6.37-3build5
+APT-ID: 3285
+Multi-Arch: same
+Source: libpng1.6
+Source-Version: 1.6.37-3build5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), zlib1g (>= 1:1.2.11)
+
+Package: libgom-1.0-0
+Architecture: amd64
+Version: 0.4-1build2
+APT-ID: 2459
+Multi-Arch: same
+Source: libgom
+Source-Version: 0.4-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3), libsqlite3-0 (>= 3.5.9)
+
+Package: libreadline8
+Architecture: amd64
+Version: 8.1.2-1
+APT-ID: 3390
+Multi-Arch: same
+Source: readline
+Source-Version: 8.1.2-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: readline-common, libc6 (>= 2.33), libtinfo6 (>= 6)
+
+Package: appstream
+Architecture: amd64
+Version: 0.15.2-2
+APT-ID: 44
+Source: appstream
+Source-Version: 0.15.2-2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: shared-mime-info, libappstream4 (>= 0.15.0), libc6 (>= 2.34), libglib2.0-0 (>= 2.62)
+Suggests: apt-config-icons
+
+Package: gnome-mines
+Architecture: amd64
+Version: 1:40.1-1
+APT-ID: 797
+Source: gnome-mines
+Source-Version: 1:40.1-1
+Priority: optional
+Section: games
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.40.0), libgnome-games-support-1-3 (>= 1.8.0), libgtk-3-0 (>= 3.24), libhandy-1-0 (>= 1.5.90), dconf-gsettings-backend | gsettings-backend
+Recommends: yelp
+
+Package: libespeak-ng1
+Architecture: amd64
+Version: 1.50+dfsg-10
+APT-ID: 2160
+Multi-Arch: same
+Source: espeak-ng
+Source-Version: 1.50+dfsg-10
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpcaudio0 (>= 1.1), libsonic0 (>= 0.1.10), espeak-ng-data (= 1.50+dfsg-10)
+
+Package: libcairo-script-interpreter2
+Architecture: amd64
+Version: 1.16.0-5ubuntu2
+APT-ID: 1831
+Multi-Arch: same
+Source: cairo
+Source-Version: 1.16.0-5ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libcairo2 (= 1.16.0-5ubuntu2), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), liblzo2-2 (>= 2.02), zlib1g (>= 1:1.1.4)
+
+Package: libvolume-key1
+Architecture: amd64
+Version: 0.3.12-3.1build3
+APT-ID: 4019
+Source: volume-key
+Source-Version: 0.3.12-3.1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.16), libc6 (>= 2.14), libcryptsetup12 (>= 2:1.4), libglib2.0-0 (>= 2.18.0), libgpgme11 (>= 1.4.1), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.13.4-2~), gnupg
+
+Package: libcom-err2
+Architecture: amd64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 72297
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Replaces: libcomerr2 (<< 1.43.9-1~)
+Breaks: libcomerr2 (<< 1.43.9-1~)
+Provides: libcomerr2 (= 1.46.5-2ubuntu1.1)
+
+Package: gettext-base
+Architecture: amd64
+Version: 0.21-4ubuntu4
+APT-ID: 623
+Multi-Arch: foreign
+Source: gettext
+Source-Version: 0.21-4ubuntu4
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libmaxminddb0
+Architecture: amd64
+Version: 1.5.2-1build2
+APT-ID: 2891
+Multi-Arch: same
+Source: libmaxminddb
+Source-Version: 1.5.2-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: mmdb-bin
+
+Package: inputattach
+Architecture: amd64
+Version: 1:1.7.1-1build2
+APT-ID: 1128
+Source: joystick
+Source-Version: 1:1.7.1-1build2
+Priority: extra
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0
+Breaks: joystick (<< 20051019-6)
+
+Package: diffutils
+Architecture: amd64
+Version: 1:3.8-0ubuntu2
+APT-ID: 324
+Essential: yes
+Source: diffutils
+Source-Version: 1:3.8-0ubuntu2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34)
+Suggests: diffutils-doc, wdiff
+Replaces: diff
+
+Package: libxrandr2
+Architecture: amd64
+Version: 2:1.5.2-1build1
+APT-ID: 4259
+Multi-Arch: same
+Source: libxrandr
+Source-Version: 2:1.5.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0), libxext6, libxrender1
+
+Package: strace
+Architecture: amd64
+Version: 5.16-0ubuntu3
+APT-ID: 5711
+Source: strace
+Source-Version: 5.16-0ubuntu3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libunwind8
+
+Package: libxxf86dga1
+Architecture: amd64
+Version: 2:1.1.5-0ubuntu3
+APT-ID: 4284
+Multi-Arch: same
+Source: libxxf86dga
+Source-Version: 2:1.1.5-0ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: python3-louis
+Architecture: all
+Version: 3.20.0-2ubuntu0.1
+APT-ID: 74332
+Source: liblouis
+Source-Version: 3.20.0-2ubuntu0.1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, liblouis20 (>= 3.20.0-2ubuntu0.1)
+
+Package: xserver-xorg-legacy
+Architecture: amd64
+Version: 2:21.1.3-2ubuntu2.1
+APT-ID: 74556
+Source: xorg-server
+Source-Version: 2:21.1.3-2ubuntu2.1
+Priority: extra
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-common (>= 2:21.1.3-2ubuntu2.1), libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
+Replaces: x11-common (<< 1:7.7+10~), xserver-xorg-core (<< 2:1.17.2-3~)
+Breaks: x11-common (<< 1:7.7+10~), xserver-xorg-core (<< 2:1.17.2-3~)
+
+Package: publicsuffix
+Architecture: all
+Version: 20211207.1025-1
+APT-ID: 4986
+Multi-Arch: foreign
+Source: publicsuffix
+Source-Version: 20211207.1025-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Provides: publicsuffix-dafsa
+
+Package: libsoup2.4-common
+Architecture: all
+Version: 2.74.2-3
+APT-ID: 3709
+Multi-Arch: foreign
+Source: libsoup2.4
+Source-Version: 2.74.2-3
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gamemode
+Architecture: amd64
+Version: 1.6.1-1build2
+APT-ID: 583
+Multi-Arch: allowed
+Source: gamemode
+Source-Version: 1.6.1-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), gamemode-daemon, libgamemode0, libgamemodeauto0
+Suggests: gnome-shell-extension-gamemode
+Recommends: libgamemode0:i386, libgamemodeauto0:i386
+
+Package: sensible-utils
+Architecture: all
+Version: 0.0.17
+APT-ID: 5649
+Multi-Arch: foreign
+Source: sensible-utils
+Source-Version: 0.0.17
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+
+Package: libxfont2
+Architecture: amd64
+Version: 1:2.0.5-1build1
+APT-ID: 4206
+Multi-Arch: same
+Source: libxfont
+Source-Version: 1:2.0.5-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.35), libfontenc1 (>= 1:1.1.4), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4)
+Breaks: xfs (<< 1:1.1.4)
+
+Package: python3-pkg-resources
+Architecture: all
+Version: 59.6.0-1.2
+APT-ID: 5398
+Multi-Arch: foreign
+Source: setuptools
+Source-Version: 59.6.0-1.2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python3-setuptools
+
+Package: gnome-logs
+Architecture: amd64
+Version: 42.0-1
+APT-ID: 794
+Source: gnome-logs
+Source-Version: 42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.43.90), libgtk-3-0 (>= 3.22.0), libhandy-1-0 (>= 1.5.90), libpango-1.0-0 (>= 1.14.0), libsystemd0, dconf-gsettings-backend | gsettings-backend, gsettings-desktop-schemas
+
+Package: python3-wadllib
+Architecture: all
+Version: 1.3.6-1
+APT-ID: 5527
+Source: python-wadllib
+Source-Version: 1.3.6-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-lazr.uri, python3-pkg-resources, python3:any
+
+Package: libpagemaker-0.0-0
+Architecture: amd64
+Version: 0.0.4-1build3
+APT-ID: 3169
+Multi-Arch: same
+Source: libpagemaker
+Source-Version: 0.0.4-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11)
+
+Package: libfontenc1
+Architecture: amd64
+Version: 1:1.1.4-1build3
+APT-ID: 2249
+Multi-Arch: same
+Source: libfontenc
+Source-Version: 1:1.1.4-1build3
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), zlib1g (>= 1:1.1.4)
+
+Package: python3-gdbm
+Architecture: amd64
+Version: 3.10.4-0ubuntu1
+APT-ID: 5241
+Multi-Arch: same
+Source: python3-stdlib-extensions
+Source-Version: 3.10.4-0ubuntu1
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: python3 (>= 3.10.1-0~), python3 (<< 3.11), libc6 (>= 2.4), libgdbm6 (>= 1.16)
+Suggests: python3-gdbm-dbg
+Provides: python3.10-gdbm
+
+Package: libmhash2
+Architecture: amd64
+Version: 0.9.9.9-9build2
+APT-ID: 2911
+Multi-Arch: same
+Source: mhash
+Source-Version: 0.9.9.9-9build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: fontconfig-config
+Architecture: all
+Version: 2.13.1-4.2ubuntu5
+APT-ID: 428
+Multi-Arch: foreign
+Source: fontconfig
+Source-Version: 2.13.1-4.2ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ucf (>= 0.29), fonts-dejavu-core | ttf-bitstream-vera | fonts-liberation | fonts-liberation2 | fonts-croscore | fonts-freefont-otf | fonts-freefont-ttf | fonts-urw-base35 | fonts-texgyre
+Breaks: libfontconfig1 (<< 2.13.0)
+
+Package: libfdisk1
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 2202
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.24.2), libc6 (>= 2.33), libuuid1 (>= 2.16)
+
+Package: xbitmaps
+Architecture: all
+Version: 1.1.1-2.1ubuntu1
+APT-ID: 6013
+Multi-Arch: foreign
+Source: xbitmaps
+Source-Version: 1.1.1-2.1ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gdisk
+Architecture: amd64
+Version: 1.0.8-4build1
+APT-ID: 613
+Source: gdisk
+Source-Version: 1.0.8-4build1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libncursesw6 (>= 6), libpopt0 (>= 1.14), libstdc++6 (>= 9), libtinfo6 (>= 6), libuuid1 (>= 2.16)
+Recommends: groff-base
+
+Package: evince-common
+Architecture: all
+Version: 42.3-0ubuntu2
+APT-ID: 71796
+Source: evince
+Source-Version: 42.3-0ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gtk2-engines-murrine
+Architecture: amd64
+Version: 0.98.2-3build2
+APT-ID: 939
+Multi-Arch: same
+Source: gtk2-engines-murrine
+Source-Version: 0.98.2-3build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libpangocairo-1.0-0 (>= 1.14.0), libpixman-1-0 (>= 0.30.0)
+Suggests: murrine-themes
+
+Package: secureboot-db
+Architecture: amd64
+Version: 1.8
+APT-ID: 5647
+Source: secureboot-db
+Source-Version: 1.8
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: sbsigntool
+
+Package: linux-headers-5.15.0-43-generic
+Architecture: amd64
+Version: 5.15.0-43.46
+APT-ID: 73259
+Source: linux
+Source-Version: 5.15.0-43.46
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-headers-5.15.0-43, libc6 (>= 2.34), libelf1 (>= 0.142), libssl3 (>= 3.0.0~~alpha1), zlib1g (>= 1:1.2.3.3)
+Provides: linux-headers-3.0, linux-headers
+
+Package: libpangomm-1.4-1v5
+Architecture: amd64
+Version: 2.46.2-1
+APT-ID: 3195
+Multi-Arch: same
+Source: pangomm
+Source-Version: 2.46.2-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairomm-1.0-1v5 (>= 1.12.0), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.33.14), libglibmm-2.4-1v5 (>= 2.66.2), libpango-1.0-0 (>= 1.45.5), libpangocairo-1.0-0 (>= 1.41.0), libsigc++-2.0-0v5 (>= 2.2.0), libstdc++6 (>= 5.2)
+Conflicts: libpangomm-1.4-1
+Replaces: libpangomm-1.4-1
+
+Package: python3.10-full
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78612
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10 (= 3.10.6-1~22.04), libpython3.10-testsuite, python3.10-venv (= 3.10.6-1~22.04), idle-python3.10, python3.10-distutils, python3.10-gdbm, python3.10-lib2to3, python3.10-tk, ca-certificates
+Suggests: python3.10-dev
+Recommends: python3.10-doc, python3.10-examples
+
+Package: python3.10-full
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79554
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3ubuntu0.1), libpython3.10-testsuite, python3.10-venv (= 3.10.4-3ubuntu0.1), idle-python3.10, python3.10-distutils, python3.10-gdbm, python3.10-lib2to3, python3.10-tk, ca-certificates
+Suggests: python3.10-dev
+Recommends: python3.10-doc, python3.10-examples
+
+Package: python3.10-full
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 58464
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3), libpython3.10-testsuite, python3.10-venv (= 3.10.4-3), idle-python3.10, python3.10-distutils, python3.10-gdbm, python3.10-lib2to3, python3.10-tk, ca-certificates
+Suggests: python3.10-dev
+Recommends: python3.10-doc, python3.10-examples
+
+Package: libmp3lame0
+Architecture: amd64
+Version: 3.100-3build2
+APT-ID: 2957
+Multi-Arch: same
+Source: lame
+Source-Version: 3.100-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: liburi-perl
+Architecture: all
+Version: 5.10-1
+APT-ID: 3960
+Multi-Arch: foreign
+Source: liburi-perl
+Source-Version: 5.10-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+Suggests: libbusiness-isbn-perl (>= 3.005), libwww-perl
+
+Package: language-selector-common
+Architecture: all
+Version: 0.219
+APT-ID: 1534
+Source: language-selector
+Source-Version: 0.219
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, iso-codes, python3-apt (>= 0.7.12.0), python3-dbus, dbus, accountsservice (>= 0.6.29-1ubuntu6)
+Pre-Depends: dpkg (>= 1.15.7.2)
+
+Package: libassuan0
+Architecture: amd64
+Version: 2.5.5-1build1
+APT-ID: 1646
+Multi-Arch: same
+Source: libassuan
+Source-Version: 2.5.5-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgpg-error0 (>= 1.33)
+
+Package: libsoxr0
+Architecture: amd64
+Version: 0.1.3-4build2
+APT-ID: 3717
+Multi-Arch: same
+Source: libsoxr
+Source-Version: 0.1.3-4build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libgomp1 (>= 4.9)
+
+Package: system-config-printer-common
+Architecture: all
+Version: 1.5.16-0ubuntu3
+APT-ID: 5731
+Source: system-config-printer
+Source-Version: 1.5.16-0ubuntu3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-notify-0.7, gir1.2-pango-1.0, python3-cairo, python3-cups (>= 1.9.60), python3-cupshelpers (= 1.5.16-0ubuntu3), python3-dbus, python3-gi, python3:any
+Suggests: gnome-software (>= 3.16.5-2), python3-smbc
+Recommends: cups-pk-helper, gir1.2-secret-1, system-config-printer-udev
+Replaces: system-config-printer (<< 1.5.7-2~)
+Breaks: system-config-printer (<< 1.5.7-2~)
+
+Package: libnpth0
+Architecture: amd64
+Version: 1.6-3build2
+APT-ID: 3085
+Multi-Arch: same
+Source: npth
+Source-Version: 1.6-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libfftw3-single3
+Architecture: amd64
+Version: 3.3.8-2ubuntu8
+APT-ID: 2213
+Multi-Arch: same
+Source: fftw3
+Source-Version: 3.3.8-2ubuntu8
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgomp1 (>= 4.9)
+Suggests: libfftw3-bin, libfftw3-dev
+Replaces: libfftw3-3 (<< 3.3.3-1)
+Breaks: libfftw3-3 (<< 3.3.3-1)
+
+Package: gir1.2-graphene-1.0
+Architecture: amd64
+Version: 1.10.8-1
+APT-ID: 694
+Multi-Arch: same
+Source: graphene
+Source-Version: 1.10.8-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, libgraphene-1.0-0 (>= 1.10.0)
+
+Package: python3-talloc
+Architecture: amd64
+Version: 2.3.3-2build1
+APT-ID: 5499
+Multi-Arch: same
+Source: talloc
+Source-Version: 2.3.3-2build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtalloc2 (= 2.3.3-2build1), python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.4), libpython3.10 (>= 3.10.0)
+Provides: python3.10-talloc
+
+Package: printer-driver-foo2zjs
+Architecture: amd64
+Version: 20200505dfsg0-2ubuntu2
+APT-ID: 4966
+Source: foo2zjs
+Source-Version: 20200505dfsg0-2ubuntu2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-filters | foomatic-filters, dc, liblcms2-utils, printer-driver-foo2zjs-common (>= 20200505dfsg0-2ubuntu2), libc6 (>= 2.34), libcups2 (>= 1.4.0), libjbig0 (>= 2.0), mscompress
+Suggests: hannah-foo2zjs, psutils
+Recommends: cups, cups-client, unzip, wget
+Replaces: foo2zjs (<< 20111023dfsg0-1~)
+Breaks: foo2zjs (<< 20111023dfsg0-1~)
+
+Package: fonts-beng
+Architecture: all
+Version: 2:1.3
+APT-ID: 431
+Multi-Arch: foreign
+Source: fonts-beng
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-beng-extra, fonts-lohit-beng-assamese, fonts-lohit-beng-bengali
+Replaces: ttf-bengali-fonts
+Breaks: ttf-bengali-fonts (<< 2:1.0)
+
+Package: libdrm-common
+Architecture: all
+Version: 2.4.110-1ubuntu1
+APT-ID: 2092
+Multi-Arch: foreign
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: ubuntu-desktop
+Architecture: amd64
+Version: 1.481
+APT-ID: 5883
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: optional
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: alsa-base, alsa-utils, anacron, at-spi2-core, bc, ca-certificates, dmz-cursor-theme, fonts-dejavu-core, fonts-freefont-ttf, foomatic-db-compressed-ppds, gdm3, ghostscript-x, gnome-control-center, gnome-menus, gnome-session-canberra, gnome-settings-daemon, gnome-shell, gnome-shell-extension-appindicator, gnome-shell-extension-desktop-icons-ng, gnome-shell-extension-ubuntu-dock, gstreamer1.0-alsa, gstreamer1.0-packagekit, gstreamer1.0-plugins-base-apps, gstreamer1.0-pulseaudio, inputattach, language-selector-common, language-selector-gnome, libatk-adaptor, libnotify-bin, libsasl2-modules, libu2f-udev, nautilus, openprinting-ppds, printer-driver-pnm2ppa, pulseaudio, rfkill, software-properties-gtk, spice-vdagent, ubuntu-desktop-minimal, ubuntu-drivers-common, ubuntu-release-upgrader-gtk, ubuntu-session, ubuntu-settings, unzip, update-manager, update-notifier, wireless-tools, wpasupplicant, xdg-user-dirs, xdg-user-dirs-gtk, xkb-data, xorg, yelp, zenity, zip
+Recommends: acpi-support, aisleriot, apport-gtk, appstream, apt-config-icons-hidpi, avahi-autoipd, avahi-daemon, baobab, bluez, bluez-cups, branding-ubuntu, brltty, cheese, cups, cups-bsd, cups-client, cups-filters, deja-dup, dirmngr, eog, evince, file-roller, fonts-indic, fonts-kacst-one, fonts-khmeros-core, fonts-lao, fonts-liberation, fonts-liberation2, fonts-lklug-sinhala, fonts-noto-cjk, fonts-noto-color-emoji, fonts-opensymbol, fonts-sil-abyssinica, fonts-sil-padauk, fonts-thai-tlwg, fonts-tibetan-machine, fonts-ubuntu, fwupd, fwupd-signed, gamemode, gedit, gir1.2-gmenu-3.0, gnome-accessibility-themes, gnome-bluetooth, gnome-calculator, gnome-calendar, gnome-characters, gnome-disk-utility, gnome-font-viewer, gnome-initial-setup, gnome-keyring, gnome-logs, gnome-mahjongg, gnome-mines, gnome-power-manager, gnome-remote-desktop, gnome-sudoku, gnome-system-monitor, gnome-terminal, gnome-todo, gpg-agent, gsettings-ubuntu-schemas, gvfs-fuse, hplip, ibus, ibus-gtk, ibus-gtk3, ibus-table, im-config, kerneloops, laptop-detect, libglib2.0-bin, libnss-mdns, libpam-fprintd, libpam-gnome-keyring, libpam-sss, libproxy1-plugin-gsettings, libproxy1-plugin-networkmanager, libreoffice-calc, libreoffice-gnome, libreoffice-impress, libreoffice-math, libreoffice-ogltrans, libreoffice-pdfimport, libreoffice-style-breeze, libreoffice-writer, libwmf0.2-7-gtk, memtest86+, mousetweaks, nautilus-sendto, nautilus-share, network-manager, network-manager-config-connectivity-ubuntu, network-manager-openvpn-gnome, network-manager-pptp-gnome, orca, packagekit, pcmciautils, plymouth-theme-spinner, policykit-desktop-privileges, printer-driver-brlaser, printer-driver-c2esp, printer-driver-foo2zjs, printer-driver-m2300w, printer-driver-min12xxw, printer-driver-ptouch, printer-driver-pxljr, printer-driver-sag-gdi, printer-driver-splix, pulseaudio-module-bluetooth, remmina, rhythmbox, seahorse, shotwell, simple-scan, snapd, speech-dispatcher, system-config-printer, systemd-oomd, thunderbird, thunderbird-gnome-support, totem, transmission-gtk, ubuntu-docs, ubuntu-report, ubuntu-wallpapers, usb-creator-gtk, whoopsie, xcursor-themes, xdg-desktop-portal-gnome, xdg-desktop-portal-gtk, xdg-utils, yaru-theme-gnome-shell, yaru-theme-gtk, yaru-theme-icon, yaru-theme-sound
+Provides: packagekit-installer
+
+Package: libx11-data
+Architecture: all
+Version: 2:1.7.5-1
+APT-ID: 4094
+Multi-Arch: foreign
+Source: libx11
+Source-Version: 2:1.7.5-1
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libx11-6 (<< 2:1.4.1)
+
+Package: eject
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 368
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libmount1 (>= 2.24.2)
+
+Package: fonts-gujr
+Architecture: all
+Version: 2:1.4
+APT-ID: 443
+Multi-Arch: foreign
+Source: fonts-gujr
+Source-Version: 2:1.4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-gujr-extra, fonts-kalapi, fonts-lohit-gujr, fonts-samyak-gujr, fonts-yrsa-rasa
+Replaces: ttf-gujrati-fonts
+Breaks: ttf-gujrati-fonts (<< 2:1.0)
+
+Package: usbutils
+Architecture: amd64
+Version: 1:014-1build1
+APT-ID: 5930
+Multi-Arch: foreign
+Source: usbutils
+Source-Version: 1:014-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 196), libusb-1.0-0 (>= 2:1.0.22)
+Breaks: hwdata (<< 0.334-1~), isenkram (<< 0.45~), kinfocenter (<< 4:5.14.5-2~), libosinfo-1.0-0 (<< 1.8.0-1~), usbip (<< 2.0+5.10.4-1~)
+
+Package: packagekit
+Architecture: amd64
+Version: 1.2.5-2ubuntu2
+APT-ID: 4848
+Multi-Arch: foreign
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-bin, policykit-1, init-system-helpers (>= 1.52), libappstream4 (>= 0.10.0), libapt-pkg6.0 (>= 1.9.2), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.61.2), libgstreamer1.0-0 (>= 1.0.0), libpackagekit-glib2-18 (>= 1.2.4), libpolkit-gobject-1-0 (>= 0.99), libsqlite3-0 (>= 3.5.9), libstdc++6 (>= 11), libsystemd0 (>= 214)
+Suggests: appstream
+Recommends: packagekit-tools, systemd
+Breaks: plymouth (<< 0.9.5)
+
+Package: fonts-guru
+Architecture: all
+Version: 2:1.3
+APT-ID: 445
+Multi-Arch: foreign
+Source: fonts-guru
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-guru-extra, fonts-lohit-guru
+Replaces: ttf-punjabi-fonts
+Breaks: ttf-punjabi-fonts (<< 2:1.0)
+
+Package: libgtk2.0-0
+Architecture: amd64
+Version: 2.24.33-2ubuntu2
+APT-ID: 2534
+Multi-Arch: same
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgtk2.0-common, libatk1.0-0 (>= 1.32.0), libc6 (>= 2.34), libcairo2 (>= 1.6.4-6.1), libcups2 (>= 2.3~b6), libfontconfig1 (>= 2.12.6), libgdk-pixbuf-2.0-0 (>= 2.22.1), libglib2.0-0 (>= 2.41.1), libpango-1.0-0 (>= 1.28.3), libpangocairo-1.0-0 (>= 1.28.3), libpangoft2-1.0-0 (>= 1.28.3), libx11-6 (>= 2:1.4.99.1), libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6, libxinerama1 (>= 2:1.1.4), libxrandr2 (>= 2:1.5.0), libxrender1, adwaita-icon-theme | gnome-icon-theme, hicolor-icon-theme, shared-mime-info
+Suggests: gvfs
+Recommends: libgail-common, librsvg2-common, libgtk2.0-bin
+Provides: gtk2.0-binver-2.10.0
+
+Package: libgudev-1.0-0
+Architecture: amd64
+Version: 1:237-2build1
+APT-ID: 2550
+Multi-Arch: same
+Source: libgudev
+Source-Version: 237-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.38.0), libudev1 (>= 199)
+
+Package: rhythmbox
+Architecture: amd64
+Version: 3.4.4-5ubuntu1
+APT-ID: 5600
+Source: rhythmbox
+Source-Version: 3.4.4-5ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.68.0), libgstreamer-plugins-base1.0-0 (>= 1.4.0), libgstreamer1.0-0 (>= 1.4.0), libgtk-3-0 (>= 3.20.0), libpeas-1.0-0 (>= 1.0.0), librhythmbox-core10 (= 3.4.4-5ubuntu1), libx11-6, rhythmbox-data (>= 3.4.4-5ubuntu1), dbus, gstreamer1.0-plugins-base (>= 1.4.0), gstreamer1.0-plugins-good (>= 1.4.0), gstreamer1.0-x, media-player-info
+Suggests: gstreamer1.0-plugins-bad, gstreamer1.0-plugins-ugly, gnome-codec-install, gnome-control-center | unity-control-center, notification-daemon, rhythmbox-plugin-cdrecorder, rhythmbox-plugin-zeitgeist
+Recommends: yelp, avahi-daemon, gstreamer1.0-pulseaudio, gvfs-backends, rhythmbox-plugin-alternative-toolbar, rhythmbox-plugins
+
+Package: libnotify-bin
+Architecture: amd64
+Version: 0.7.9-3ubuntu5.22.04.1
+APT-ID: 72479
+Source: libnotify
+Source-Version: 0.7.9-3ubuntu5.22.04.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.26), libnotify4 (>= 0.7.3)
+
+Package: lshw
+Architecture: amd64
+Version: 02.19.git.2021.06.19.996aaad9c7-2build1
+APT-ID: 4603
+Source: lshw
+Source-Version: 02.19.git.2021.06.19.996aaad9c7-2build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11)
+Recommends: pci.ids, usb.ids
+
+Package: libhttp-cookies-perl
+Architecture: all
+Version: 6.10-1
+APT-ID: 2597
+Source: libhttp-cookies-perl
+Source-Version: 6.10-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libhttp-date-perl, libhttp-message-perl
+
+Package: lsof
+Architecture: amd64
+Version: 4.93.2+dfsg-1.1build2
+APT-ID: 4604
+Source: lsof
+Source-Version: 4.93.2+dfsg-1.1build2
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libselinux1 (>= 3.1~), libtirpc3 (>= 1.0.2)
+Suggests: perl
+
+Package: fonts-smc-chilanka
+Architecture: all
+Version: 1.540-1
+APT-ID: 500
+Multi-Arch: foreign
+Source: fonts-smc-chilanka
+Source-Version: 1.540-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libxmlsec1
+Architecture: amd64
+Version: 1.2.33-1build2
+APT-ID: 4242
+Multi-Arch: same
+Source: xmlsec1
+Source-Version: 1.2.33-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxml2 (>= 2.8.0), libxslt1.1 (>= 1.1.25)
+Breaks: libreoffice-core (<< 1:6.0.5~rc2~)
+
+Package: libgstreamer-plugins-good1.0-0
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 72405
+Multi-Arch: same
+Source: gst-plugins-good1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.56), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0)
+Replaces: gstreamer1.0-plugins-good (= 1.0.3-1ubuntu1), libgstreamer-plugins-bad1.0-0 (<< 1.0.3-1ubuntu1)
+Breaks: libgstreamer-plugins-bad1.0-0 (<< 1.0.3-1ubuntu1)
+
+Package: libpython3.10-testsuite
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 77972
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10 (>= 3.10.6-1~22.04), net-tools
+Suggests: python3-gdbm, python3-tk
+
+Package: libpython3.10-testsuite
+Architecture: all
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79525
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: universe/libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3.10 (>= 3.10.4-3ubuntu0.1), net-tools
+Suggests: python3-gdbm, python3-tk
+
+Package: libpython3.10-testsuite
+Architecture: all
+Version: 3.10.4-3
+APT-ID: 40579
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: universe/libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3.10 (>= 3.10.4-3), net-tools
+Suggests: python3-gdbm, python3-tk
+
+Package: libgirepository-1.0-1
+Architecture: amd64
+Version: 1.72.0-1
+APT-ID: 2367
+Multi-Arch: same
+Source: gobject-introspection
+Source-Version: 1.72.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libglib2.0-0 (>= 2.70.0), libc6 (>= 2.29), libffi8 (>= 3.4)
+Breaks: libcjs0 (<< 4.8.2-1+b1), libgjs0g (<< 1.68.4-1+b1), libglib-object-introspection-perl (<< 0.049-1+b2), python-gi (<< 3.42.0-1+b1), python3-gi (<< 3.42.0-1+b1), ruby-gobject-introspection (<< 3.4.3-1+b2)
+Provides: libgirepository-1.0-1-with-libffi8 (= 1.72.0-1)
+
+Package: gdm3
+Architecture: amd64
+Version: 42.0-1ubuntu7
+APT-ID: 71818
+Source: gdm3
+Source-Version: 42.0-1ubuntu7
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: accountsservice (>= 0.6.35), adduser, bash (>= 4.3), dconf-cli (>= 0.20), dconf-gsettings-backend (>= 0.20), dbus-bin | systemd-sysv, dbus-daemon, default-dbus-system-bus | dbus-system-bus, default-logind | logind, gir1.2-gdm-1.0 (= 42.0-1ubuntu7), ubuntu-session | gnome-session | x-session-manager | x-window-manager | x-terminal-emulator, gnome-session-bin (>= 3.37.0), gnome-session-common (>= 3.37.0-2~), gnome-settings-daemon (>= 3.37.0), gnome-shell (>= 3.37.90), gsettings-desktop-schemas, libgdm1 (= 42.0-1ubuntu7), libglib2.0-bin (>= 2.35.0), libpam-modules (>= 0.72-1), libpam-runtime (>= 0.76-13.1), librsvg2-common, lsb-base (>= 3.2-14), policykit-1 (>= 0.105-5~), procps, ucf, x11-common (>= 1:7.6+11), x11-xserver-utils, debconf (>= 0.5) | debconf-2.0, libaccountsservice0 (>= 0.6.55), libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.2), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.68.0), libgtk-3-0 (>= 3.0.0), libgudev-1.0-0 (>= 232), libkeyutils1 (>= 1.5.9), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libsystemd0, libx11-6, libxau6 (>= 1:1.0.9), libxcb1, libxdmcp6
+Suggests: orca, libpam-fprintd (>= 0.8.0-2), libpam-sss (>= 2.3.0-1), libpam-pkcs11, libpam-gnome-keyring
+Recommends: at-spi2-core, ubuntu-session | gnome-session | x-session-manager, x11-xkb-utils, xserver-xephyr, xserver-xorg, zenity
+Breaks: pulseaudio (<< 11.1-2), xserver-xorg-core (<< 2:1.17.2-2~)
+Provides: x-display-manager
+
+Package: libavc1394-0
+Architecture: amd64
+Version: 0.5.4-5build2
+APT-ID: 1698
+Multi-Arch: same
+Source: libavc1394
+Source-Version: 0.5.4-5build2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libraw1394-11 (>= 2.1.2)
+
+Package: libsodium23
+Architecture: amd64
+Version: 1.0.18-1build2
+APT-ID: 3701
+Multi-Arch: same
+Source: libsodium
+Source-Version: 1.0.18-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libboost-locale1.74.0
+Architecture: amd64
+Version: 1.74.0-14ubuntu3
+APT-ID: 1770
+Multi-Arch: same
+Source: boost1.74
+Source-Version: 1.74.0-14ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libboost-thread1.74.0 (>= 1.74.0), libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), libstdc++6 (>= 11)
+
+Package: python3-pexpect
+Architecture: all
+Version: 4.8.0-2ubuntu1
+APT-ID: 5395
+Source: pexpect
+Source-Version: 4.8.0-2ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-ptyprocess, python3:any
+Suggests: python-pexpect-doc
+
+Package: libgnome-bluetooth-3.0-13
+Architecture: amd64
+Version: 42.0-5
+APT-ID: 2420
+Multi-Arch: same
+Source: gnome-bluetooth3
+Source-Version: 42.0-5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.59.0), libudev1 (>= 196), libupower-glib3 (>= 0.99.14), gnome-bluetooth-3-common (>= 42.0-5)
+
+Package: libcap2
+Architecture: amd64
+Version: 1:2.44-1build3
+APT-ID: 1851
+Multi-Arch: same
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libio-html-perl
+Architecture: all
+Version: 1.004-2
+APT-ID: 2663
+Source: libio-html-perl
+Source-Version: 1.004-2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libebook-contacts-1.2-3
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72318
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcamel-1.2-63 (>= 3.19.92), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.40), libphonenumber8, libstdc++6 (>= 5.2)
+
+Package: xdg-user-dirs
+Architecture: amd64
+Version: 0.17-2ubuntu4
+APT-ID: 6022
+Multi-Arch: foreign
+Source: xdg-user-dirs
+Source-Version: 0.17-2ubuntu4
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: network-manager-pptp-gnome
+Architecture: amd64
+Version: 1.2.10-1
+APT-ID: 4750
+Source: network-manager-pptp
+Source-Version: 1.2.10-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.34), libgtk-3-0 (>= 3.4), libnm0 (>= 1.2.0), libnma0 (>= 1.2.0), libsecret-1-0 (>= 0.18), network-manager-pptp (= 1.2.10-1)
+
+Package: libfuse3-3
+Architecture: amd64
+Version: 3.10.5-1build1
+APT-ID: 2278
+Multi-Arch: same
+Source: fuse3
+Source-Version: 3.10.5-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: fuse3
+
+Package: python3-nopie
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78603
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), python3.10-nopie (>= 3.10.6-1~)
+
+Package: python3-nopie
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 56760
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), python3.10-nopie (>= 3.10.4-1~)
+
+Package: gnome-calculator
+Architecture: amd64
+Version: 1:41.1-2ubuntu2
+APT-ID: 781
+Source: gnome-calculator
+Source-Version: 1:41.1-2ubuntu2
+Priority: optional
+Section: math
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libgee-0.8-2 (>= 0.20), libglib2.0-0 (>= 2.43.92), libgtk-3-0 (>= 3.24.1), libgtksourceview-4-0 (>= 2.91.4), libhandy-1-0 (>= 1.5.90), libmpc3 (>= 1.1.0), libmpfr6 (>= 3.1.3), libsoup2.4-1 (>= 2.42), libxml2 (>= 2.7.4), dconf-gsettings-backend | gsettings-backend
+Recommends: yelp, gvfs
+Replaces: gcalctool (<< 6.7)
+Breaks: gcalctool (<< 6.7)
+
+Package: libsgutils2-2
+Architecture: amd64
+Version: 1.46-1build1
+APT-ID: 3667
+Multi-Arch: same
+Source: sg3-utils
+Source-Version: 1.46-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: sg3-utils
+Conflicts: libsgutils2
+Replaces: libsgutils2
+
+Package: libjson-glib-1.0-common
+Architecture: all
+Version: 1.6.6-1build1
+APT-ID: 2756
+Multi-Arch: foreign
+Source: json-glib
+Source-Version: 1.6.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: totem-plugins
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 5861
+Source: totem
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28), libgdk-pixbuf-2.0-0 (>= 2.23.0), libglib2.0-0 (>= 2.56.0), libgtk-3-0 (>= 3.22.0), libpeas-1.0-0 (>= 1.1.0), libtotem0 (>= 42.0-1ubuntu1), libtotem0 (<< 42.1), totem (= 42.0-1ubuntu1), gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-pango-1.0, gir1.2-peas-1.0, gir1.2-totem-1.0 (= 42.0-1ubuntu1), python3-gi (>= 2.90.3), python3-xdg
+
+Package: libpulse-mainloop-glib0
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 3326
+Multi-Arch: same
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.28.0), libpulse0 (= 1:15.99.1+dfsg1-1ubuntu1)
+
+Package: fonts-sil-padauk
+Architecture: all
+Version: 5.000-3
+APT-ID: 496
+Multi-Arch: foreign
+Source: fonts-sil-padauk
+Source-Version: 5.000-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libwoff1
+Architecture: amd64
+Version: 1.0.2-1build4
+APT-ID: 4078
+Multi-Arch: same
+Source: woff2
+Source-Version: 1.0.2-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbrotli1 (>= 0.6.0), libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+
+Package: thunderbird-locale-en
+Architecture: amd64
+Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+APT-ID: 74454
+Source: thunderbird
+Source-Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+Priority: optional
+Section: web
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: thunderbird (>= 1:91.11.0+build2-0ubuntu0.22.04.1), thunderbird (<< 1:91.11.0+build2-0ubuntu0.22.04.1.1~)
+
+Package: libudisks2-0
+Architecture: amd64
+Version: 2.9.4-1ubuntu2
+APT-ID: 3928
+Multi-Arch: same
+Source: udisks2
+Source-Version: 2.9.4-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.50)
+
+Package: libc6
+Architecture: amd64
+Version: 2.35-0ubuntu3.1
+APT-ID: 72277
+Multi-Arch: same
+Source: glibc
+Source-Version: 2.35-0ubuntu3.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgcc-s1, libcrypt1 (>= 1:4.4.10-10ubuntu4)
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Recommends: libidn2-0 (>= 2.0.5~), libnss-nis, libnss-nisplus
+Replaces: libc6-amd64
+Breaks: busybox (<< 1.30.1-6), fakeroot (<< 1.25.3-1.1ubuntu2~), hurd (<< 1:0.9.git20170910-1), ioquake3 (<< 1.36+u20200211.f2c61c1~dfsg-2~), iraf-fitsutil (<< 2018.07.06-4), libgegl-0.4-0 (<< 0.4.18), libtirpc1 (<< 0.2.3), locales (<< 2.35), locales-all (<< 2.35), macs (<< 2.2.7.1-3~), nocache (<< 1.1-1~), nscd (<< 2.35), openarena (<< 0.8.8+dfsg-4~), openssh-server (<< 1:8.2p1-4), r-cran-later (<< 0.7.5+dfsg-2), wcc (<< 0.0.2+dfsg-3)
+
+Package: locales
+Architecture: all
+Version: 2.35-0ubuntu3.1
+APT-ID: 74191
+Source: glibc
+Source-Version: 2.35-0ubuntu3.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc-bin (>> 2.35), debconf (>= 0.5) | debconf-2.0
+
+Package: gnome-shell-extension-desktop-icons-ng
+Architecture: all
+Version: 43-2ubuntu1
+APT-ID: 71872
+Source: gnome-shell-extension-desktop-icons-ng
+Source-Version: 43-2ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, file-roller (>= 3.38), gnome-shell (>= 3.38), gjs, nautilus (>= 3.38), xdg-desktop-portal
+
+Package: dnsmasq-base
+Architecture: amd64
+Version: 2.86-1.1ubuntu0.1
+APT-ID: 71781
+Source: dnsmasq
+Source-Version: 2.86-1.1ubuntu0.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libgmp10 (>= 2:6.2.1+dfsg), libhogweed6 (>= 2.4-3), libidn2-0 (>= 2.0.0), libnetfilter-conntrack3 (>= 1.0.1), libnettle8 (>= 2.4-3)
+Recommends: dns-root-data
+Conflicts: dnsmasq-base-lua
+Replaces: dnsmasq (<< 2.63-1~), dnsmasq-base
+Breaks: dnsmasq (<< 2.63-1~)
+
+Package: python3-oauthlib
+Architecture: all
+Version: 3.2.0-1ubuntu0.1
+APT-ID: 74337
+Source: python-oauthlib
+Source-Version: 3.2.0-1ubuntu0.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-blinker, python3-cryptography, python3-jwt (>= 1.0.0)
+
+Package: libaspell15
+Architecture: amd64
+Version: 0.60.8-4build1
+APT-ID: 1642
+Multi-Arch: same
+Source: aspell
+Source-Version: 0.60.8-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libstdc++6 (>= 11)
+Suggests: aspell
+Recommends: aspell-en | aspell-dictionary | aspell6a-dictionary
+Conflicts: aspell6-dictionary
+Breaks: aspell-bin (<< 0.60.3-2)
+
+Package: mousetweaks
+Architecture: amd64
+Version: 3.32.0-3build2
+APT-ID: 4660
+Source: mousetweaks
+Source-Version: 3.32.0-3build2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0), libpango-1.0-0 (>= 1.14.0), libx11-6, libxcursor1 (>> 1.1.2), libxfixes3, libxtst6, dconf-gsettings-backend | gsettings-backend, gsettings-desktop-schemas (>= 0.1.0)
+
+Package: libnautilus-extension1a
+Architecture: amd64
+Version: 1:42.2-0ubuntu1
+APT-ID: 72466
+Multi-Arch: same
+Source: nautilus
+Source-Version: 1:42.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.67.1), libgtk-3-0 (>= 3.22.27)
+
+Package: docbook-xml
+Architecture: all
+Version: 4.5-11
+APT-ID: 340
+Multi-Arch: foreign
+Source: docbook-xml
+Source-Version: 4.5-11
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: sgml-data (>= 2.0.2), sgml-base (>= 1.28), xml-core (>= 0.14)
+Suggests: docbook, docbook-dsssl, docbook-xsl, docbook-defguide
+Provides: docbk-xml
+
+Package: ghostscript
+Architecture: amd64
+Version: 9.55.0~dfsg1-0ubuntu5
+APT-ID: 631
+Multi-Arch: foreign
+Source: ghostscript
+Source-Version: 9.55.0~dfsg1-0ubuntu5
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgs9 (= 9.55.0~dfsg1-0ubuntu5), libc6 (>= 2.34)
+Suggests: ghostscript-x
+Provides: postscript-viewer
+
+Package: apt-config-icons
+Architecture: all
+Version: 0.15.2-2
+APT-ID: 46
+Multi-Arch: foreign
+Source: appstream
+Source-Version: 0.15.2-2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: appstream
+
+Package: gnome-themes-extra-data
+Architecture: all
+Version: 3.28-1ubuntu3
+APT-ID: 818
+Multi-Arch: foreign
+Source: gnome-themes-extra
+Source-Version: 3.28-1ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: gnome-themes-standard-data
+Replaces: gnome-themes-standard-data
+
+Package: fonts-lohit-taml
+Architecture: all
+Version: 2.91.3-2
+APT-ID: 468
+Multi-Arch: foreign
+Source: fonts-lohit-taml
+Source-Version: 2.91.3-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-tamil-fonts (<= 1:0.5.12)
+Breaks: ttf-tamil-fonts (<= 1:0.5.12)
+
+Package: libpcap0.8
+Architecture: amd64
+Version: 1.10.1-4build1
+APT-ID: 3212
+Multi-Arch: same
+Source: libpcap
+Source-Version: 1.10.1-4build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdbus-1-3 (>= 1.9.14)
+Replaces: libpcap0.8-dev (<< 1.0.0-2)
+
+Package: libpwquality1
+Architecture: amd64
+Version: 1.4.4-1build2
+APT-ID: 3331
+Multi-Arch: same
+Source: libpwquality
+Source-Version: 1.4.4-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcrack2 (>= 2.8.14), libpwquality-common
+
+Package: gir1.2-nm-1.0
+Architecture: amd64
+Version: 1.36.6-0ubuntu2
+APT-ID: 71847
+Multi-Arch: same
+Source: network-manager
+Source-Version: 1.36.6-0ubuntu2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.10.7-1~), libnm0 (>= 1.36.0)
+
+Package: fonts-urw-base35
+Architecture: all
+Version: 20200910-1
+APT-ID: 546
+Multi-Arch: foreign
+Source: fonts-urw-base35
+Source-Version: 20200910-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: fonts-freefont-otf | fonts-freefont-ttf, fonts-texgyre
+
+Package: powermgmt-base
+Architecture: all
+Version: 1.36
+APT-ID: 4957
+Multi-Arch: foreign
+Source: powermgmt-base
+Source-Version: 1.36
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libwmflite-0.2-7
+Architecture: amd64
+Version: 0.2.12-5ubuntu1
+APT-ID: 4073
+Multi-Arch: same
+Source: libwmf
+Source-Version: 0.2.12-5ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: libwmf0.2-7 (<< 0.2.12-1)
+Breaks: libwmf0.2-7 (<< 0.2.12-1)
+
+Package: libunity9
+Architecture: amd64
+Version: 7.1.4+19.04.20190319-6build1
+APT-ID: 3938
+Multi-Arch: same
+Source: libunity
+Source-Version: 7.1.4+19.04.20190319-6build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbusmenu-glib4 (>= 0.4.2), libdee-1.0-4 (>= 1.2.7+15.04.20150304), libglib2.0-0 (>= 2.43.92), libunity-protocol-private0 (= 7.1.4+19.04.20190319-6build1), dconf-gsettings-backend | gsettings-backend, libunity-scopes-json-def-desktop (>= 7.1.4+19.04.20190319-6build1) | unity-scopes-json-def
+Suggests: unity-common (>= 7.1.2)
+Breaks: unity-common (<< 7.1.2)
+
+Package: klibc-utils
+Architecture: amd64
+Version: 2.0.10-4
+APT-ID: 1175
+Multi-Arch: foreign
+Source: klibc
+Source-Version: 2.0.10-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libklibc (= 2.0.10-4)
+Breaks: initramfs-tools (<< 0.123~)
+
+Package: libssl3
+Architecture: amd64
+Version: 3.0.2-0ubuntu1.6
+APT-ID: 72758
+Multi-Arch: same
+Source: openssl
+Source-Version: 3.0.2-0ubuntu1.6
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
+
+Package: libopus0
+Architecture: amd64
+Version: 1.3.1-0.1build2
+APT-ID: 3144
+Multi-Arch: same
+Source: opus
+Source-Version: 1.3.1-0.1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+Suggests: opus-tools
+
+Package: gir1.2-ibus-1.0
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 717
+Multi-Arch: same
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, libibus-1.0-5 (>= 1.5.21)
+Breaks: ibus-array (<< 0.2.1-3), ibus-pinyin (<< 1.5.0-6)
+
+Package: gir1.2-dee-1.0
+Architecture: amd64
+Version: 1.2.7+17.10.20170616-6ubuntu4
+APT-ID: 656
+Source: dee
+Source-Version: 1.2.7+17.10.20170616-6ubuntu4
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, libdee-1.0-4 (>= 1.2.7+15.04.20150304)
+Replaces: gir1.2-dee-0.5
+Breaks: gir1.2-dee-0.5
+
+Package: libreoffice-style-colibre
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72693
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: libreoffice-common
+Enhances: libreoffice-core
+Provides: libreoffice-style
+
+Package: libuchardet0
+Architecture: amd64
+Version: 0.0.7-1build2
+APT-ID: 3923
+Multi-Arch: same
+Source: uchardet
+Source-Version: 0.0.7-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 4.1.1)
+
+Package: libpangocairo-1.0-0
+Architecture: amd64
+Version: 1.50.6+ds-2
+APT-ID: 3193
+Multi-Arch: same
+Source: pango1.0
+Source-Version: 1.50.6+ds-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.12.10), libfontconfig1 (>= 2.13.0), libglib2.0-0 (>= 2.62.0), libharfbuzz0b (>= 2.6.0), libpango-1.0-0 (= 1.50.6+ds-2), libpangoft2-1.0-0 (= 1.50.6+ds-2)
+
+Package: ibus-data
+Architecture: all
+Version: 1.5.26-4
+APT-ID: 1096
+Multi-Arch: foreign
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, librsvg2-common
+Suggests: ibus
+Replaces: ibus (<< 1.5.21-1~exp2)
+Breaks: ibus (<< 1.5.21-1~exp2)
+
+Package: libndp0
+Architecture: amd64
+Version: 1.8-0ubuntu3
+APT-ID: 3006
+Multi-Arch: same
+Source: libndp
+Source-Version: 1.8-0ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: file-roller
+Architecture: amd64
+Version: 3.42.0-1
+APT-ID: 421
+Source: file-roller
+Source-Version: 3.42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bzip2, unzip, zip, dconf-gsettings-backend | gsettings-backend, libarchive13 (>= 3.3.3), libc6 (>= 2.34), libcairo2 (>= 1.4.10), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.41.2), libgtk-3-0 (>= 3.21.5), libhandy-1-0 (>= 1.5.90), libjson-glib-1.0-0 (>= 1.5.2), libnautilus-extension1a (>= 3.27.90), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.14.0)
+Suggests: p7zip-full, arj, lha, lzip, lzma, lzop, ncompress, rpm2cpio, rzip, sharutils, squashfs-tools, unace, unalz, unar, xz-utils, zoo
+Recommends: gvfs, yelp
+
+Package: libxkbcommon0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 4217
+Multi-Arch: same
+Source: libxkbcommon
+Source-Version: 1.4.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xkb-data, libc6 (>= 2.33)
+
+Package: libedataserverui-1.2-3
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72332
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libcairo2 (>= 1.2.4), libcamel-1.2-63 (>= 3.19.92), libecal-2.0-1 (>= 3.33.4), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libgcr-base-3-1 (>= 3.8.0), libgcr-ui-3-1 (>= 3.8.0), libglib2.0-0 (>= 2.40), libgtk-3-0 (>= 3.16.2), libical3 (>= 3.0.7), libpango-1.0-0 (>= 1.14.0), libsoup2.4-1 (>= 2.42), libwebkit2gtk-4.0-37 (>= 2.31.1), evolution-data-server-common (>= 3.44)
+
+Package: gstreamer1.0-x
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 935
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo2 (>= 1.2.4), libglib2.0-0 (>= 2.56), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.22), libx11-6, libxext6, libxv1
+Provides: gstreamer1.0-videosink
+
+Package: libwnck-3-common
+Architecture: all
+Version: 40.1-1
+APT-ID: 4075
+Multi-Arch: foreign
+Source: libwnck3
+Source-Version: 40.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libxtst6
+Architecture: amd64
+Version: 2:1.2.3-1build4
+APT-ID: 4278
+Multi-Arch: same
+Source: libxtst
+Source-Version: 2:1.2.3-1build4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6, x11-common
+
+Package: libefiboot1
+Architecture: amd64
+Version: 37-6ubuntu2
+APT-ID: 2134
+Multi-Arch: same
+Source: efivar
+Source-Version: 37-6ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libefivar1 (>= 37)
+Breaks: efibootmgr (<< 0.12-2)
+
+Package: libkrb5-3
+Architecture: amd64
+Version: 1.19.2-2
+APT-ID: 2782
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libk5crypto3 (>= 1.15~beta1), libkeyutils1 (>= 1.5.9), libkrb5support0 (= 1.19.2-2), libssl3 (>= 3.0.0~~alpha1)
+Suggests: krb5-doc, krb5-user
+Recommends: krb5-locales
+Breaks: libapache2-mod-auth-kerb (<= 5.4-2.4), libsmbclient (<= 2:3.6.1-2), sssd (<= 1.2.1-4.3)
+
+Package: gir1.2-accountsservice-1.0
+Architecture: amd64
+Version: 22.07.5-2ubuntu1.3
+APT-ID: 71819
+Multi-Arch: same
+Source: accountsservice
+Source-Version: 22.07.5-2ubuntu1.3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.34), libaccountsservice0 (>= 0.6.55)
+
+Package: usrmerge
+Architecture: all
+Version: 25ubuntu2
+APT-ID: 5932
+Multi-Arch: foreign
+Source: usrmerge
+Source-Version: 25ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.32.1-3)
+Conflicts: acl (<< 2.2.52-3~), arptables (<< 0.0.4+snapshot20181021-1~), coreutils (<< 8.24-1~), cryptsetup (<< 2:1.7.0-1~), davfs2 (<< 1.5.2-1.2~), debianutils (<< 4.5~), ebtables (<< 2.0.10.4+snapshot20181205-1~), elvis-tiny (<< 1.4-24~), kbd (<< 2.0.3-1~), ksh (<< 93u+20120801-3.1~), less (<< 481-2~), libbrlapi-dev (<< 5.3.1-1~), libdm0-dev, libjson-c-dev (<< 0.12.1-1.1~), libpng12-0 (<< 1.2.54-4~), libusb-0.1-4 (<< 2:0.1.12-28~), mksh (<< 52b-1~), molly-guard (<< 0.7.1+exp1~), musl-dev (<< 1.1.9-1.1~), nano (<< 2.3.99pre3-1~), open-iscsi (<< 2.0.873+git0.3b4b4500-13~), open-vm-tools (<< 2:10.0.5-3227872-2~), policycoreutils (<< 2.4-4~), safe-rm (<< 0.12-6~), tcsh (<< 6.18.01-4~), vsearch (<< 1.9.5-2~), xfsdump (<< 3.1.6+nmu1~), xfslibs-dev (<< 4.9.0+nmu1~), yp-tools (<< 3.3-5~), zsh (<< 5.2-4~)
+Breaks: cruft-ng (<< 0.4.4~), initramfs-tools (<< 0.121~)
+
+Package: libgnome-menu-3-0
+Architecture: amd64
+Version: 3.36.0-1ubuntu3
+APT-ID: 2435
+Multi-Arch: same
+Source: gnome-menus
+Source-Version: 3.36.0-1ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3)
+
+Package: libpam-modules
+Architecture: amd64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3178
+Multi-Arch: same
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.3.0), libdb5.3, libnsl2 (>= 1.0), libpam0g (>= 1.3.2), libselinux1 (>= 3.1~), libtirpc3 (>= 1.0.2), debconf (>= 0.5) | debconf-2.0, libpam-modules-bin (= 1.4.0-11ubuntu2)
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-umask, libpam-motd, libpam-mkhomedir
+
+Package: linux-modules-5.15.0-43-generic
+Architecture: amd64
+Version: 5.15.0-43.46
+APT-ID: 73798
+Source: linux
+Source-Version: 5.15.0-43.46
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-image-5.15.0-43-generic | linux-image-unsigned-5.15.0-43-generic
+
+Package: glib-networking-services
+Architecture: amd64
+Version: 2.72.0-1
+APT-ID: 770
+Multi-Arch: foreign
+Source: glib-networking
+Source-Version: 2.72.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.69.0), libproxy1v5 (>= 0.4.17), glib-networking-common (>= 2.72.0-1)
+Recommends: glib-networking
+
+Package: fonts-beng-extra
+Architecture: all
+Version: 3.2.1-1
+APT-ID: 432
+Multi-Arch: foreign
+Source: fonts-beng-extra
+Source-Version: 3.2.1-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-lohit-beng-assamese, fonts-lohit-beng-bengali
+Replaces: ttf-bengali-fonts
+Breaks: ttf-bengali-fonts (<< 2:1.0)
+
+Package: libatk-adaptor
+Architecture: amd64
+Version: 2.38.0-3
+APT-ID: 1651
+Multi-Arch: same
+Source: at-spi2-atk
+Source-Version: 2.38.0-3
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk-bridge2.0-0 (>= 2.38.0-3), libglib2.0-0 (>= 2.12.0)
+Conflicts: at-spi
+Replaces: at-spi
+Provides: at-spi
+
+Package: seahorse
+Architecture: amd64
+Version: 41.0-2
+APT-ID: 5646
+Source: seahorse
+Source-Version: 41.0-2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-glib1 (>= 0.6.16), libc6 (>= 2.34), libgck-1-0 (>= 3.12.0), libgcr-base-3-1 (>= 3.38), libgcr-ui-3-1 (>= 3.38), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.66), libgpgme11 (>= 1.14.0), libgtk-3-0 (>= 3.24), libhandy-1-0 (>= 1.5.90), libldap-2.5-0 (>= 2.5.4), libpwquality1 (>= 1.1.0), libsecret-1-0 (>= 0.18), libsoup2.4-1 (>= 2.41.90), gcr (>= 3.4), gnome-keyring (>= 3.4), gnupg (>= 2.0.12)
+Recommends: openssh-client
+
+Package: python3-pyatspi
+Architecture: all
+Version: 2.38.2-1
+APT-ID: 5411
+Source: pyatspi
+Source-Version: 2.38.2-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-gi, gir1.2-atspi-2.0 (>= 2.33.1), libatk-adaptor, at-spi2-core
+
+Package: libgphoto2-port12
+Architecture: amd64
+Version: 2.5.27-1build2
+APT-ID: 2480
+Multi-Arch: same
+Source: libgphoto2
+Source-Version: 2.5.27-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libltdl7 (>= 2.4.6), libusb-1.0-0 (>= 2:1.0.8)
+Suggests: gphoto2 (>= 2.5.7)
+Replaces: libgphoto2-port10 (>= 2.5.7)
+Breaks: libgphoto2-port10 (>= 2.5.7)
+
+Package: fonts-mlym
+Architecture: all
+Version: 2:1.3
+APT-ID: 473
+Multi-Arch: foreign
+Source: fonts-mlym
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-lohit-mlym, fonts-samyak-mlym, fonts-smc
+Replaces: ttf-malayalam-fonts
+Breaks: ttf-malayalam-fonts (<< 2:1.0)
+
+Package: libatk1.0-0
+Architecture: amd64
+Version: 2.36.0-3build1
+APT-ID: 1656
+Multi-Arch: same
+Source: atk1.0
+Source-Version: 2.36.0-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.55.2), libatk1.0-data (>= 2.36.0-3build1)
+
+Package: xauth
+Architecture: amd64
+Version: 1:1.1-1build2
+APT-ID: 6012
+Multi-Arch: foreign
+Source: xauth
+Source-Version: 1:1.1-1build2
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6, libxau6 (>= 1:1.0.9), libxext6, libxmuu1 (>= 2:1.1.3)
+
+Package: yaru-theme-sound
+Architecture: all
+Version: 22.04.4
+APT-ID: 6071
+Source: yaru-theme
+Source-Version: 22.04.4
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fwupd-signed
+Architecture: amd64
+Version: 1.44+1.2-3
+APT-ID: 570
+Multi-Arch: foreign
+Source: fwupd-signed
+Source-Version: 1.44
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: secureboot-db, fwupd
+
+Package: dconf-cli
+Architecture: amd64
+Version: 0.40.0-3
+APT-ID: 272
+Source: dconf
+Source-Version: 0.40.0-3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libdconf1 (= 0.40.0-3), libc6 (>= 2.34), libglib2.0-0 (>= 2.44.0)
+Conflicts: dconf
+
+Package: libgssdp-1.2-0
+Architecture: amd64
+Version: 1.4.0.1-2build1
+APT-ID: 2513
+Multi-Arch: same
+Source: gssdp
+Source-Version: 1.4.0.1-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.67.3), libsoup2.4-1 (>= 2.26.1)
+
+Package: libpcsclite1
+Architecture: amd64
+Version: 1.9.5-3
+APT-ID: 3232
+Multi-Arch: same
+Source: pcsc-lite
+Source-Version: 1.9.5-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: pcscd (= 1.9.5-3)
+Breaks: libpcsclite-dev (<< 1.9.5-3), pcscd (<< 1.9.5-3)
+
+Package: yaru-theme-gtk
+Architecture: all
+Version: 22.04.4
+APT-ID: 6069
+Source: yaru-theme
+Source-Version: 22.04.4
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: session-migration, gnome-themes-extra, gtk2-engines-pixbuf, gtk2-engines-murrine, libglib2.0-bin
+
+Package: libavahi-ui-gtk3-0
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1696
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (= 0.8-5ubuntu5), libavahi-common3 (= 0.8-5ubuntu5), libavahi-glib1 (= 0.8-5ubuntu5), libc6 (>= 2.4), libgdbm6 (>= 1.16), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0)
+
+Package: fonts-lohit-telu
+Architecture: all
+Version: 2.5.5-2build1
+APT-ID: 470
+Multi-Arch: foreign
+Source: fonts-lohit-telu
+Source-Version: 2.5.5-2build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-telugu-fonts (<= 1:0.5.12)
+Breaks: ttf-telugu-fonts (<= 1:0.5.12)
+
+Package: gir1.2-peas-1.0
+Architecture: amd64
+Version: 1.32.0-1
+APT-ID: 737
+Multi-Arch: same
+Source: libpeas
+Source-Version: 1.32.0-1
+Priority: extra
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.39.0), gir1.2-gtk-3.0 (>= 3.0.0), libpeas-1.0-0 (>= 1.26.0)
+Provides: gir1.2-peasgtk-1.0 (= 1.32.0-1)
+
+Package: libpython3.10
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72531
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: libs
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (= 3.10.6-1~22.04), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: libpython3.10
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79373
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (= 3.10.4-3ubuntu0.1), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: libpython3.10
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 3337
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: libs
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (= 3.10.4-3), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: gnome-settings-daemon
+Architecture: amd64
+Version: 42.1-1ubuntu2.1
+APT-ID: 71867
+Source: gnome-settings-daemon
+Source-Version: 42.1-1ubuntu2.1
+Priority: extra
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-settings-daemon-common (= 42.1-1ubuntu2.1), gsettings-desktop-schemas (>= 42~), default-logind | logind, libaccountsservice0 (>= 0.6.40), libasound2 (>= 1.0.16), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.16), libcolord2 (>= 1.4.5), libcups2 (>= 1.6.0), libfontconfig1 (>= 2.12.6), libgck-1-0 (>= 3.2.2), libgcr-base-3-1 (>= 3.8.0), libgeoclue-2-0 (>= 2.4.0), libgeocode-glib0 (>= 3.10.0), libglib2.0-0 (>= 2.59.0), libgnome-desktop-3-19 (>= 3.37.90.1), libgtk-3-0 (>= 3.21.5), libgudev-1.0-0 (>= 146), libgweather-3-16 (>= 40.0), liblcms2-2 (>= 2.2+git20110628), libmm-glib0 (>= 1.0), libnm0 (>= 1.0.0), libnotify4 (>= 0.7.3), libp11-kit0 (>= 0.23.18.1), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpolkit-gobject-1-0 (>= 0.99), libpulse-mainloop-glib0 (>= 12.99.3), libpulse0 (>= 12.99.3), libupower-glib3 (>= 0.99.12), libwacom9 (>= 2.0.0), libwayland-client0 (>= 1.0.2), libx11-6, libxext6, libxfixes3 (>= 1:6.0.0), libxi6 (>= 2:1.2.99.4)
+Suggests: usbguard
+Recommends: iio-sensor-proxy, pulseaudio, x11-xserver-utils
+Breaks: afterstep (<< 2.2.12-11.1~), budgie-core (<< 10.4+git20171031.10.g9f71bb8-1.2~), cairo-dock (<< 3.4.1-1.2~), evolution (<< 3.37.3~), gdm3 (<< 3.37.0), gnome-control-center (<< 1:3.25.91), gnome-initial-setup (<< 3.27), gnome-session (<< 3.37.0), gnome-session-flashback (<< 3.26.0-3~), gnome-shell (<< 3.37.90), gnome-shell-extensions (<< 3.27), libgtk-3-0 (<< 3.24.23~), libgtk-4-0 (<< 3.99.1~), libmutter-6-0 (<< 3.37), libmutter-7-0 (<< 3.39), openbox-gnome-session (<< 3.6.1-7~), xmonad (<< 0.13-7~)
+
+Package: libvncclient1
+Architecture: amd64
+Version: 0.9.13+dfsg-3build2
+APT-ID: 4013
+Multi-Arch: same
+Source: libvncserver
+Source-Version: 0.9.13+dfsg-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libjpeg8 (>= 8c), liblzo2-2 (>= 2.02), libsasl2-2 (>= 2.1.27+dfsg2), zlib1g (>= 1:1.1.4)
+Replaces: libvncserver0 (<< 0.9.9+dfsg-3)
+Breaks: libvncserver0 (<< 0.9.9+dfsg-3)
+
+Package: gir1.2-gtksource-4
+Architecture: amd64
+Version: 4.8.3-1
+APT-ID: 706
+Multi-Arch: same
+Source: gtksourceview4
+Source-Version: 4.8.3-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gtk-3.0 (>= 3.24), libgtksourceview-4-0 (>= 3.99.7)
+
+Package: gir1.2-gnomebluetooth-3.0
+Architecture: amd64
+Version: 42.0-5
+APT-ID: 688
+Multi-Arch: same
+Source: gnome-bluetooth3
+Source-Version: 42.0-5
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.5), libgnome-bluetooth-3.0-13 (>= 42~beta)
+Breaks: gnome-bluetooth (<< 3.8), gnome-shell (<< 42~alpha)
+
+Package: gnome-shell-extension-appindicator
+Architecture: all
+Version: 42-2~fakesync1
+APT-ID: 809
+Source: gnome-shell-extension-appindicator
+Source-Version: 42-2~fakesync1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-shell (>= 3.33), gnome-shell (<< 43~), dconf-gsettings-backend | gsettings-backend
+Suggests: gnome-shell-extension-prefs, libappindicator3-1, libayatana-appindicator3-1
+
+Package: printer-driver-min12xxw
+Architecture: amd64
+Version: 0.0.9-11build2
+APT-ID: 4972
+Source: min12xxw
+Source-Version: 0.0.9-11build2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Recommends: cups, ghostscript, foomatic-db-compressed-ppds | foomatic-db
+Replaces: min12xxw (<< 0.0.9-6~)
+Breaks: min12xxw (<< 0.0.9-6~)
+
+Package: gir1.2-totem-1.0
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 749
+Multi-Arch: same
+Source: totem
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12), gir1.2-gtk-3.0 (>= 3.22.0), gir1.2-totemplparser-1.0 (>= 3.26.5), libtotem0 (<< 42.1), libtotem0 (>= 42.0-1ubuntu1)
+
+Package: libpoppler-glib8
+Architecture: amd64
+Version: 22.02.0-2ubuntu0.1
+APT-ID: 72519
+Multi-Arch: same
+Source: poppler
+Source-Version: 22.02.0-2ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpoppler118 (= 22.02.0-2ubuntu0.1), libc6 (>= 2.34), libcairo2 (>= 1.12.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.67.1), libstdc++6 (>= 11)
+
+Package: libblockdev-loop2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1736
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-utils2 (>= 2.14), libc6 (>= 2.27), libglib2.0-0 (>= 2.42.2)
+
+Package: libvte-2.91-common
+Architecture: amd64
+Version: 0.68.0-1
+APT-ID: 4030
+Multi-Arch: foreign
+Source: vte2.91
+Source-Version: 0.68.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libnet-http-perl
+Architecture: all
+Version: 6.22-1
+APT-ID: 3013
+Source: libnet-http-perl
+Source-Version: 6.22-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libio-socket-ip-perl, liburi-perl
+Recommends: libio-socket-ssl-perl
+
+Package: libwps-0.4-4
+Architecture: amd64
+Version: 0.4.12-2build1
+APT-ID: 4086
+Multi-Arch: same
+Source: libwps
+Source-Version: 0.4.12-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11)
+
+Package: libharfbuzz-icu0
+Architecture: amd64
+Version: 2.7.4-1ubuntu3.1
+APT-ID: 72422
+Multi-Arch: same
+Source: harfbuzz
+Source-Version: 2.7.4-1ubuntu3.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libharfbuzz0b (>= 0.9.4), libicu70 (>= 70.1-1~)
+
+Package: libxcb-render0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4156
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxcb1 (>= 1.8)
+
+Package: sgml-data
+Architecture: all
+Version: 2.0.11+nmu1
+APT-ID: 5655
+Multi-Arch: foreign
+Source: sgml-data
+Source-Version: 2.0.11+nmu1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, sgml-base (>= 1.28), xml-core (>= 0.14)
+Suggests: perlsgml, w3-recs, opensp, libxml2-utils
+Replaces: docbook-xml (<= 3.1.3.6-1), sp (<< 1.3.4-1.2.1-14)
+Breaks: sp (<= 1.1.1-2)
+
+Package: libgnome-bg-4-1
+Architecture: amd64
+Version: 42.4-0ubuntu1
+APT-ID: 72384
+Multi-Arch: same
+Source: gnome-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gsettings-desktop-schemas (>= 3.27.0), libc6 (>= 2.14), libcairo2 (>= 1.14.0), libgdk-pixbuf-2.0-0 (>= 2.36.5), libglib2.0-0 (>= 2.53.0), libgnome-desktop-4-1 (>= 3.17.92), libgtk-4-1 (>= 4.4.0)
+Recommends: locales | locales-all
+
+Package: printer-driver-postscript-hp
+Architecture: amd64
+Version: 3.21.12+dfsg0-1
+APT-ID: 4974
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, xz-utils, libc6 (>= 2.34), libcups2 (>= 1.4.0)
+Suggests: hplip (>= 3.21.12+dfsg0-1)
+Replaces: hplip (<< 3.18.3+dfsg0-1~)
+Breaks: hplip (<< 3.18.3+dfsg0-1~)
+
+Package: gstreamer1.0-gtk3
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 71892
+Multi-Arch: same
+Source: gst-plugins-good1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.56), libgstreamer-gl1.0-0 (>= 1.20.0), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libgtk-3-0 (>= 3.16.2)
+Replaces: gstreamer1.0-plugins-bad (<< 1.13.1)
+Breaks: gstreamer1.0-plugins-bad (<< 1.13.1)
+Provides: gstreamer1.0-videosink
+
+Package: manpages
+Architecture: all
+Version: 5.10-1ubuntu1
+APT-ID: 4623
+Multi-Arch: foreign
+Source: manpages
+Source-Version: 5.10-1ubuntu1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: man-browser
+Replaces: attr (<< 1:2.4.47-3), keyutils (<< 1.6-1), manpages-dev (<< 5.09-2)
+Breaks: attr (<< 1:2.4.47-3), keyutils (<< 1.6-1), manpages-dev (<< 5.09-2)
+
+Package: linux-base
+Architecture: all
+Version: 4.5ubuntu9
+APT-ID: 4323
+Multi-Arch: foreign
+Source: linux-base
+Source-Version: 4.5ubuntu9
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+
+Package: libreoffice-writer
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72697
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-base-core (= 1:7.3.6-0ubuntu0.22.04.1), libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), libabw-0.1-1, libc6 (>= 2.32), libe-book-0.1-1, libepubgen-0.1-1 (>= 0.1.0), libetonyek-0.1-1, libgcc-s1 (>= 3.0), libicu70 (>= 70.1-1~), libmwaw-0.3-3, libodfgen-0.1-1, librevenge-0.0-0, libstdc++6 (>= 12), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 1.4.0), libwpd-0.10-10, libwpg-0.3-3, libwps-0.4-4, libxml2 (>= 2.8), uno-libs-private, zlib1g (>= 1:1.1.4)
+Suggests: fonts-crosextra-caladea, fonts-crosextra-carlito, libreoffice-base, libreoffice-java-common (>= 1:7.3.6~), default-jre (>= 2:1.8) | java8-runtime | jre
+Recommends: libreoffice-math
+Replaces: libreoffice-common (<< 1:6.4.2~rc1~)
+Breaks: libreoffice-common (<< 1:6.4.2~rc1~)
+
+Package: update-notifier
+Architecture: amd64
+Version: 3.192.54
+APT-ID: 5918
+Source: update-notifier
+Source-Version: 3.192.54
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libayatana-appindicator3-1 (>= 0.2.92), libc6 (>= 2.34), libglib2.0-0 (>= 2.49.2), libgtk-3-0 (>= 3.0.0), libgudev-1.0-0 (>= 146), libjson-glib-1.0-0 (>= 1.5.2), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.18.0), dconf-gsettings-backend | gsettings-backend, update-notifier-common (= 3.192.54), python3-dbus, ubuntu-drivers-common, update-manager-gnome | update-manager (>= 1:17.04.3), ubuntu-release-upgrader-gtk, gnome-shell | notification-daemon, policykit-1
+Recommends: apport-gtk (>= 2.8-0ubuntu3), python3-aptdaemon.gtk3widgets | synaptic (>= 0.75.12), software-properties-gtk, python3-aptdaemon, whoopsie (>= 0.2.77)
+
+Package: xserver-common
+Architecture: all
+Version: 2:21.1.3-2ubuntu2.1
+APT-ID: 74552
+Multi-Arch: foreign
+Source: xorg-server
+Source-Version: 2:21.1.3-2ubuntu2.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: x11-common, xkb-data, x11-xkb-utils
+Recommends: xfonts-base, xauth
+Replaces: xserver-xorg-core (<< 2:1.5.2)
+
+Package: xcursor-themes
+Architecture: all
+Version: 1.0.6-0ubuntu1
+APT-ID: 6015
+Source: xcursor-themes
+Source-Version: 1.0.6-0ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libusb-1.0-0
+Architecture: amd64
+Version: 2:1.0.25-1ubuntu2
+APT-ID: 72803
+Multi-Arch: same
+Source: libusb-1.0
+Source-Version: 2:1.0.25-1ubuntu2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 183)
+
+Package: idle3
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 77377
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (>= 3.10.6-1~22.04), idle (>= 3.10.6-1~22.04)
+
+Package: idle3
+Architecture: all
+Version: 3.10.4-0ubuntu2
+APT-ID: 21729
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3 (>= 3.10.4-0ubuntu2), idle (>= 3.10.4-0ubuntu2)
+
+Package: libuuid1
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 3977
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+Recommends: uuid-runtime
+
+Package: man-db
+Architecture: amd64
+Version: 2.10.2-1
+APT-ID: 4622
+Multi-Arch: foreign
+Source: man-db
+Source-Version: 2.10.2-1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bsdextrautils | bsdmainutils (<< 12.1.1~), groff-base, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libgdbm6 (>= 1.16), libpipeline1 (>= 1.5.0), libseccomp2 (>= 2.1.0), zlib1g (>= 1:1.1.4)
+Suggests: apparmor, groff, less, www-browser
+Conflicts: man
+Replaces: man, nlsutils
+Provides: man-browser, man
+
+Package: python3-mako
+Architecture: all
+Version: 1.1.3+ds1-2ubuntu0.1
+APT-ID: 74333
+Source: mako
+Source-Version: 1.1.3+ds1-2ubuntu0.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-markupsafe, python3:any
+Suggests: python3-beaker, python-mako-doc
+Replaces: python-mako (<< 1.1.0+ds1-1)
+Breaks: python-mako (<< 1.1.0+ds1-1)
+
+Package: xwayland
+Architecture: amd64
+Version: 2:22.1.1-1ubuntu0.1
+APT-ID: 79429
+Source: xwayland
+Source-Version: 2:22.1.1-1ubuntu0.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: xserver-common, libc6 (>= 2.35), libdrm2 (>= 2.4.75), libepoxy0 (>= 1.5.4), libgbm1 (>= 21.1.0), libgcrypt20 (>= 1.9.0), libgl1, libpixman-1-0 (>= 0.30.0), libtirpc3 (>= 1.0.2), libwayland-client0 (>= 1.20.0), libxau6 (>= 1:1.0.9), libxcvt0 (>= 0.1.0), libxdmcp6, libxfont2 (>= 1:2.0.1), libxshmfence1
+
+Package: libvisual-0.4-0
+Architecture: amd64
+Version: 0.4.0-17build2
+APT-ID: 4011
+Multi-Arch: same
+Source: libvisual
+Source-Version: 0.4.0-17build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: libvisual-0.4-plugins
+Breaks: libvisual-0.4-plugins (<< 0.4.0.dfsg.1-5)
+
+Package: libblockdev2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1753
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblockdev-utils2 (>= 2.14), libc6 (>= 2.34), libglib2.0-0 (>= 2.42.2)
+
+Package: python3-cairo
+Architecture: amd64
+Version: 1.20.1-3build1
+APT-ID: 5168
+Multi-Arch: same
+Source: pycairo
+Source-Version: 1.20.1-3build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.14), libcairo2 (>= 1.15.12)
+Provides: python3.10-cairo
+
+Package: ipp-usb
+Architecture: amd64
+Version: 0.9.20-1
+APT-ID: 1133
+Multi-Arch: foreign
+Source: ipp-usb
+Source-Version: 0.9.20-1
+Priority: optional
+Section: comm
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: avahi-daemon, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libusb-1.0-0 (>= 2:1.0.16)
+
+Package: duplicity
+Architecture: amd64
+Version: 0.8.21-1build1
+APT-ID: 356
+Source: duplicity
+Source-Version: 0.8.21-1build1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), librsync2 (>= 1.0.0), python3 (<< 3.11), python3 (>= 3.10~), python3-fasteners, python3-future, python3.10:any, python3:any (>= 3.7~), python3-lockfile, gnupg | gnupg1
+Suggests: python3-boto, ncftp, lftp, tahoe-lafs, python3-swiftclient, python3-pip, par2
+Recommends: rsync, python3-paramiko, python3-pexpect, python3-urllib3, python3-oauthlib
+
+Package: gpgv
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71886
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), zlib1g (>= 1:1.1.4)
+Suggests: gnupg
+Replaces: gnupg2 (<< 2.0.21-2), gpgv2 (<< 2.1.11-7+exp1)
+Breaks: gnupg2 (<< 2.0.21-2), gpgv2 (<< 2.1.11-7+exp1), python-debian (<< 0.1.29)
+
+Package: libblockdev-part-err2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1747
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.3), libglib2.0-0 (>= 2.42.2)
+
+Package: printer-driver-pxljr
+Architecture: amd64
+Version: 1.4+repack0-6build1
+APT-ID: 4976
+Source: pxljr
+Source-Version: 1.4+repack0-6build1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-filters | foomatic-filters, python3:any, xz-utils, libc6 (>= 2.34), libijs-0.35 (>= 0.35), libjpeg8 (>= 8c)
+Replaces: pxljr (<< 1.3+repack0-2~)
+Breaks: pxljr (<< 1.3+repack0-2~)
+
+Package: libtext-charwidth-perl
+Architecture: amd64
+Version: 0.04-10build3
+APT-ID: 3829
+Source: libtext-charwidth-perl
+Source-Version: 0.04-10build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), perl-base, perlapi-5.34.0
+
+Package: hunspell-en-us
+Architecture: all
+Version: 1:2020.12.07-2
+APT-ID: 997
+Multi-Arch: foreign
+Source: scowl
+Source-Version: 2020.12.07-2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dictionaries-common (>= 0.10)
+Suggests: hunspell, openoffice.org-hunspell | openoffice.org-core (>= 2.0.2)
+Conflicts: firefox (<< 2.0.0.3-2), iceape-browser (<< 1.1.1-2), icedove (<< 2.0.0.0-4), iceweasel (<< 2.0.0.3-2), libxul0d (= 1.8.0.11-3), mozilla-browser (<< 1.8+1.1.1-2), myspell-en-us, openoffice.org (<= 1.0.3-2), openoffice.org-core (<< 2.1~m190-1), thunderbird (<< 2.0.0.1+dfsg-0)
+Replaces: myspell-en-us, openoffice.org-spellcheck-en-us
+Provides: hunspell-dictionary, hunspell-dictionary-en-us, hunspell-dictionary-en
+
+Package: wbritish
+Architecture: all
+Version: 2020.12.07-2
+APT-ID: 5954
+Multi-Arch: foreign
+Source: scowl
+Source-Version: 2020.12.07-2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dictionaries-common (>= 0.20), debconf (>= 0.5) | debconf-2.0
+Provides: wordlist
+
+Package: bash
+Architecture: amd64
+Version: 5.1-6ubuntu1
+APT-ID: 88
+Essential: yes
+Multi-Arch: foreign
+Source: bash
+Source-Version: 5.1-6ubuntu1
+Priority: important
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
+Pre-Depends: libc6 (>= 2.34), libtinfo6 (>= 6)
+Suggests: bash-doc
+Recommends: bash-completion (>= 20060301-0)
+Conflicts: bash-completion (<< 20060301-0)
+Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
+
+Package: dictionaries-common
+Architecture: all
+Version: 1.28.14
+APT-ID: 320
+Multi-Arch: foreign
+Source: dictionaries-common
+Source-Version: 1.28.14
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, libtext-iconv-perl, emacsen-common
+Suggests: ispell | aspell | hunspell, wordlist
+Replaces: openoffice.org-updatedicts
+Breaks: hunspell-da (<= 1:3.1.0), hunspell-de-at (<= 20100727-1), hunspell-de-ch (<= 20100727-1), hunspell-de-de (<= 20100727-1), hunspell-eu-es (<= 0.4.20081029-4), hunspell-ko (<= 0.5.3-1), hunspell-uz (<= 0.6-3.1), hyphen-en-us (<< 2.8.3-1), myspell-bg (<= 3.0-12), myspell-ca (<= 0.6-10), myspell-cs (<= 20040229-5), myspell-cs-cz (<= 20040229-5), myspell-da (<= 1.6.25-1), myspell-de-at (<= 20100727-1), myspell-de-ch (<= 20100727-1), myspell-de-de (<= 20100727-1), myspell-de-de-oldspell (<= 1:2-27), myspell-en-au (<= 2.1-5), myspell-eo (<= 2.1.2000.02.25-42), myspell-es (<= 1.11-1), myspell-et (<= 1:20030606-12.1), myspell-eu-es (<= 0.4.20081029-4), myspell-fi (<= 0.7-17.3), myspell-fo (<= 0.2.44-2), myspell-fr (<= 1.4-25), myspell-fr-gut (<= 1:1.0-28), myspell-ga (<= 2.0-20), myspell-gd (<= 0.50-7), myspell-gl-es (<= 2.2a-8), myspell-gv (<= 0.50-9), myspell-he (<= 1.1-1), myspell-hu (<= 0.99.4-2), myspell-ku (<= 0.20.0-1.1), myspell-nb (<= 2.0.10-3.2), myspell-nl (<= 1:2.0-1), myspell-nn (<= 2.0.10-3.2), myspell-nr (<< 20070206-4ubuntu1), myspell-ns (<< 20070206-4ubuntu1), myspell-pl (<= 20100612-1), myspell-pt-pt (<= 20091013-2), myspell-ru (<= 0.99g5-8.1), myspell-sl (<< 1.0-3ubuntu1), myspell-ss (<< 20070206-4ubuntu1), myspell-sv-se (<= 1.3.8-6-2.2), myspell-tn (<< 20070206-4ubuntu1), myspell-ts (<< 20070207-4ubuntu1), myspell-uk (<= 1.6.0-1), myspell-ve (<< 20070206-3ubuntu1), myspell-xh (<< 20070206-4ubuntu1), myspell-zu (<< 20070207-5ubuntu1), mythes-it (<= 2.0.7.gh.deb1-3), openoffice.org-thesaurus-it (<< 2.0.7.gh.deb1-1.1ubuntu3)
+Provides: openoffice.org-updatedicts
+
+Package: gsettings-desktop-schemas
+Architecture: all
+Version: 42.0-1ubuntu1
+APT-ID: 920
+Multi-Arch: foreign
+Source: gsettings-desktop-schemas
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, session-migration
+Breaks: gnome-control-center (<< 1:3.19.92), gnome-settings-daemon (<< 3.19.92), gnome-shell (<< 40), mutter (<< 3.31.4), nautilus (<< 3.7.92)
+
+Package: python3-click
+Architecture: all
+Version: 8.0.3-1
+APT-ID: 5184
+Source: python-click
+Source-Version: 8.0.3-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-colorama, python3-importlib-metadata | python3 (>> 3.8), python3:any
+Breaks: python3-click-threading (<< 0.5.0)
+
+Package: libgnomekbd-common
+Architecture: all
+Version: 3.26.1-2
+APT-ID: 2441
+Multi-Arch: foreign
+Source: libgnomekbd
+Source-Version: 3.26.1-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: libgcrypt20
+Architecture: amd64
+Version: 1.9.4-3ubuntu3
+APT-ID: 2317
+Multi-Arch: same
+Source: libgcrypt20
+Source-Version: 1.9.4-3ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgpg-error0 (>= 1.27)
+Suggests: rng-tools
+
+Package: isc-dhcp-client
+Architecture: amd64
+Version: 4.4.1-2.3ubuntu2.2
+APT-ID: 71907
+Source: isc-dhcp
+Source-Version: 4.4.1-2.3ubuntu2.2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdns-export1110, libisc-export1105, debianutils (>= 2.8.2), iproute2
+Suggests: resolvconf, avahi-autoipd, isc-dhcp-client-ddns
+Recommends: isc-dhcp-common
+Provides: dhcp-client
+
+Package: mailcap
+Architecture: all
+Version: 3.70+nmu1ubuntu1
+APT-ID: 4618
+Multi-Arch: foreign
+Source: mailcap
+Source-Version: 3.70+nmu1ubuntu1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, media-types
+Recommends: bzip2, file, xz-utils
+Replaces: mime-support (<< 3.65)
+Breaks: mime-support (<< 3.65)
+Provides: run-mailcap
+
+Package: xserver-xorg-video-radeon
+Architecture: amd64
+Version: 1:19.1.0-2ubuntu1
+APT-ID: 74559
+Source: xserver-xorg-video-ati
+Source-Version: 1:19.1.0-2ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libdrm-radeon1 (>= 2.4.39), libgbm1 (>= 8.1~0), libudev1 (>= 183), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Suggests: firmware-amd-graphics
+Provides: xorg-driver-video
+
+Package: libnotify4
+Architecture: amd64
+Version: 0.7.9-3ubuntu5.22.04.1
+APT-ID: 72482
+Multi-Arch: same
+Source: libnotify
+Source-Version: 0.7.9-3ubuntu5.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3)
+Suggests: gnome-shell | notification-daemon
+
+Package: grep
+Architecture: amd64
+Version: 3.7-1build1
+APT-ID: 895
+Essential: yes
+Multi-Arch: foreign
+Source: grep
+Source-Version: 3.7-1build1
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.34), libpcre3
+Suggests: libpcre3 (>= 7.7)
+Conflicts: rgrep
+Provides: rgrep
+
+Package: media-types
+Architecture: all
+Version: 7.0.0
+APT-ID: 4639
+Multi-Arch: foreign
+Source: media-types
+Source-Version: 7.0.0
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: mime-support (<< 3.65)
+Breaks: mime-support (<< 3.65)
+
+Package: libnma0
+Architecture: amd64
+Version: 1.8.34-1ubuntu1
+APT-ID: 3078
+Multi-Arch: same
+Source: libnma
+Source-Version: 1.8.34-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo2 (>= 1.2.4), libgck-1-0 (>= 3.3.90), libgcr-base-3-1 (>= 3.8.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libnm0 (>= 1.8.0), libnma-common (= 1.8.34-1ubuntu1)
+
+Package: libuno-salhelpergcc3-3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72799
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgcc-s1 (>= 3.0), libstdc++6 (>= 5.2), libuno-sal3 (>= 1.8.0)
+Replaces: uno-libs3, ure (<< 5.0.0~rc2-1)
+Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3
+
+Package: libio-stringy-perl
+Architecture: all
+Version: 2.111-3
+APT-ID: 2672
+Source: io-stringy
+Source-Version: 2.111-3
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl
+
+Package: gstreamer1.0-plugins-good
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 71893
+Multi-Arch: same
+Source: gst-plugins-good1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaa1 (>= 1.4p5), libavc1394-0 (>= 0.5.3), libbz2-1.0, libc6 (>= 2.34), libcaca0 (>= 0.99.beta17-1), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.10.0), libdv4 (>= 1.0.0), libflac8 (>= 1.3.0), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.67.3), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer-plugins-good1.0-0 (= 1.20.3-0ubuntu1), libgstreamer1.0-0 (>= 1.20.0), libgudev-1.0-0 (>= 147), libiec61883-0 (>= 1.2.0), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libjpeg8 (>= 8c), libmp3lame0 (>= 3.100), libmpg123-0 (>= 1.28.0), liborc-0.4-0 (>= 1:0.4.25), libpng16-16 (>= 1.6.2-1), libpulse0 (>= 2.0), libraw1394-11 (>= 2.1.2), libshout3 (>= 2.2.2), libspeex1 (>= 1.2~beta3-1), libstdc++6 (>= 5), libtag1v5 (>= 1.9.1-2.2~), libtwolame0 (>= 0.3.10), libv4l-0 (>= 0.5.0), libvpx7 (>= 1.10.0), libwavpack1 (>= 4.60), libx11-6, libxdamage1 (>= 1:1.1), libxext6, libxfixes3, zlib1g (>= 1:1.1.4), gstreamer1.0-plugins-base (>= 1.20.0), libsoup2.4-1 (>= 2.48) | libsoup3.0-0
+Recommends: gstreamer1.0-x
+Replaces: gstreamer1.0-plugins-bad (<< 1.15.1), gstreamer1.0-plugins-ugly (<< 1.13.1), gstreamer1.0-pulseaudio (<< 1.18.0)
+Breaks: gstreamer1.0-plugins-bad (<< 1.15.1), gstreamer1.0-plugins-ugly (<< 1.13.1), gstreamer1.0-pulseaudio (<< 1.18.0)
+Provides: gstreamer1.0-visualization, gstreamer1.0-videosource, gstreamer1.0-videosink, gstreamer1.0-audiosource, gstreamer1.0-audiosink
+
+Package: mawk
+Architecture: amd64
+Version: 1.3.4.20200120-3
+APT-ID: 4632
+Multi-Arch: foreign
+Source: mawk
+Source-Version: 1.3.4.20200120-3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Provides: awk
+
+Package: libwebrtc-audio-processing1
+Architecture: amd64
+Version: 0.3.1-0ubuntu5
+APT-ID: 4060
+Multi-Arch: same
+Source: webrtc-audio-processing
+Source-Version: 0.3.1-0ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 4.0), libstdc++6 (>= 11)
+
+Package: libipc-system-simple-perl
+Architecture: all
+Version: 1.30-1
+APT-ID: 2682
+Source: libipc-system-simple-perl
+Source-Version: 1.30-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any
+
+Package: libsane-common
+Architecture: all
+Version: 1.1.1-5
+APT-ID: 3631
+Multi-Arch: foreign
+Source: sane-backends
+Source-Version: 1.1.1-5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.7.2)
+Replaces: sane-utils (<< 1.1.1-3~)
+Breaks: sane-utils (<< 1.1.1-3~)
+
+Package: libhtml-format-perl
+Architecture: all
+Version: 2.12-1.1
+APT-ID: 2591
+Source: libhtml-format-perl
+Source-Version: 2.12-1.1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libfont-afm-perl, libhtml-tree-perl
+
+Package: libatspi2.0-0
+Architecture: amd64
+Version: 2.44.0-3
+APT-ID: 1673
+Multi-Arch: same
+Source: at-spi2-core
+Source-Version: 2.44.0-3
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.62), libx11-6 (>= 2:1.2.99.901), libxi6 (>= 2:1.2.99.4)
+Recommends: at-spi2-core (= 2.44.0-3)
+
+Package: libteamdctl0
+Architecture: amd64
+Version: 1.31-1build2
+APT-ID: 3820
+Multi-Arch: same
+Source: libteam
+Source-Version: 1.31-1build2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.15), libdbus-1-3 (>= 1.9.14)
+
+Package: libdjvulibre21
+Architecture: amd64
+Version: 3.5.28-2build2
+APT-ID: 2073
+Multi-Arch: same
+Source: djvulibre
+Source-Version: 3.5.28-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libjpeg8 (>= 8c), libstdc++6 (>= 5), libdjvulibre-text (>= 3.5.28-2build2)
+Conflicts: libdjvulibre1
+Replaces: libdjvulibre1, libdjvulibre15
+
+Package: uuid-runtime
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 5936
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libc6 (>= 2.34), libsmartcols1 (>= 2.27~rc1), libsystemd0, libuuid1 (>= 2.31.1)
+Pre-Depends: libuuid1, init-system-helpers (>= 1.54~)
+
+Package: x11-session-utils
+Architecture: amd64
+Version: 7.7+4build2
+APT-ID: 5990
+Source: x11-session-utils
+Source-Version: 7.7+4build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libice6 (>= 1:1.0.0), libsm6, libx11-6, libxaw7 (>= 2:1.0.14), libxmuu1 (>= 2:1.1.3), libxt6 (>= 1:1.1.0)
+
+Package: libgupnp-av-1.0-3
+Architecture: amd64
+Version: 0.14.0-3
+APT-ID: 2554
+Source: gupnp-av
+Source-Version: 0.14.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.58), libxml2 (>= 2.7.4)
+Replaces: libgupnp-av-1.0-2 (<< 0.14)
+Breaks: libgupnp-av-1.0-2 (<< 0.14)
+
+Package: gvfs-backends
+Architecture: amd64
+Version: 1.48.2-0ubuntu1
+APT-ID: 71899
+Multi-Arch: foreign
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gvfs (= 1.48.2-0ubuntu1), gvfs-common (= 1.48.2-0ubuntu1), gvfs-daemons (= 1.48.2-0ubuntu1), gvfs-libs (= 1.48.2-0ubuntu1), psmisc, dconf-gsettings-backend | gsettings-backend, libarchive13 (>= 3.0.4), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-glib1 (>= 0.6.16), libc6 (>= 2.34), libcdio-cdda2 (>= 10.2+2.0.0), libcdio-paranoia2 (>= 10.2+2.0.0), libcdio19 (>= 2.1.0), libgcrypt20 (>= 1.9.0), libgdata22 (>= 0.18.0), libglib2.0-0 (>= 2.65.1), libgoa-1.0-0b (>= 3.17.1), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgudev-1.0-0 (>= 147), libimobiledevice6 (>= 1.3.0), libmtp9 (>= 1.1.16), libnfs13 (>= 1.9.8), libplist3 (>= 2.2.0), libpolkit-gobject-1-0 (>= 0.101), libsmbclient (>= 2:4.12.0+dfsg), libsoup2.4-1 (>= 2.58.2), libusb-1.0-0 (>= 2:1.0.21), libxml2 (>= 2.7.4)
+Suggests: bluez-obexd, samba-common
+Recommends: gnome-keyring
+
+Package: libgnome-desktop-3-19
+Architecture: amd64
+Version: 42.4-0ubuntu1
+APT-ID: 72386
+Multi-Arch: same
+Source: gnome-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bubblewrap, gnome-desktop3-data (>= 42.4-0ubuntu1), gnome-desktop3-data (<< 43~), gsettings-desktop-schemas (>= 3.27.0), iso-codes, libc6 (>= 2.33), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.36.5), libglib2.0-0 (>= 2.70.0), libgtk-3-0 (>= 3.9.10), libseccomp2 (>= 1.0.1), libsystemd0, libudev1 (>= 196), libxkbregistry0 (>= 1.0.0)
+Recommends: locales | locales-all
+
+Package: gstreamer1.0-plugins-base
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 930
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcdparanoia0 (>= 3.10.2+debian), libglib2.0-0 (>= 2.67.3), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libogg0 (>= 1.0rc3), libopus0 (>= 1.1), liborc-0.4-0 (>= 1:0.4.25), libtheora0 (>= 1.1), libvisual-0.4-0 (>= 0.4.0), libvorbis0a (>= 1.3.1), libvorbisenc2 (>= 1.3.1)
+Suggests: gvfs
+Replaces: gstreamer1.0-plugins-bad (<< 1.15.1)
+Breaks: gstreamer1.0-plugins-bad (<< 1.15.1)
+Provides: gstreamer1.0-videosource, gstreamer1.0-audiosource
+
+Package: liborcus-0.17-0
+Architecture: amd64
+Version: 0.17.2-2
+APT-ID: 3149
+Multi-Arch: same
+Source: liborcus
+Source-Version: 0.17.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libboost-filesystem1.74.0 (>= 1.74.0), libboost-iostreams1.74.0 (>= 1.74.0), libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), liborcus-parser-0.17-0, libstdc++6 (>= 11)
+
+Package: libphonenumber8
+Architecture: amd64
+Version: 8.12.44-1
+APT-ID: 3248
+Multi-Arch: same
+Source: libphonenumber
+Source-Version: 8.12.44-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libabsl20210324 (>= 0~20210324.2-1), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), libprotobuf23 (>= 3.12.4), libstdc++6 (>= 11)
+
+Package: liblouisutdml-bin
+Architecture: amd64
+Version: 2.10.0-4
+APT-ID: 2838
+Multi-Arch: foreign
+Source: liblouisutdml
+Source-Version: 2.10.0-4
+Priority: extra
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), liblouis20 (>= 3.20.0), liblouisutdml9 (>= 2.10.0)
+Suggests: antiword, ooo2dbk, poppler-utils, rtf2xml
+
+Package: gir1.2-mutter-10
+Architecture: amd64
+Version: 42.2-0ubuntu1
+APT-ID: 71845
+Multi-Arch: same
+Source: mutter
+Source-Version: 42.2-0ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libmutter-10-0 (= 42.2-0ubuntu1), gir1.2-atk-1.0, gir1.2-freedesktop (>= 0.9.12), gir1.2-gdesktopenums-3.0 (>= 40~alpha), gir1.2-glib-2.0 (>= 0.9.12), gir1.2-graphene-1.0 (>= 1.10.2), gir1.2-gtk-3.0 (>= 3.19.8), gir1.2-json-1.0 (>= 0.13.2-1~), gir1.2-pango-1.0 (>= 1.46.0)
+
+Package: libreoffice-style-breeze
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72692
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-style-colibre
+Suggests: breeze-icon-theme
+Recommends: libreoffice-common
+Enhances: libreoffice-core
+Provides: libreoffice-style
+
+Package: gnome-mahjongg
+Architecture: amd64
+Version: 1:3.38.3-2
+APT-ID: 795
+Source: gnome-mahjongg
+Source-Version: 1:3.38.3-2
+Priority: optional
+Section: games
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.39.90), libgtk-3-0 (>= 3.13.2), librsvg2-2 (>= 2.32.0), dconf-gsettings-backend | gsettings-backend
+Recommends: yelp
+Replaces: mahjongg (<< 1:3.7.2)
+Breaks: mahjongg (<< 1:3.7.2)
+
+Package: libcap-ng0
+Architecture: amd64
+Version: 0.7.9-2.2build3
+APT-ID: 1850
+Multi-Arch: same
+Source: libcap-ng
+Source-Version: 0.7.9-2.2build3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: fprintd
+Architecture: amd64
+Version: 1.94.2-1ubuntu0.22.04.1
+APT-ID: 71808
+Multi-Arch: foreign
+Source: fprintd
+Source-Version: 1.94.2-1ubuntu0.22.04.1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, policykit-1, libc6 (>= 2.34), libfprint-2-2 (>= 1:1.94.1), libglib2.0-0 (>= 2.56), libpolkit-gobject-1-0 (>= 0.99)
+
+Package: xserver-xorg-video-vmware
+Architecture: amd64
+Version: 1:13.3.0-3build1
+APT-ID: 6062
+Source: xserver-xorg-video-vmware
+Source-Version: 1:13.3.0-3build1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm2 (>= 2.4.60), libudev1 (>= 183), libx11-6 (>= 2:1.4.99.1), libxatracker2 (>= 11.1.0~), libxext6, xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Provides: xorg-driver-video
+
+Package: libgrilo-0.3-0
+Architecture: amd64
+Version: 0.3.14-1build1
+APT-ID: 2495
+Multi-Arch: same
+Source: grilo
+Source-Version: 0.3.14-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.61.2), libsoup2.4-1 (>= 2.41.90), libtotem-plparser18 (>= 3.26.0)
+Suggests: grilo-plugins-0.3
+
+Package: gvfs
+Architecture: amd64
+Version: 1.48.2-0ubuntu1
+APT-ID: 71898
+Multi-Arch: same
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gvfs-common (= 1.48.2-0ubuntu1), gvfs-daemons (<< 1.48.2-0ubuntu1.1~), gvfs-daemons (>= 1.48.2-0ubuntu1), gvfs-libs (= 1.48.2-0ubuntu1), libc6 (>= 2.33), libglib2.0-0 (>= 2.65.1)
+Suggests: gvfs-backends
+
+Package: libklibc
+Architecture: amd64
+Version: 2.0.10-4
+APT-ID: 2771
+Multi-Arch: same
+Source: klibc
+Source-Version: 2.0.10-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: vim-tiny
+Architecture: amd64
+Version: 2:8.2.3995-1ubuntu2.1
+APT-ID: 74541
+Source: vim
+Source-Version: 2:8.2.3995-1ubuntu2.1
+Priority: required
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: vim-common (= 2:8.2.3995-1ubuntu2.1), libacl1 (>= 2.2.23), libc6 (>= 2.34), libselinux1 (>= 3.1~), libtinfo6 (>= 6)
+Suggests: indent
+Provides: editor
+
+Package: usb-modeswitch
+Architecture: amd64
+Version: 2.6.1-3ubuntu2
+APT-ID: 5926
+Source: usb-modeswitch
+Source-Version: 2.6.1-3ubuntu2
+Priority: extra
+Section: comm
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tcl, usb-modeswitch-data, libc6 (>= 2.34), libusb-1.0-0 (>= 2:1.0.9)
+Suggests: comgt, wvdial
+
+Package: libmbim-proxy
+Architecture: amd64
+Version: 1.26.2-1build1
+APT-ID: 2895
+Multi-Arch: foreign
+Source: libmbim
+Source-Version: 1.26.2-1build1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libmbim-glib4 (= 1.26.2-1build1)
+
+Package: gvfs-daemons
+Architecture: amd64
+Version: 1.48.2-0ubuntu1
+APT-ID: 71901
+Multi-Arch: foreign
+Source: gvfs
+Source-Version: 1.48.2-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gvfs-common (= 1.48.2-0ubuntu1), gvfs-libs (= 1.48.2-0ubuntu1), lsof, udisks2, libc6 (>= 2.34), libglib2.0-0 (>= 2.65.1), libgudev-1.0-0 (>= 147), libsecret-1-0 (>= 0.7), libsystemd0, libudisks2-0 (>= 2.0.91)
+Suggests: gvfs-backends
+Recommends: dbus, gvfs
+
+Package: gnome-desktop3-data
+Architecture: all
+Version: 42.4-0ubuntu1
+APT-ID: 71863
+Multi-Arch: foreign
+Source: gnome-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libgnome-desktop-3-17 (<< 3.36), libgnome-desktop-3-18 (<< 3.36)
+
+Package: xcvt
+Architecture: amd64
+Version: 0.1.1-3
+APT-ID: 6016
+Source: libxcvt
+Source-Version: 0.1.1-3
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libxcvt0 (>= 0.1.0)
+Replaces: xserver-xorg-core (<< 2:21.0.99.1~)
+Breaks: xserver-xorg-core (<< 2:21.0.99.1~)
+
+Package: update-manager-core
+Architecture: all
+Version: 1:22.04.9
+APT-ID: 5916
+Source: update-manager
+Source-Version: 1:22.04.9
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-update-manager (= 1:22.04.9), python3-distro-info, distro-info-data, lsb-release, ubuntu-release-upgrader-core (>= 1:18.04.9), ubuntu-advantage-tools
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-manager (<< 1:0.146.2)
+Breaks: computer-janitor (<= 1.11-0ubuntu1), update-manager (<< 1:0.146.2)
+
+Package: gstreamer1.0-pipewire
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 929
+Multi-Arch: same
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: pipewire (= 0.3.48-1ubuntu1), libc6 (>= 2.28), libglib2.0-0 (>= 2.39.4), libgstreamer-plugins-base1.0-0 (>= 1.6.0), libgstreamer1.0-0 (>= 1.6.0), libpipewire-0.3-0 (= 0.3.48-1ubuntu1)
+
+Package: libsemanage2
+Architecture: amd64
+Version: 3.3-1build2
+APT-ID: 3657
+Multi-Arch: same
+Source: libsemanage
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsemanage-common (>= 3.3-1build2), libaudit1 (>= 1:2.2.1), libbz2-1.0, libc6 (>= 2.33), libselinux1 (>= 3.3), libsepol2 (>= 3.3)
+Breaks: policycoreutils (<< 3.0)
+
+Package: bind9-dnsutils
+Architecture: amd64
+Version: 1:9.18.1-1ubuntu1.2
+APT-ID: 71716
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.2
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bind9-host | host, bind9-libs (= 1:9.18.1-1ubuntu1.2), libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libidn2-0 (>= 2.0.0), libkrb5-3 (>= 1.6.dfsg.2)
+Conflicts: bind-dnsutils (<< 1:9.13.6~), dnsutils (<< 1:9.13.6~)
+Breaks: bind-dnsutils (<< 1:9.13.6~), dnsutils (<< 1:9.13.6~)
+Provides: dnsutils
+
+Package: libcogl-common
+Architecture: all
+Version: 1.22.8-3build1
+APT-ID: 1911
+Multi-Arch: foreign
+Source: cogl
+Source-Version: 1.22.8-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libice6
+Architecture: amd64
+Version: 2:1.0.10-1build2
+APT-ID: 2627
+Multi-Arch: same
+Source: libice
+Source-Version: 2:1.0.10-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.2.0), libc6 (>= 2.33), x11-common
+
+Package: fonts-tlwg-laksaman
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 521
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-laksaman-ttf | fonts-tlwg-laksaman-otf
+
+Package: gnome-disk-utility
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 789
+Source: gnome-disk-utility
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: udisks2 (>= 2.7.6), dconf-gsettings-backend | gsettings-backend, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libcanberra-gtk3-0 (>= 0.25), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.43.2), libgtk-3-0 (>= 3.21.5), libhandy-1-0 (>= 1.5.0), liblzma5 (>= 5.1.1alpha+20120614), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0), libpwquality1 (>= 1.1.0), libsecret-1-0 (>= 0.7), libsystemd0 (>= 209), libudisks2-0 (>= 2.7.6)
+Breaks: gnome-settings-daemon (<< 3.24)
+
+Package: gir1.2-handy-1
+Architecture: amd64
+Version: 1.6.1-1
+APT-ID: 715
+Multi-Arch: same
+Source: libhandy-1
+Source-Version: 1.6.1-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, gir1.2-gtk-3.0, libhandy-1-0 (>= 1.5.0)
+
+Package: libpoppler118
+Architecture: amd64
+Version: 22.02.0-2ubuntu0.1
+APT-ID: 72521
+Multi-Arch: same
+Source: poppler
+Source-Version: 22.02.0-2ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libjpeg8 (>= 8c), liblcms2-2 (>= 2.7), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.16), libopenjp2-7 (>= 2.0.0), libpng16-16 (>= 1.6.2-1), libstdc++6 (>= 11), libtiff5 (>= 4.0.3), zlib1g (>= 1:1.1.4)
+Recommends: poppler-data
+
+Package: libfreerdp2-2
+Architecture: amd64
+Version: 2.6.1+dfsg1-3ubuntu2.2
+APT-ID: 72352
+Multi-Arch: same
+Source: freerdp2
+Source-Version: 2.6.1+dfsg1-3ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libcairo2 (>= 1.2.4), libjpeg8 (>= 8c), libssl3 (>= 3.0.0~~alpha1), libwinpr2-2 (= 2.6.1+dfsg1-3ubuntu2.2), libx11-6, libxkbfile1 (>= 1:1.1.0)
+Suggests: freerdp2-x11
+Replaces: libfreerdp2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+Breaks: libfreerdp2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+
+Package: network-manager
+Architecture: amd64
+Version: 1.36.6-0ubuntu2
+APT-ID: 74210
+Source: network-manager
+Source-Version: 1.36.6-0ubuntu2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libbluetooth3 (>= 4.91), libc6 (>= 2.34), libcurl3-gnutls (>= 7.24.0), libglib2.0-0 (>= 2.68.0), libgnutls30 (>= 3.7.2), libjansson4 (>= 2.0.1), libmm-glib0 (>= 1.4.0), libndp0 (>= 1.2), libnewt0.52 (>= 0.52.21), libnm0 (= 1.36.6-0ubuntu2), libpsl5 (>= 0.13.0), libreadline8 (>= 6.0), libselinux1 (>= 3.1~), libsystemd0 (>= 209), libteamdctl0 (>= 1.9), libudev1 (>= 183), dbus, isc-dhcp-client, udev, adduser, policykit-1
+Suggests: avahi-autoipd, libteam-utils, iptables
+Recommends: ppp, dnsmasq-base, modemmanager, network-manager-pptp, wireless-regdb, wpasupplicant, libpam-systemd
+Breaks: ppp (>= 2.4.9-2~), ppp (<< 2.4.9-1+~)
+
+Package: mesa-vulkan-drivers
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 74196
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libvulkan1, libc6 (>= 2.34), libdrm-amdgpu1 (>= 2.4.109), libdrm2 (>= 2.4.99), libelf1 (>= 0.142), libexpat1 (>= 2.0.1), libgcc-s1 (>= 3.4), libllvm13, libstdc++6 (>= 11), libwayland-client0 (>= 1.20.0), libx11-xcb1 (>= 2:1.7.5), libxcb-dri3-0 (>= 1.13), libxcb-present0, libxcb-randr0 (>= 1.13), libxcb-shm0, libxcb-sync1, libxcb1 (>= 1.9.2), libxshmfence1, libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Provides: vulkan-icd
+
+Package: fonts-gujr-extra
+Architecture: all
+Version: 1.0.1-1
+APT-ID: 444
+Multi-Arch: foreign
+Source: fonts-gujr-extra
+Source-Version: 1.0.1-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-gujarati-fonts
+Breaks: ttf-gujarati-fonts (<< 2:1.0)
+
+Package: libcue2
+Architecture: amd64
+Version: 2.2.1-3build3
+APT-ID: 1962
+Multi-Arch: same
+Source: libcue
+Source-Version: 2.2.1-3build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libvorbisenc2
+Architecture: amd64
+Version: 1.3.7-1build2
+APT-ID: 4022
+Multi-Arch: same
+Source: libvorbis
+Source-Version: 1.3.7-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libvorbis0a (= 1.3.7-1build2)
+
+Package: fuse3
+Architecture: amd64
+Version: 3.10.5-1build1
+APT-ID: 567
+Source: fuse3
+Source-Version: 3.10.5-1build1
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfuse3-3 (= 3.10.5-1build1), adduser, mount (>= 2.19.1), sed (>= 4), lsb-base (>= 3.2-14)
+Replaces: fuse
+Breaks: fuse
+Provides: fuse (= 3.10.5-1build1)
+
+Package: libasyncns0
+Architecture: amd64
+Version: 0.8-6build2
+APT-ID: 1648
+Multi-Arch: same
+Source: libasyncns
+Source-Version: 0.8-6build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libnsl2
+Architecture: amd64
+Version: 1.3.0-2build2
+APT-ID: 3088
+Multi-Arch: same
+Source: libnsl
+Source-Version: 1.3.0-2build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libtirpc3 (>= 1.0.2)
+
+Package: base-files
+Architecture: amd64
+Version: 12ubuntu4.2
+APT-ID: 71713
+Essential: yes
+Multi-Arch: foreign
+Source: base-files
+Source-Version: 12ubuntu4.2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.4.10-10ubuntu3)
+Pre-Depends: awk
+Replaces: base, dpkg (<= 1.15.0), miscutils
+Breaks: debian-security-support (<< 2019.04.25), initscripts (<< 2.88dsf-13.3), sendfile (<< 2.1b.20080616-5.2~), ubuntu-server (<< 1.453)
+Provides: base
+
+Package: busybox-initramfs
+Architecture: amd64
+Version: 1:1.30.1-7ubuntu3
+APT-ID: 151
+Source: busybox
+Source-Version: 1:1.30.1-7ubuntu3
+Priority: optional
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libnfnetlink0
+Architecture: amd64
+Version: 1.0.1-3build3
+APT-ID: 3039
+Multi-Arch: same
+Source: libnfnetlink
+Source-Version: 1.0.1-3build3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libnss3
+Architecture: amd64
+Version: 2:3.68.2-0ubuntu1.1
+APT-ID: 72487
+Multi-Arch: same
+Source: nss
+Source-Version: 2:3.68.2-0ubuntu1.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libnspr4 (>= 2:4.24), libsqlite3-0 (>= 3.5.9)
+Conflicts: libnss3-1d (<< 2:3.13.4-2)
+
+Package: rsyslog
+Architecture: amd64
+Version: 8.2112.0-2ubuntu2.2
+APT-ID: 74383
+Source: rsyslog
+Source-Version: 8.2112.0-2ubuntu2.2
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libestr0 (>= 0.1.4), libfastjson4 (>= 0.99.8), libsystemd0 (>= 246), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4), adduser, ucf
+Suggests: rsyslog-mysql | rsyslog-pgsql, rsyslog-mongodb, rsyslog-doc, rsyslog-openssl | rsyslog-gnutls, rsyslog-gssapi, rsyslog-relp, apparmor (>= 2.8.96~2541-0ubuntu4~)
+Recommends: logrotate
+Conflicts: linux-kernel-log-daemon, system-log-daemon
+Provides: system-log-daemon, linux-kernel-log-daemon
+
+Package: libk5crypto3
+Architecture: amd64
+Version: 1.19.2-2
+APT-ID: 2765
+Multi-Arch: same
+Source: krb5
+Source-Version: 1.19.2-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libkrb5support0 (>= 1.16)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.18~), libkrb5-3 (<= 1.18~)
+
+Package: libpangoft2-1.0-0
+Architecture: amd64
+Version: 1.50.6+ds-2
+APT-ID: 3194
+Multi-Arch: same
+Source: pango1.0
+Source-Version: 1.50.6+ds-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libfontconfig1 (>= 2.13.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.67.3), libharfbuzz0b (>= 2.6.0), libpango-1.0-0 (= 1.50.6+ds-2)
+
+Package: libtheora0
+Architecture: amd64
+Version: 1.1.1+dfsg.1-15ubuntu4
+APT-ID: 3846
+Multi-Arch: same
+Source: libtheora
+Source-Version: 1.1.1+dfsg.1-15ubuntu4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo2 (>= 1.2.4), libogg0 (>= 1.1.0)
+
+Package: libblockdev-utils2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1752
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.42.2), libkmod2 (>= 5~), libudev1 (>= 216)
+
+Package: plymouth
+Architecture: amd64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4924
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: init-system-helpers (>= 1.18), lsb-base (>= 3.0-6), systemd (>= 232-8~), udev (>= 232-8~), libc6 (>= 2.34), libdrm2 (>= 2.4.47), libplymouth5 (>= 0.9.5+git20211018-1ubuntu3)
+Suggests: desktop-base, plymouth-themes
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Conflicts: console-common
+Replaces: plymouth-drm (<< 0.9.0-6~), plymouth-themes (<< 0.9.0-8~)
+Breaks: plymouth-drm (<< 0.9.0-6~), plymouth-themes (<< 0.9.0-8~)
+
+Package: grub-efi-amd64-signed
+Architecture: amd64
+Version: 1.182~22.04.1+2.06-2ubuntu10
+APT-ID: 71890
+Source: grub2-signed
+Source-Version: 1.182~22.04.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: grub-efi-amd64-bin (= 2.06-2ubuntu10), grub-efi-amd64 | grub-pc, grub2-common (>= 2.02+dfsg1-5)
+Recommends: secureboot-db
+
+Package: libpolkit-gobject-1-0
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 3290
+Multi-Arch: same
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.37.3), libsystemd0 (>= 213)
+
+Package: ncurses-base
+Architecture: all
+Version: 6.3-2
+APT-ID: 4731
+Essential: yes
+Multi-Arch: foreign
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Breaks: bash-static (<< 4.4.18-1.1), libmono-corlib4.5-cil (<< 4.6.2.7+dfsg-2), libslang2 (<< 2.3.1a-3), libtinfo5 (<< 6.1), libunibilium0 (<< 2), libunibilium4 (<< 2.0.0-3), neovim (<< 0.6.0), zsh-static (<< 5.4.2-4)
+Provides: ncurses-runtime
+
+Package: gzip
+Architecture: amd64
+Version: 1.10-4ubuntu4
+APT-ID: 952
+Essential: yes
+Source: gzip
+Source-Version: 1.10-4ubuntu4
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.34)
+Suggests: less
+
+Package: fonts-lohit-deva
+Architecture: all
+Version: 2.95.4-4
+APT-ID: 462
+Multi-Arch: foreign
+Source: fonts-lohit-deva
+Source-Version: 2.95.4-4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-devanagari-fonts (<= 1:0.5.12)
+Breaks: ttf-devanagari-fonts (<= 1:0.5.12)
+
+Package: fonts-gargi
+Architecture: all
+Version: 2.0-5
+APT-ID: 441
+Multi-Arch: foreign
+Source: fonts-gargi
+Source-Version: 2.0-5
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Enhances: fonts-deva-extra
+
+Package: libtdb1
+Architecture: amd64
+Version: 1.4.5-2build1
+APT-ID: 3817
+Multi-Arch: same
+Source: tdb
+Source-Version: 1.4.5-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: xfonts-encodings
+Architecture: all
+Version: 1:1.0.5-0ubuntu2
+APT-ID: 6026
+Multi-Arch: foreign
+Source: xfonts-encodings
+Source-Version: 1:1.0.5-0ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: x11-common
+Replaces: xfonts-base (<< 1:1.0.0)
+
+Package: python3-xkit
+Architecture: all
+Version: 0.5.0ubuntu5
+APT-ID: 5540
+Source: x-kit
+Source-Version: 0.5.0ubuntu5
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~)
+
+Package: libxcb-keysyms1
+Architecture: amd64
+Version: 0.4.0-1build3
+APT-ID: 4146
+Multi-Arch: same
+Source: xcb-util-keysyms
+Source-Version: 0.4.0-1build3
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.2.5), libxcb1
+
+Package: friendly-recovery
+Architecture: all
+Version: 0.2.42
+APT-ID: 562
+Source: friendly-recovery
+Source-Version: 0.2.42
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: systemd-sysv, whiptail
+Recommends: gettext-base, update-manager-core
+Breaks: grub2 (<< 1.99-12ubuntu4), initramfs-tools (<< 0.99ubuntu4), upstart (<< 1.3-0ubuntu9)
+
+Package: python3-fasteners
+Architecture: all
+Version: 0.14.1-2
+APT-ID: 5234
+Source: python-fasteners
+Source-Version: 0.14.1-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-monotonic, python3-six, python3:any
+
+Package: python3-all
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74298
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), python3-distutils (>= 3.10.6-1~), python3.10
+
+Package: python3-all
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5134
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), python3-distutils (>= 3.9.10-2~), python3.10
+
+Package: python3-apt
+Architecture: amd64
+Version: 2.3.0ubuntu2.1
+APT-ID: 74303
+Multi-Arch: allowed
+Source: python-apt
+Source-Version: 2.3.0ubuntu2.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libapt-pkg6.0 (>= 1.9.11~), libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), python-apt-common, distro-info-data
+Suggests: python3-apt-dbg, python-apt-doc, apt
+Recommends: lsb-release, iso-codes
+Replaces: python-apt (<< 0.7.98+nmu1)
+Breaks: apt-xapian-index (<< 0.51~), kthresher (<= 1.4.0-1), python-apt (<< 0.7.98+nmu1)
+Provides: python3.10-apt
+
+Package: dmsetup
+Architecture: amd64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 333
+Multi-Arch: foreign
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.138)
+
+Package: libatopology2
+Architecture: amd64
+Version: 1.2.6.1-1ubuntu1
+APT-ID: 1672
+Multi-Arch: same
+Source: alsa-lib
+Source-Version: 1.2.6.1-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.2.3), libc6 (>= 2.14)
+Replaces: libasound2 (<< 1.2.1.1)
+Breaks: libasound2 (<< 1.2.1.1)
+
+Package: software-properties-gtk
+Architecture: all
+Version: 0.99.22.3
+APT-ID: 74408
+Source: software-properties
+Source-Version: 0.99.22.3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-goa-1.0 (>= 3.27.92-1ubuntu1), gir1.2-gtk-3.0, gir1.2-handy-1, gir1.2-snapd-1 (>= 1.42), libgtk3-perl, python3, python3-dateutil, python3-distro-info, python3-gi, python3-software-properties (= 0.99.22.3), software-properties-common, ubuntu-advantage-desktop-daemon, ubuntu-drivers-common (>= 1:0.9.6), dconf-gsettings-backend | gsettings-backend, python3:any
+Recommends: gnome-keyring, gnome-session-bin | xfce4-session | mate-session-manager
+
+Package: gnome-online-accounts
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 798
+Source: gnome-online-accounts
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgoa-1.0-0b (= 3.44.0-1ubuntu1), libgoa-backend-1.0-1 (= 3.44.0-1ubuntu1), python3, python3-macaroonbakery, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libcom-err2 (>= 1.43.9), libgck-1-0 (>= 2.91.1), libgcr-base-3-1 (>= 3.8.0), libgcr-ui-3-1 (>= 3.8.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.59.0), libgtk-3-0 (>= 3.19.12), libharfbuzz0b (>= 0.6.0), libk5crypto3 (>= 1.6.dfsg.2), libkrb5-3 (>= 1.9+dfsg~beta1), libp11-kit0 (>= 0.23.18.1), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), librest-0.7-0 (>= 0.7), libsoup2.4-1 (>= 2.42), libwebkit2gtk-4.0-37 (>= 2.26), libxml2 (>= 2.6.27)
+Recommends: gnome-control-center (>= 3.6.1)
+Breaks: evolution-data-server (<< 3.22.3)
+
+Package: libunity-protocol-private0
+Architecture: amd64
+Version: 7.1.4+19.04.20190319-6build1
+APT-ID: 3936
+Multi-Arch: same
+Source: libunity
+Source-Version: 7.1.4+19.04.20190319-6build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libdee-1.0-4 (>= 1.2.5~), libglib2.0-0 (>= 2.43.92)
+Breaks: libunity9 (<< 7.1.1)
+
+Package: fonts-liberation
+Architecture: all
+Version: 1:1.07.4-11
+APT-ID: 457
+Multi-Arch: foreign
+Source: fonts-liberation
+Source-Version: 1:1.07.4-11
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libdazzle-common
+Architecture: all
+Version: 3.44.0-1
+APT-ID: 1998
+Multi-Arch: foreign
+Source: libdazzle
+Source-Version: 3.44.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-all-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74299
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), libpython3-all-dbg (= 3.10.6-1~22.04), python3-all (= 3.10.6-1~22.04), python3-dbg (= 3.10.6-1~22.04), python3.10-dbg
+
+Package: python3-all-dbg
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5135
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), libpython3-all-dbg (= 3.10.4-0ubuntu2), python3-all (= 3.10.4-0ubuntu2), python3-dbg (= 3.10.4-0ubuntu2), python3.10-dbg
+
+Package: python3-all-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74300
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), libpython3-all-dev (= 3.10.6-1~22.04), python3-all (= 3.10.6-1~22.04), python3-dev (= 3.10.6-1~22.04), python3.10-dev
+
+Package: python3-all-dev
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5136
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), libpython3-all-dev (= 3.10.4-0ubuntu2), python3-all (= 3.10.4-0ubuntu2), python3-dev (= 3.10.4-0ubuntu2), python3.10-dev
+
+Package: fonts-tlwg-umpush-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 540
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-umpush (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-umpush (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-umpush (<< 1:0.6.2-2)
+
+Package: libgnome-games-support-1-3
+Architecture: amd64
+Version: 1.8.2-1build1
+APT-ID: 2432
+Multi-Arch: same
+Source: libgnome-games-support
+Source-Version: 1.8.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgnome-games-support-common, libc6 (>= 2.4), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.43.92), libgtk-3-0 (>= 3.19.12)
+
+Package: zenity-common
+Architecture: all
+Version: 3.42.1-0ubuntu1
+APT-ID: 74564
+Multi-Arch: foreign
+Source: zenity
+Source-Version: 3.42.1-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libsndfile1
+Architecture: amd64
+Version: 1.0.31-2build1
+APT-ID: 3695
+Multi-Arch: same
+Source: libsndfile
+Source-Version: 1.0.31-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libflac8 (>= 1.3.0), libogg0 (>= 1.3.0), libopus0 (>= 1.1), libvorbis0a (>= 1.2.3), libvorbisenc2 (>= 1.2.3)
+
+Package: gedit
+Architecture: amd64
+Version: 41.0-3
+APT-ID: 615
+Source: gedit
+Source-Version: 41.0-3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gedit-common (<< 42), gedit-common (>= 41), gir1.2-glib-2.0, gir1.2-gtk-3.0 (>= 3.22), gir1.2-gtksource-4, gir1.2-pango-1.0, gir1.2-peas-1.0, gsettings-desktop-schemas, iso-codes, python3-gi (>= 3.0), python3-gi-cairo (>= 3.0), python3:any, python3.10, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgirepository-1.0-1 (>= 0.9.3), libglib2.0-0 (>= 2.64), libgspell-1-2 (>= 1.8.2), libgtk-3-0 (>= 3.22), libgtksourceview-4-0 (>= 3.18.0), libpango-1.0-0 (>= 1.42.0), libpeas-1.0-0 (>= 1.14.1), libxml2 (>= 2.7.4)
+Suggests: gedit-plugins
+Recommends: yelp, zenity
+
+Package: libdotconf0
+Architecture: amd64
+Version: 1.3-0.3fakesync1build2
+APT-ID: 2087
+Multi-Arch: same
+Source: dotconf
+Source-Version: 1.3-0.3fakesync1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libcolamd2
+Architecture: amd64
+Version: 1:5.10.1+dfsg-4build1
+APT-ID: 1919
+Multi-Arch: same
+Source: suitesparse
+Source-Version: 1:5.10.1+dfsg-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libsuitesparseconfig5 (>= 1:5.0.0)
+
+Package: libhttp-date-perl
+Architecture: all
+Version: 6.05-1
+APT-ID: 2599
+Source: libhttp-date-perl
+Source-Version: 6.05-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, libtimedate-perl, libtime-local-perl (>= 1.28)
+
+Package: xdg-user-dirs-gtk
+Architecture: amd64
+Version: 0.10-3build2
+APT-ID: 6023
+Source: xdg-user-dirs-gtk
+Source-Version: 0.10-3build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libgtk-3-0 (>= 3.0.0), xdg-user-dirs
+
+Package: login
+Architecture: amd64
+Version: 1:4.8.1-2ubuntu2
+APT-ID: 4593
+Essential: yes
+Multi-Arch: foreign
+Source: shadow
+Source-Version: 1:4.8.1-2ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libpam-runtime, libpam-modules
+Conflicts: python-4suite (<< 0.99cvs20060405-1)
+Breaks: util-linux (<< 2.32-0.2~)
+
+Package: libpkcs11-helper1
+Architecture: amd64
+Version: 1.28-1ubuntu0.22.04.1
+APT-ID: 72512
+Multi-Arch: same
+Source: pkcs11-helper
+Source-Version: 1.28-1ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+
+Package: xserver-xorg-input-libinput
+Architecture: amd64
+Version: 1.2.1-1
+APT-ID: 6048
+Source: xserver-xorg-input-libinput
+Source-Version: 1.2.1-1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libinput10 (>= 1.19.1), xorg-input-abi-24, xserver-xorg-core (>= 2:1.18.99.901)
+Provides: xorg-driver-input
+
+Package: fonts-samyak-taml
+Architecture: all
+Version: 1.2.2-5build1
+APT-ID: 491
+Multi-Arch: foreign
+Source: fonts-samyak
+Source-Version: 1.2.2-5build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-tamil-fonts (<< 2:1.0)
+Breaks: ttf-tamil-fonts (<< 2:1.0)
+
+Package: libopengl0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 3134
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglvnd0 (= 1.4.0-1)
+
+Package: enchant-2
+Architecture: amd64
+Version: 2.3.2-1ubuntu2
+APT-ID: 371
+Source: enchant-2
+Source-Version: 2.3.2-1ubuntu2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libenchant-2-2 (>= 2.2.3), libglib2.0-0 (>= 2.12.0)
+
+Package: python3-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74311
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: extra
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), libpython3-dbg (= 3.10.6-1~22.04), python3.10-dbg (>= 3.10.6-1~)
+
+Package: python3-dbg
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5202
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: extra
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), libpython3-dbg (= 3.10.4-0ubuntu2), python3.10-dbg (>= 3.10.4-1~)
+
+Package: libnfs13
+Architecture: amd64
+Version: 4.0.0-1build2
+APT-ID: 3042
+Multi-Arch: same
+Source: libnfs
+Source-Version: 4.0.0-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Replaces: libnfs1 (>= 1.9.3-1), libnfs4
+Breaks: libnfs1 (>= 1.9.3-1), libnfs4
+
+Package: python3-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74313
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (= 3.10.6-1~22.04), libpython3-dev (= 3.10.6-1~22.04), python3.10-dev (>= 3.10.6-1~), python3-distutils (>= 3.10.6-1~), libjs-sphinxdoc (>= 4.3)
+Replaces: python3 (<< 3.9.2-1~), python3.1 (<< 3.1.2+20100706-3)
+Breaks: python3 (<< 3.9.2-1~)
+
+Package: python3-dev
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 5214
+Multi-Arch: allowed
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3 (= 3.10.4-0ubuntu2), libpython3-dev (= 3.10.4-0ubuntu2), python3.10-dev (>= 3.10.4-1~), python3-distutils (>= 3.9.10-2~), libjs-sphinxdoc (>= 4.3)
+Replaces: python3 (<< 3.9.2-1~), python3.1 (<< 3.1.2+20100706-3)
+Breaks: python3 (<< 3.9.2-1~)
+
+Package: python3-doc
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 74317
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: doc
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10-doc (>= 3.10.6-1~)
+Suggests: python3 (>= 3.10.6-1~22.04), python3-examples
+
+Package: python3-doc
+Architecture: all
+Version: 3.10.4-0ubuntu2
+APT-ID: 5227
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: doc
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: python3.10-doc (>= 3.10.4-1~)
+Suggests: python3 (>= 3.10.4-0ubuntu2), python3-examples
+
+Package: zenity
+Architecture: amd64
+Version: 3.42.1-0ubuntu1
+APT-ID: 74563
+Multi-Arch: foreign
+Source: zenity
+Source-Version: 3.42.1-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.24.0), libgtk-3-0 (>= 3.19.12), libnotify4 (>= 0.7.0), libpango-1.0-0 (>= 1.14.0), libwebkit2gtk-4.0-37 (>= 2.15.1), libx11-6, zenity-common (>= 3.42.1-0ubuntu1)
+
+Package: tcl8.6
+Architecture: amd64
+Version: 8.6.12+dfsg-1build1
+APT-ID: 5746
+Multi-Arch: foreign
+Source: tcl8.6
+Source-Version: 8.6.12+dfsg-1build1
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtcl8.6 (>= 8.6.0)
+Suggests: tcl-tclreadline
+Conflicts: tcl74 (<= 7.4p3-2)
+
+Package: gir1.2-polkit-1.0
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 738
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12), libpolkit-agent-1-0 (= 0.105-33), libpolkit-gobject-1-0 (= 0.105-33)
+Provides: gir1.2-polkitagent-1.0 (= 0.105-33)
+
+Package: bolt
+Architecture: amd64
+Version: 0.9.2-1
+APT-ID: 140
+Source: bolt
+Source-Version: 0.9.2-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libpolkit-gobject-1-0 (>= 0.99), libudev1 (>= 183)
+
+Package: snapd
+Architecture: amd64
+Version: 2.56.2+22.04ubuntu1
+APT-ID: 74404
+Source: snapd
+Source-Version: 2.56.2+22.04ubuntu1
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, apparmor (>= 2.10.95-0ubuntu2.2), ca-certificates, openssh-client, squashfs-tools, systemd, udev, libc6 (>= 2.34), libfuse3-3 (>= 3.2.3), liblzma5 (>= 5.1.1alpha+20110809), liblzo2-2 (>= 2.02), libudev1 (>= 183), zlib1g (>= 1:1.1.4), default-dbus-session-bus | dbus-session-bus
+Suggests: zenity | kdialog
+Recommends: gnupg, fuse3 (>= 3.10.5-1) | fuse
+Conflicts: snap (<< 2013-11-29-1ubuntu1)
+Replaces: snap-confine (<< 2.23), snapd-xdg-open (<= 0.0.0), ubuntu-core-launcher (<< 2.22), ubuntu-snappy (<< 1.9), ubuntu-snappy-cli (<< 1.9)
+Breaks: snap-confine (<< 2.23), snapd-xdg-open (<= 0.0.0), ubuntu-core-launcher (<< 2.22), ubuntu-snappy (<< 1.9), ubuntu-snappy-cli (<< 1.9)
+
+Package: python3-netifaces
+Architecture: amd64
+Version: 0.11.0-1build2
+APT-ID: 5330
+Multi-Arch: same
+Source: netifaces
+Source-Version: 0.11.0-1build2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.4)
+
+Package: systemd-hwe-hwdb
+Architecture: all
+Version: 249.11.1
+APT-ID: 74428
+Source: systemd-hwe
+Source-Version: 249.11.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: udev
+
+Package: alsa-utils
+Architecture: amd64
+Version: 1.2.6-1ubuntu1
+APT-ID: 17
+Multi-Arch: foreign
+Source: alsa-utils
+Source-Version: 1.2.6-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: kmod (>= 17-1~), lsb-base (>= 3.0-9), libasound2 (>= 1.2.6.1), libatopology2 (>= 1.2.2), libc6 (>= 2.34), libfftw3-single3 (>= 3.3.5), libncursesw6 (>= 6), libsamplerate0 (>= 0.1.7), libtinfo6 (>= 6)
+Suggests: dialog
+Provides: audio-mixer
+
+Package: libtss2-tcti-mssim0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3903
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.7), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: apport-symptoms
+Architecture: all
+Version: 0.24
+APT-ID: 43
+Source: apport-symptoms
+Source-Version: 0.24
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: apport
+
+Package: printer-driver-ptouch
+Architecture: amd64
+Version: 1.6-2build1
+APT-ID: 4975
+Source: ptouch-driver
+Source-Version: 1.6-2build1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ghostscript, python3:any, xz-utils, libc6 (>= 2.34), libcups2 (>= 2.3~b6)
+
+Package: python3-certifi
+Architecture: all
+Version: 2020.6.20-1
+APT-ID: 5176
+Source: python-certifi
+Source-Version: 2020.6.20-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ca-certificates, python3:any
+
+Package: librest-0.7-0
+Architecture: amd64
+Version: 0.8.1-1.1build2
+APT-ID: 3555
+Multi-Arch: same
+Source: librest
+Source-Version: 0.8.1-1.1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3), libsoup-gnome2.4-1 (>= 2.27.4), libsoup2.4-1 (>= 2.30), libxml2 (>= 2.7.4)
+
+Package: libsqlite3-0
+Architecture: amd64
+Version: 3.37.2-2
+APT-ID: 3732
+Multi-Arch: same
+Source: sqlite3
+Source-Version: 3.37.2-2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Breaks: python-migrate (<< 0.11.0-4~), python3-migrate (<< 0.11.0-4~)
+
+Package: libabsl20210324
+Architecture: amd64
+Version: 0~20210324.2-2
+APT-ID: 1571
+Multi-Arch: same
+Source: abseil
+Source-Version: 0~20210324.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11)
+
+Package: linux-headers-generic-hwe-22.04
+Architecture: amd64
+Version: 5.15.0.48.48
+APT-ID: 73287
+Source: linux-meta
+Source-Version: 5.15.0.48.48
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-headers-5.15.0-48-generic
+
+Package: libpackagekit-glib2-18
+Architecture: amd64
+Version: 1.2.5-2ubuntu2
+APT-ID: 3167
+Multi-Arch: same
+Source: packagekit
+Source-Version: 1.2.5-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libglib2.0-0 (>= 2.54)
+Recommends: packagekit (= 1.2.5-2ubuntu2)
+
+Package: python3.10-nopie
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 78613
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10-minimal (= 3.10.6-1~22.04), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: python3.10-nopie
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79555
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10-minimal (= 3.10.4-3ubuntu0.1), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: python3.10-nopie
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 58465
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+APT-Pin: 500
+Depends: python3.10-minimal (= 3.10.4-3), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+
+Package: linux-generic-hwe-22.04
+Architecture: amd64
+Version: 5.15.0.48.48
+APT-ID: 73141
+Source: linux-meta
+Source-Version: 5.15.0.48.48
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: linux-image-generic-hwe-22.04 (= 5.15.0.48.48), linux-headers-generic-hwe-22.04 (= 5.15.0.48.48)
+
+Package: libtext-wrapi18n-perl
+Architecture: all
+Version: 0.06-9
+APT-ID: 3834
+Source: libtext-wrapi18n-perl
+Source-Version: 0.06-9
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtext-charwidth-perl
+
+Package: python3-renderpm
+Architecture: amd64
+Version: 3.6.8-1
+APT-ID: 5450
+Multi-Arch: same
+Source: python-reportlab
+Source-Version: 3.6.8-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.14), libfreetype6 (>= 2.2.1), fonts-urw-base35
+Provides: python3.10-renderpm
+
+Package: libevent-2.1-7
+Architecture: amd64
+Version: 2.1.12-stable-1build3
+APT-ID: 2168
+Multi-Arch: same
+Source: libevent
+Source-Version: 2.1.12-stable-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: rygel
+Architecture: amd64
+Version: 0.40.3-1ubuntu2
+APT-ID: 5626
+Source: rygel
+Source-Version: 0.40.3-1ubuntu2
+Priority: extra
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: init-system-helpers (>= 1.52), libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.31.1), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.56.0), libgssdp-1.2-0 (>= 1.1.0), libgstreamer-plugins-base1.0-0 (>= 1.12), libgstreamer1.0-0 (>= 1.12), libgupnp-1.2-1 (>= 1.1.2), libgupnp-av-1.0-3 (>= 0.12.8), libgupnp-dlna-2.0-4 (>= 0.9.4-2), libmediaart-2.0-0 (>= 1.9.0), librygel-core-2.6-2 (>= 0.40.3), librygel-db-2.6-2 (>= 0.40.3), librygel-renderer-2.6-2 (>= 0.40.3), librygel-server-2.6-2 (>= 0.40.3), libsoup2.4-1 (>= 2.44.0), libsqlite3-0 (>= 3.5.9), libxml2 (>= 2.7.4)
+Suggests: gstreamer1.0-libav, gstreamer1.0-plugins-ugly, rygel-playbin, rygel-preferences, rygel-ruih, rygel-tracker, tumbler
+Recommends: dbus-user-session, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
+
+Package: hostname
+Architecture: amd64
+Version: 3.23ubuntu2
+APT-ID: 968
+Essential: yes
+Source: hostname
+Source-Version: 3.23ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34)
+Replaces: nis (<< 3.17-30)
+Breaks: nis (<< 3.17-30)
+
+Package: libstartup-notification0
+Architecture: amd64
+Version: 0.12-6build2
+APT-ID: 3753
+Multi-Arch: same
+Source: startup-notification
+Source-Version: 0.12-6build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-xcb1 (>= 2:1.7.2), libxcb-util1 (>= 0.4.0), libxcb1
+
+Package: rsync
+Architecture: amd64
+Version: 3.2.3-8ubuntu3
+APT-ID: 5609
+Multi-Arch: foreign
+Source: rsync
+Source-Version: 3.2.3-8ubuntu3
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-base, libacl1 (>= 2.2.23), libc6 (>= 2.34), liblz4-1 (>= 0.0~r130), libpopt0 (>= 1.14), libssl3 (>= 3.0.0~~alpha1), libxxhash0 (>= 0.8.0), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: openssh-client, openssh-server, python3
+
+Package: pinentry-curses
+Architecture: amd64
+Version: 1.1.1-1build2
+APT-ID: 4909
+Multi-Arch: foreign
+Source: pinentry
+Source-Version: 1.1.1-1build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.1.0), libc6 (>= 2.34), libgpg-error0 (>= 1.16), libncursesw6 (>= 6), libtinfo6 (>= 6)
+Suggests: pinentry-doc
+Enhances: gnupg-agent
+Provides: pinentry
+
+Package: libfile-basedir-perl
+Architecture: all
+Version: 0.09-1
+APT-ID: 2217
+Source: libfile-basedir-perl
+Source-Version: 0.09-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libipc-system-simple-perl
+
+Package: cups-browsed
+Architecture: amd64
+Version: 1.28.15-0ubuntu1
+APT-ID: 247
+Source: cups-filters
+Source-Version: 1.28.15-0ubuntu1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-daemon, lsb-base, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libavahi-glib1 (>= 0.6.16), libc6 (>= 2.34), libcups2 (>= 2.2.2), libcupsfilters1 (>= 1.27.0), libglib2.0-0 (>= 2.37.3), libldap-2.5-0 (>= 2.5.4)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Recommends: avahi-daemon
+Replaces: cups-filters (<< 1.4.0~)
+Breaks: cups-filters (<< 1.4.0~)
+Enhances: cups
+
+Package: libwebp7
+Architecture: amd64
+Version: 1.2.2-2
+APT-ID: 4056
+Multi-Arch: same
+Source: libwebp
+Source-Version: 1.2.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libjson-c5
+Architecture: amd64
+Version: 0.15-3~ubuntu1.22.04.1
+APT-ID: 72441
+Multi-Arch: same
+Source: json-c
+Source-Version: 0.15-3~ubuntu1.22.04.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: gpgsm
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71885
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gpgconf (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libksba8 (>= 1.6.0), libreadline8 (>= 6.0)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg2 (<< 2.1.10-2)
+Breaks: gnupg2 (<< 2.1.10-2)
+
+Package: liblangtag1
+Architecture: amd64
+Version: 0.6.3-2ubuntu1
+APT-ID: 2792
+Multi-Arch: same
+Source: liblangtag
+Source-Version: 0.6.3-2ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libxml2 (>= 2.7.4), liblangtag-common (= 0.6.3-2ubuntu1)
+
+Package: libhtml-parser-perl
+Architecture: amd64
+Version: 3.76-1build2
+APT-ID: 2593
+Multi-Arch: same
+Source: libhtml-parser-perl
+Source-Version: 3.76-1build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libhtml-tagset-perl, liburi-perl
+Suggests: libdata-dump-perl
+Recommends: libhttp-message-perl
+Enhances: libwww-perl
+
+Package: pipewire-bin
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 4913
+Multi-Arch: foreign
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: video
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpipewire-0.3-modules (= 0.3.48-1ubuntu1), libasound2 (>= 1.2.1.1), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libncursesw6 (>= 6), libpipewire-0.3-0 (= 0.3.48-1ubuntu1), libreadline8 (>= 6.0), libsndfile1 (>= 1.0.20), libtinfo6 (>= 6)
+Recommends: dbus-user-session, pipewire-media-session | wireplumber, rtkit
+Replaces: pipewire (<< 0.3.5)
+Breaks: pipewire (<< 0.3.5)
+
+Package: xorg
+Architecture: amd64
+Version: 1:7.7+23ubuntu2
+APT-ID: 6037
+Source: xorg
+Source-Version: 1:7.7+23ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-xorg (>= 1:7.7+23ubuntu2), libgl1, libgl1-mesa-dri, libglu1-mesa, xfonts-base (>= 1:1.0.0-1), x11-apps, x11-session-utils, x11-utils, x11-xkb-utils, x11-xserver-utils, xauth, xinit, xfonts-utils, xkb-data, xorg-docs-core, gnome-terminal | xterm | x-terminal-emulator, xinput
+Suggests: xorg-docs, xfonts-100dpi (>= 1:1.0.0-1), xfonts-75dpi (>= 1:1.0.0-1), x11-xfs-utils
+Recommends: xfonts-scalable (>= 1:1.0.0-1)
+Provides: x-window-system-core, x-window-system
+
+Package: fonts-kacst
+Architecture: all
+Version: 2.01+mry-15
+APT-ID: 449
+Multi-Arch: foreign
+Source: fonts-kacst
+Source-Version: 2.01+mry-15
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.6~)
+Recommends: fonts-kacst-one
+
+Package: python3-markupsafe
+Architecture: amd64
+Version: 2.0.1-2build1
+APT-ID: 5312
+Source: markupsafe
+Source-Version: 2.0.1-2build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.14)
+
+Package: libxslt1.1
+Architecture: amd64
+Version: 1.1.34-4ubuntu0.22.04.1
+APT-ID: 72856
+Multi-Arch: same
+Source: libxslt
+Source-Version: 1.1.34-4ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcrypt20 (>= 1.9.0), libxml2 (>= 2.9.0)
+
+Package: gnome-shell-common
+Architecture: all
+Version: 42.4-0ubuntu0.22.04.1
+APT-ID: 71871
+Source: gnome-shell
+Source-Version: 42.4-0ubuntu0.22.04.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Recommends: yaru-theme-gnome-shell (>= 22.04.1~)
+Replaces: gnome-shell (<< 3.36.1-6~)
+Breaks: gnome-shell (<< 3.36.1-6~)
+
+Package: libprocps8
+Architecture: amd64
+Version: 2:3.3.17-6ubuntu2
+APT-ID: 3307
+Multi-Arch: same
+Source: procps
+Source-Version: 2:3.3.17-6ubuntu2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsystemd0 (>= 209)
+Replaces: procps (<< 1:3.3.2-1)
+
+Package: python3-distro-info
+Architecture: all
+Version: 1.1build1
+APT-ID: 5216
+Source: distro-info
+Source-Version: 1.1build1
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: distro-info-data (>= 0.46), python3:any
+
+Package: libjavascriptcoregtk-4.0-18
+Architecture: amd64
+Version: 2.36.7-0ubuntu0.22.04.1
+APT-ID: 72435
+Multi-Arch: same
+Source: webkit2gtk
+Source-Version: 2.36.7-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 7), libglib2.0-0 (>= 2.65.1), libicu70 (>= 70.1-1~), libstdc++6 (>= 12), libsystemd0
+
+Package: fonts-yrsa-rasa
+Architecture: all
+Version: 2.005-1
+APT-ID: 547
+Multi-Arch: foreign
+Source: fonts-yrsa-rasa
+Source-Version: 2.005-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: cups-pk-helper
+Architecture: amd64
+Version: 0.2.6-1ubuntu5
+APT-ID: 256
+Source: cups-pk-helper
+Source-Version: 0.2.6-1ubuntu5
+Priority: extra
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcups2 (>= 1.6.0), libglib2.0-0 (>= 2.37.3), libpolkit-gobject-1-0 (>= 0.99)
+
+Package: libspeex1
+Architecture: amd64
+Version: 1.2~rc1.2-1.1ubuntu3
+APT-ID: 3726
+Multi-Arch: same
+Source: speex
+Source-Version: 1.2~rc1.2-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+Suggests: speex
+Conflicts: asterisk (<= 1:1.4.18.1~dfsg-1), libiaxclient1 (<= 2.0.2-1), libmediastreamer0 (<= 2.1.0-1), libopal-2.2 (<= 2.2.11~dfsg1-3), libopal-2.2-develop (<= 2.2.11~dfsg1-3), libopal-2.2-ptrace (<= 2.2.11~dfsg1-3), libopal-2.2.0
+
+Package: x11-xkb-utils
+Architecture: amd64
+Version: 7.7+5build4
+APT-ID: 5992
+Multi-Arch: foreign
+Source: x11-xkb-utils
+Source-Version: 7.7+5build4
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6, libxaw7 (>= 2:1.0.14), libxkbfile1 (>= 1:1.1.0), libxt6
+Replaces: xbase-clients (<= 1:7.2.ds2-3)
+
+Package: libcryptsetup12
+Architecture: amd64
+Version: 2:2.4.3-1ubuntu1.1
+APT-ID: 72299
+Multi-Arch: same
+Source: cryptsetup
+Source-Version: 2:2.4.3-1ubuntu1.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libargon2-1 (>= 0~20171227), libblkid1 (>= 2.17.2), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), libjson-c5 (>= 0.15), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16)
+
+Package: libasound2-data
+Architecture: all
+Version: 1.2.6.1-1ubuntu1
+APT-ID: 1637
+Multi-Arch: foreign
+Source: alsa-lib
+Source-Version: 1.2.6.1-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: alsa-utils
+Recommends: alsa-ucm-conf, alsa-topology-conf
+Replaces: libasound2 (<< 1.2.6.1-1ubuntu1)
+Breaks: libasound2 (<< 1.2.6.1-1ubuntu1)
+
+Package: libglu1-mesa
+Architecture: amd64
+Version: 9.0.2-1
+APT-ID: 2397
+Multi-Arch: same
+Source: libglu
+Source-Version: 9.0.2-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libopengl0, libstdc++6 (>= 5)
+Conflicts: libglu1, mesag3 (<< 5.0.0-1), xlibmesa3
+Replaces: libglu1
+Provides: libglu1
+
+Package: python3-jwt
+Architecture: all
+Version: 2.3.0-1ubuntu0.2
+APT-ID: 74325
+Source: pyjwt
+Source-Version: 2.3.0-1ubuntu0.2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Suggests: python3-crypto
+Recommends: python3-cryptography
+
+Package: libcupsimage2
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 72302
+Multi-Arch: same
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcups2 (= 2.4.1op1-1ubuntu4.1), libc6 (>= 2.2.5)
+Recommends: libcupsfilters1
+
+Package: gnome-control-center-data
+Architecture: all
+Version: 1:41.7-0ubuntu0.22.04.5
+APT-ID: 71860
+Multi-Arch: foreign
+Source: gnome-control-center
+Source-Version: 1:41.7-0ubuntu0.22.04.5
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: gnome-control-center (<< 1:3.7.92-2~)
+Breaks: gnome-control-center (<< 1:3.7.92-2~)
+
+Package: adduser
+Architecture: all
+Version: 3.118ubuntu5
+APT-ID: 6
+Multi-Arch: foreign
+Source: adduser
+Source-Version: 3.118ubuntu5
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: passwd, debconf (>= 0.5) | debconf-2.0
+Suggests: liblocale-gettext-perl, perl, ecryptfs-utils (>= 67-1)
+
+Package: findutils
+Architecture: amd64
+Version: 4.8.0-1ubuntu3
+APT-ID: 423
+Essential: yes
+Multi-Arch: foreign
+Source: findutils
+Source-Version: 4.8.0-1ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libselinux1 (>= 3.1~)
+Suggests: mlocate | locate
+Breaks: binstats (<< 1.08-8.1), guilt (<< 0.36-0.2), libpython3.4-minimal (<< 3.4.4-2), libpython3.5-minimal (<< 3.5.1-3), lsat (<< 0.9.7.1-2.1), mc (<< 3:4.8.11-1), switchconf (<< 0.0.9-2.1)
+
+Package: libipt2
+Architecture: amd64
+Version: 2.0.5-1
+APT-ID: 2692
+Source: intel-processor-trace
+Source-Version: 2.0.5-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: ubuntu-session
+Architecture: all
+Version: 42.0-1ubuntu2
+APT-ID: 5898
+Source: gnome-session
+Source-Version: 42.0-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-session-bin (<< 43~), gnome-session-bin (>= 42.0-1ubuntu2), gnome-session-common (= 42.0-1ubuntu2), gnome-settings-daemon (>= 3.37.0), gnome-shell (>= 3.37.91), xwayland, yaru-theme-gnome-shell (>= 20.04.3~), session-migration
+Recommends: python3
+Replaces: gnome-session (<= 3.29.90-1ubuntu1)
+Breaks: gnome-session (<= 3.29.90-1ubuntu1), hud (<< 14.10+17.10.20170619), unity (<< 7.5.0+17.10.20170619), unity-gtk-module (<< 0.0.0+17.04.20170918), unity-settings-daemon (<< 15.04.1+17.04.20170619)
+Provides: x-session-manager
+
+Package: libgmp10
+Architecture: amd64
+Version: 2:6.2.1+dfsg-3ubuntu1
+APT-ID: 2409
+Multi-Arch: same
+Source: gmp
+Source-Version: 2:6.2.1+dfsg-3ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Breaks: libmath-gmp-perl (<< 2.20-1), libmath-prime-util-gmp-perl (<< 0.51-2), postgresql-pgmp (<< 1.0.3-1)
+
+Package: libxcb-res0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4158
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: distro-info-data
+Architecture: all
+Version: 0.52ubuntu0.1
+APT-ID: 71779
+Multi-Arch: foreign
+Source: distro-info-data
+Source-Version: 0.52ubuntu0.1
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: distro-info (<< 1.0~)
+
+Package: libxxhash0
+Architecture: amd64
+Version: 0.8.1-1
+APT-ID: 4290
+Multi-Arch: same
+Source: xxhash
+Source-Version: 0.8.1-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libpython3.10-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72532
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3.10-stdlib (= 3.10.6-1~22.04), libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libexpat1 (>= 2.1~beta3), libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libssl3 (>= 3.0.0~~alpha1), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1), zlib1g (>= 1:1.2.0)
+Replaces: python3-gdbm-dbg (<< 3.9.9-1~)
+Breaks: python3-gdbm-dbg (<< 3.9.9-1~)
+
+Package: libpython3.10-dbg
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79374
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-stdlib (= 3.10.4-3ubuntu0.1), libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libexpat1 (>= 2.1~beta3), libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libssl3 (>= 3.0.0~~alpha1), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1), zlib1g (>= 1:1.2.0)
+Replaces: python3-gdbm-dbg (<< 3.9.9-1~)
+Breaks: python3-gdbm-dbg (<< 3.9.9-1~)
+
+Package: libpython3.10-dbg
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 3338
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-stdlib (= 3.10.4-3), libbz2-1.0, libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libdb5.3, libexpat1 (>= 2.1~beta3), libffi8 (>= 3.4), liblzma5 (>= 5.1.1alpha+20120614), libmpdec3, libncursesw6 (>= 6.1), libnsl2 (>= 1.0), libreadline8 (>= 7.0~beta), libsqlite3-0 (>= 3.14.0), libssl3 (>= 3.0.0~~alpha1), libtinfo6 (>= 6), libtirpc3 (>= 1.0.2), libuuid1 (>= 2.20.1), zlib1g (>= 1:1.2.0)
+Replaces: python3-gdbm-dbg (<< 3.9.9-1~)
+Breaks: python3-gdbm-dbg (<< 3.9.9-1~)
+
+Package: libglibmm-2.4-1v5
+Architecture: amd64
+Version: 2.66.2-2
+APT-ID: 2392
+Multi-Arch: same
+Source: glibmm2.4
+Source-Version: 2.66.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.61.2), libsigc++-2.0-0v5 (>= 2.9.1), libstdc++6 (>= 11)
+Conflicts: libglibmm-2.4-1c2a
+Replaces: libglibmm-2.4-1c2a
+
+Package: libpython3.10-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72533
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libpython3.10-stdlib (= 3.10.6-1~22.04), libpython3.10 (= 3.10.6-1~22.04), libexpat1-dev, zlib1g-dev
+Recommends: libc6-dev | libc-dev
+
+Package: libpython3.10-dev
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79375
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-stdlib (= 3.10.4-3ubuntu0.1), libpython3.10 (= 3.10.4-3ubuntu0.1), libexpat1-dev, zlib1g-dev
+Recommends: libc6-dev | libc-dev
+
+Package: libpython3.10-dev
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 3339
+Multi-Arch: same
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: libdevel
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: libpython3.10-stdlib (= 3.10.4-3), libpython3.10 (= 3.10.4-3), libexpat1-dev, zlib1g-dev
+Recommends: libc6-dev | libc-dev
+
+Package: python3-examples
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 74318
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (>= 3.10.6-1~22.04), python3.10-examples (>= 3.10.6-1~)
+
+Package: python3-examples
+Architecture: all
+Version: 3.10.4-0ubuntu2
+APT-ID: 5232
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: python3 (>= 3.10.4-0ubuntu2), python3.10-examples (>= 3.10.4-1~)
+
+Package: libthai-data
+Architecture: all
+Version: 0.1.29-1build1
+APT-ID: 3840
+Multi-Arch: foreign
+Source: libthai
+Source-Version: 0.1.29-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: libthai0 (<< 0.1.10)
+
+Package: tracker-extract
+Architecture: amd64
+Version: 3.3.0-1
+APT-ID: 5864
+Source: tracker-miners
+Source-Version: 3.3.0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.16), libc6 (>= 2.34), libcue2, libexempi8 (>= 2.5.0), libexif12 (>= 0.6.21-1~), libgexiv2-2 (>= 0.6.1), libgif7 (>= 5.1), libglib2.0-0 (>= 2.62.0), libgsf-1-114 (>= 1.14.24), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libgxps2 (>= 0.2.1), libicu70 (>= 70.1-1~), libjpeg8 (>= 8c), libnm0 (>= 1.0.0), libpng16-16 (>= 1.6.2-1), libpoppler-glib8 (>= 0.18.0), libseccomp2 (>= 2.1.0), libtiff5 (>= 4.0.3), libtotem-plparser18 (>= 3.26.0), libtracker-sparql-3.0-0 (>= 3.3.0~), libxml2 (>= 2.7.4), dconf-gsettings-backend | gsettings-backend, init-system-helpers (>= 1.52), tracker (>= 3.2.0)
+Replaces: tracker (<< 1.99.2)
+Breaks: tracker (<< 1.99.2)
+
+Package: linux-firmware
+Architecture: all
+Version: 20220329.git681281e4-0ubuntu3.5
+APT-ID: 73118
+Multi-Arch: foreign
+Source: linux-firmware
+Source-Version: 20220329.git681281e4-0ubuntu3.5
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: firmware-sof-signed
+Conflicts: atmel-firmware
+Replaces: atmel-firmware, linux-firmware-snapdragon (<= 1.2-0ubuntu1), linux-restricted-common
+Breaks: linux-firmware-raspi2 (<= 1.20190819-0ubuntu2), linux-firmware-snapdragon (<= 1.2-0ubuntu1)
+Provides: atmel-firmware
+
+Package: python3-ldb
+Architecture: amd64
+Version: 2:2.4.4-0ubuntu0.1
+APT-ID: 74328
+Source: ldb
+Source-Version: 2:2.4.4-0ubuntu0.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libldb2 (= 2:2.4.4-0ubuntu0.1), python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.14), libpython3.10 (>= 3.10.0), libtalloc2 (>= 2.3.1~)
+
+Package: libip6tc2
+Architecture: amd64
+Version: 1.8.7-1ubuntu5
+APT-ID: 2676
+Multi-Arch: same
+Source: iptables
+Source-Version: 1.8.7-1ubuntu5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28)
+
+Package: libwinpr2-2
+Architecture: amd64
+Version: 2.6.1+dfsg1-3ubuntu2.2
+APT-ID: 72832
+Multi-Arch: same
+Source: freerdp2
+Source-Version: 2.6.1+dfsg1-3ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libicu70 (>= 70.1-1~), libssl3 (>= 3.0.0~~alpha1), libsystemd0
+Suggests: freerdp2-x11
+Replaces: libwinpr2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+Breaks: libwinpr2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+
+Package: libfreerdp-server2-2
+Architecture: amd64
+Version: 2.6.1+dfsg1-3ubuntu2.2
+APT-ID: 72349
+Multi-Arch: same
+Source: freerdp2
+Source-Version: 2.6.1+dfsg1-3ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libfreerdp2-2 (= 2.6.1+dfsg1-3ubuntu2.2), libwinpr2-2 (>= 2.1.0+dfsg1)
+Replaces: libfreerdp-server2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+Breaks: libfreerdp-server2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+
+Package: libpcre2-8-0
+Architecture: amd64
+Version: 10.39-3ubuntu0.1
+APT-ID: 72503
+Multi-Arch: same
+Source: pcre2
+Source-Version: 10.39-3ubuntu0.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: gir1.2-gdm-1.0
+Architecture: amd64
+Version: 42.0-1ubuntu7
+APT-ID: 71833
+Multi-Arch: same
+Source: gdm3
+Source-Version: 42.0-1ubuntu7
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.12), libgdm1 (>= 3.33.4)
+Conflicts: gir1.2-gdm3
+Replaces: gir1.2-gdm3
+
+Package: fonts-smc-keraleeyam
+Architecture: all
+Version: 3.0.2-2
+APT-ID: 504
+Multi-Arch: foreign
+Source: fonts-smc-keraleeyam
+Source-Version: 3.0.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libcrypt1
+Architecture: amd64
+Version: 1:4.4.27-1
+APT-ID: 1953
+Multi-Arch: same
+Source: libxcrypt
+Source-Version: 1:4.4.27-1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.25)
+Conflicts: libpam0g (<< 1.4.0-10)
+Replaces: libc6 (<< 2.29-4)
+
+Package: libmwaw-0.3-3
+Architecture: amd64
+Version: 0.3.21-1build1
+APT-ID: 2984
+Multi-Arch: same
+Source: libmwaw
+Source-Version: 0.3.21-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: libsysmetrics1
+Architecture: amd64
+Version: 1.7.1
+APT-ID: 3800
+Multi-Arch: same
+Source: ubuntu-report
+Source-Version: 1.7.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libgstreamer1.0-0
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 72407
+Multi-Arch: same
+Source: gstreamer1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcap2 (>= 1:2.10), libdw1 (>= 0.126), libglib2.0-0 (>= 2.70.0), libunwind8, libcap2-bin
+Suggests: gstreamer1.0-tools
+Breaks: gstreamer1.0-plugins-bad (<< 1.11.1), gstreamer1.0-plugins-base (<< 1.8.0), libgstreamer-plugins-bad1.0-0 (<< 1.13.1)
+
+Package: libavahi-common3
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1687
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libavahi-common-data (= 0.8-5ubuntu5)
+
+Package: cpp-11
+Architecture: amd64
+Version: 11.2.0-19ubuntu1
+APT-ID: 219
+Source: gcc-11
+Source-Version: 11.2.0-19ubuntu1
+Priority: optional
+Section: interpreters
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-11-base (= 11.2.0-19ubuntu1), libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libisl23 (>= 0.15), libmpc3 (>= 1.1.0), libmpfr6 (>= 3.1.3), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
+Suggests: gcc-11-locales (>= 11)
+Breaks: hardening-wrapper (<< 2.8+nmu3), libmagics++-dev (<< 2.28.0-4)
+
+Package: fonts-tlwg-mono-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 526
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-mono (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-mono (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-mono (<< 1:0.6.2-2)
+
+Package: gir1.2-atk-1.0
+Architecture: amd64
+Version: 2.36.0-3build1
+APT-ID: 638
+Multi-Arch: same
+Source: atk1.0
+Source-Version: 2.36.0-3build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.32.0), libatk1.0-0 (>= 2.35.1)
+
+Package: alsa-topology-conf
+Architecture: all
+Version: 1.2.5.1-2
+APT-ID: 15
+Multi-Arch: foreign
+Source: alsa-topology-conf
+Source-Version: 1.2.5.1-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libasound2-data (<< 1.2.1)
+Breaks: libasound2-data (<< 1.2.1)
+Enhances: libasound2-data
+
+Package: libgtop2-common
+Architecture: all
+Version: 2.40.0-2build3
+APT-ID: 2547
+Multi-Arch: foreign
+Source: libgtop2
+Source-Version: 2.40.0-2build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libhpmud0
+Architecture: amd64
+Version: 3.21.12+dfsg0-1
+APT-ID: 2589
+Multi-Arch: same
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libcups2 (>= 1.6.0), libdbus-1-3 (>= 1.9.14), libsnmp40 (>= 5.9.1+dfsg), libusb-1.0-0 (>= 2:1.0.8)
+
+Package: libminiupnpc17
+Architecture: amd64
+Version: 2.2.3-1build1
+APT-ID: 2916
+Multi-Arch: same
+Source: miniupnpc
+Source-Version: 2.2.3-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17)
+Suggests: minissdpd
+
+Package: ca-certificates
+Architecture: all
+Version: 20211016
+APT-ID: 157
+Multi-Arch: foreign
+Source: ca-certificates
+Source-Version: 20211016
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: openssl (>= 1.1.1), debconf (>= 0.5) | debconf-2.0
+Breaks: ca-certificates-java (<< 20121112+nmu1)
+Enhances: openssl
+
+Package: system-config-printer
+Architecture: all
+Version: 1.5.16-0ubuntu3
+APT-ID: 5730
+Source: system-config-printer
+Source-Version: 1.5.16-0ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0, gir1.2-gtk-3.0, gir1.2-handy-1, gir1.2-notify-0.7, gir1.2-packagekitglib-1.0, gir1.2-pango-1.0, gir1.2-polkit-1.0, python3-cups (>= 1.9.60), python3-cupshelpers (= 1.5.16-0ubuntu3), python3-dbus, python3-gi, system-config-printer-common (= 1.5.16-0ubuntu3), python3:any
+Suggests: gnome-software (>= 3.16.5-2)
+Recommends: avahi-utils, system-config-printer-udev
+
+Package: librsvg2-2
+Architecture: amd64
+Version: 2.52.5+dfsg-3
+APT-ID: 3570
+Multi-Arch: same
+Source: librsvg
+Source-Version: 2.52.5+dfsg-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.15.12), libgcc-s1 (>= 4.2), libgdk-pixbuf-2.0-0 (>= 2.31.1), libglib2.0-0 (>= 2.50.0), libpango-1.0-0 (>= 1.45.5), libpangocairo-1.0-0 (>= 1.44.0), libxml2 (>= 2.9.0)
+Suggests: librsvg2-bin
+Recommends: librsvg2-common
+
+Package: libvncserver1
+Architecture: amd64
+Version: 0.9.13+dfsg-3build2
+APT-ID: 4015
+Multi-Arch: same
+Source: libvncserver
+Source-Version: 0.9.13+dfsg-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libjpeg8 (>= 8c), liblzo2-2 (>= 2.02), zlib1g (>= 1:1.1.4)
+
+Package: libgtksourceview-4-0
+Architecture: amd64
+Version: 4.8.3-1
+APT-ID: 2542
+Multi-Arch: same
+Source: gtksourceview4
+Source-Version: 4.8.3-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.32), libc6 (>= 2.14), libcairo2 (>= 1.4.10), libfribidi0 (>= 0.19.2), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.48.0), libgtk-3-0 (>= 3.24), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0), libxml2 (>= 2.7.4), libgtksourceview-4-common (>= 4.8.3-1)
+
+Package: libsamplerate0
+Architecture: amd64
+Version: 0.2.2-1build1
+APT-ID: 3629
+Multi-Arch: same
+Source: libsamplerate
+Source-Version: 0.2.2-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: samplerate-programs (<< 0.1.8-3)
+
+Package: libftdi1-2
+Architecture: amd64
+Version: 1.5-5build3
+APT-ID: 2273
+Multi-Arch: same
+Source: libftdi1
+Source-Version: 1.5-5build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libusb-1.0-0 (>= 2:1.0.16)
+
+Package: gnome-keyring
+Architecture: amd64
+Version: 40.0-3ubuntu3
+APT-ID: 71864
+Multi-Arch: foreign
+Source: gnome-keyring
+Source-Version: 40.0-3ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, init-system-helpers (>= 1.52), libc6 (>= 2.34), libgck-1-0 (>= 3.3.90), libgcr-base-3-1 (>= 3.28.0), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.41.1), gcr (>= 3.4), default-dbus-session-bus | dbus-session-bus, p11-kit (>= 0.16), pinentry-gnome3
+Recommends: libpam-gnome-keyring, gnome-keyring-pkcs11
+Breaks: gnome-session (<< 3.20.0)
+
+Package: libpam-modules-bin
+Architecture: amd64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3179
+Multi-Arch: foreign
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.3.0), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~)
+Replaces: libpam-modules (<< 1.1.3-8)
+
+Package: perl-openssl-defaults
+Architecture: amd64
+Version: 5build2
+APT-ID: 4868
+Multi-Arch: same
+Source: perl-openssl-defaults
+Source-Version: 5build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1)
+Breaks: libcrypt-openssl-bignum-perl (<< 0.07-2), libcrypt-openssl-dsa-perl (<< 0.18-2), libcrypt-openssl-pkcs10-perl (<< 0.16-2), libcrypt-openssl-pkcs12-perl (<< 0.7-3), libcrypt-openssl-rsa-perl (<< 0.28-5), libcrypt-openssl-x509-perl (<< 1.8.7-3), libcrypt-smime-perl (<< 0.19-2), libcrypt-ssleay-perl (<< 0.73.04-2), libnet-ssleay-perl (<< 1.78-2)
+Provides: perl-openssl-abi-3, dh-sequence-perl-openssl
+
+Package: fonts-lohit-orya
+Architecture: all
+Version: 2.91.2-2
+APT-ID: 467
+Multi-Arch: foreign
+Source: fonts-lohit-orya
+Source-Version: 2.91.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-oriya-fonts (<= 1:0.5.12)
+Breaks: ttf-oriya-fonts (<= 1:0.5.12)
+
+Package: network-manager-pptp
+Architecture: amd64
+Version: 1.2.10-1
+APT-ID: 4749
+Source: network-manager-pptp
+Source-Version: 1.2.10-1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.34), libnm0 (>= 1.2.0), ppp (<< 2.4.9-2~), ppp (>= 2.4.9-1+~), network-manager, pptp-linux
+
+Package: libgxps2
+Architecture: amd64
+Version: 0.3.2-2
+APT-ID: 2571
+Multi-Arch: same
+Source: libgxps
+Source-Version: 0.3.2-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libarchive13 (>= 3.0.4), libc6 (>= 2.14), libcairo2 (>= 1.10.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.37.3), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3)
+
+Package: init-system-helpers
+Architecture: all
+Version: 1.62
+APT-ID: 1124
+Essential: yes
+Multi-Arch: foreign
+Source: init-system-helpers
+Source-Version: 1.62
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.20.1-3)
+Conflicts: file-rc (<< 0.8.17~)
+
+Package: tnftp
+Architecture: amd64
+Version: 20210827-4build1
+APT-ID: 5857
+Source: tnftp
+Source-Version: 20210827-4build1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libedit2 (>= 2.11-20080614-0), libssl3 (>= 3.0.0~~alpha1)
+Conflicts: lukemftp
+Replaces: lukemftp
+Provides: ftp
+
+Package: libqmi-glib5
+Architecture: amd64
+Version: 1.30.4-1
+APT-ID: 3346
+Multi-Arch: same
+Source: libqmi
+Source-Version: 1.30.4-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.56), libmbim-glib4 (>= 1.18.0), libmbim-proxy
+
+Package: libimagequant0
+Architecture: amd64
+Version: 2.17.0-1
+APT-ID: 2644
+Multi-Arch: same
+Source: libimagequant
+Source-Version: 2.17.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libgomp1 (>= 4.9)
+
+Package: grub-efi-amd64-bin
+Architecture: amd64
+Version: 2.06-2ubuntu10
+APT-ID: 71888
+Multi-Arch: foreign
+Source: grub2-unsigned
+Source-Version: 2.06-2ubuntu10
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: grub-common (>= 2.02~beta2-9)
+Recommends: grub-efi-amd64-signed, efibootmgr
+Replaces: grub-common (<= 1.97~beta2-1), grub-efi-amd64 (<< 1.99-1), grub2 (<< 2.06-2ubuntu10)
+
+Package: grub2-common
+Architecture: amd64
+Version: 2.06-2ubuntu7
+APT-ID: 919
+Multi-Arch: foreign
+Source: grub2
+Source-Version: 2.06-2ubuntu7
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: grub-common (= 2.06-2ubuntu7), dpkg (>= 1.15.4) | install-info, libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.36), libefiboot1 (>= 37), libefivar1 (>= 37), liblzma5 (>= 5.1.1alpha+20120614)
+Conflicts: grub-legacy
+Replaces: grub, grub-cloud-amd64 (<< 0.0.4), grub-common (<< 1.99-1), grub-coreboot (<< 2.02+dfsg1-7), grub-doc (<< 0.97-29ubuntu60), grub-efi-amd64 (<< 2.02+dfsg1-7), grub-efi-arm (<< 2.02+dfsg1-7), grub-efi-arm64 (<< 2.02+dfsg1-7), grub-efi-ia32 (<< 2.02+dfsg1-7), grub-efi-ia64 (<< 2.02+dfsg1-7), grub-ieee1275 (<< 2.02+dfsg1-7), grub-legacy, grub-legacy-doc (<< 0.97-29ubuntu60), grub-pc (<< 2.02+dfsg1-7), grub-uboot (<< 2.02+dfsg1-7), grub-xen (<< 2.02+dfsg1-7), grub-yeeloong (<< 2.02+dfsg1-7)
+Breaks: grub (<< 0.97-54), grub-cloud-amd64 (<< 0.0.4), grub-coreboot (<< 2.02+dfsg1-7), grub-doc (<< 0.97-29ubuntu60), grub-efi-amd64 (<< 2.02+dfsg1-7), grub-efi-arm (<< 2.02+dfsg1-7), grub-efi-arm64 (<< 2.02+dfsg1-7), grub-efi-ia32 (<< 2.02+dfsg1-7), grub-efi-ia64 (<< 2.02+dfsg1-7), grub-ieee1275 (<< 2.02+dfsg1-7), grub-legacy-doc (<< 0.97-29ubuntu60), grub-pc (<< 2.02+dfsg1-7), grub-uboot (<< 2.02+dfsg1-7), grub-xen (<< 2.02+dfsg1-7), grub-yeeloong (<< 2.02+dfsg1-7), shim (<< 0.9+1474479173.6c180c6-0ubuntu1~)
+
+Package: libgnome-desktop-4-1
+Architecture: amd64
+Version: 42.4-0ubuntu1
+APT-ID: 72388
+Multi-Arch: same
+Source: gnome-desktop
+Source-Version: 42.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bubblewrap, gnome-desktop3-data (>= 42.4-0ubuntu1), gnome-desktop3-data (<< 43~), gsettings-desktop-schemas (>= 3.27.0), iso-codes, libc6 (>= 2.33), libgdk-pixbuf-2.0-0 (>= 2.36.5), libglib2.0-0 (>= 2.70.0), libseccomp2 (>= 1.0.1), libsystemd0, libudev1 (>= 196), libxkbregistry0 (>= 1.0.0)
+Recommends: locales | locales-all
+
+Package: libiw30
+Architecture: amd64
+Version: 30~pre9-13.1ubuntu4
+APT-ID: 2718
+Multi-Arch: same
+Source: wireless-tools
+Source-Version: 30~pre9-13.1ubuntu4
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: python3-pil
+Architecture: amd64
+Version: 9.0.1-1build1
+APT-ID: 5396
+Multi-Arch: same
+Source: pillow
+Source-Version: 9.0.1-1build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, mime-support | python3-pil.imagetk, libc6 (>= 2.14), libfreetype6 (>= 2.10.1), libimagequant0 (>= 2.11.10), libjpeg8 (>= 8c), liblcms2-2 (>= 2.7), libopenjp2-7 (>= 2.0.0), libraqm0 (>= 0.7.0), libtiff5 (>= 4.0.3), libwebp7, libwebpdemux2, libwebpmux3, libxcb1, zlib1g (>= 1:1.1.4)
+Suggests: python-pil-doc
+Recommends: python3-olefile
+Conflicts: python3-imaging (<< 1.1.7+2.0.0-1.1)
+Replaces: python3-imaging (<< 1.1.7+2.0.0-1.1)
+Breaks: python3-imaging (<< 1.1.7+2.0.0-1.1)
+Provides: python3-pillow
+
+Package: libreoffice-help-common
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72558
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libreoffice-common
+Replaces: libreoffice-common (<< 1:6.3.0)
+Breaks: libreoffice-common (<< 1:6.3.0)
+
+Package: libxcb-glx0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4140
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: xinput
+Architecture: amd64
+Version: 1.6.3-1build2
+APT-ID: 6033
+Source: xinput
+Source-Version: 1.6.3-1build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6 (>= 2:1.2.99.901), libxi6 (>= 2:1.2.99.4), libxinerama1 (>= 2:1.1.4), libxrandr2 (>= 2:1.2.0)
+
+Package: libsource-highlight-common
+Architecture: all
+Version: 3.1.9-4.1build2
+APT-ID: 3712
+Multi-Arch: foreign
+Source: source-highlight
+Source-Version: 3.1.9-4.1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: source-highlight (<< 3.1.4-1)
+
+Package: libsemanage-common
+Architecture: all
+Version: 3.3-1build2
+APT-ID: 3655
+Multi-Arch: foreign
+Source: libsemanage
+Source-Version: 3.3-1build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: librevenge-0.0-0
+Architecture: amd64
+Version: 0.0.4-6ubuntu7
+APT-ID: 3560
+Multi-Arch: same
+Source: librevenge
+Source-Version: 0.0.4-6ubuntu7
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: libxkbregistry0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 4221
+Multi-Arch: same
+Source: libxkbcommon
+Source-Version: 1.4.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libxkbcommon0 (= 1.4.0-1), libc6 (>= 2.33), libxml2 (>= 2.7.4)
+
+Package: libv4l-0
+Architecture: amd64
+Version: 1.22.1-2build1
+APT-ID: 3983
+Multi-Arch: same
+Source: v4l-utils
+Source-Version: 1.22.1-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libv4lconvert0 (= 1.22.1-2build1), libc6 (>= 2.34)
+
+Package: libseccomp2
+Architecture: amd64
+Version: 2.5.3-2ubuntu2
+APT-ID: 3649
+Multi-Arch: same
+Source: libseccomp
+Source-Version: 2.5.3-2ubuntu2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: hplip
+Architecture: amd64
+Version: 3.21.12+dfsg0-1
+APT-ID: 969
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, cups, hplip-data (= 3.21.12+dfsg0-1), libhpmud0 (= 3.21.12+dfsg0-1), libsane-hpaio (= 3.21.12+dfsg0-1), lsb-base, printer-driver-hpcups (= 3.21.12+dfsg0-1), python3-dbus, python3-gi, python3-pexpect, python3-pil, python3-reportlab, wget, python3:any, xz-utils, python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.34), libcups2 (>= 1.6.0), libdbus-1-3 (>= 1.9.14), libpython3.10 (>= 3.10.0), libsane1 (>= 1.0.27)
+Suggests: hplip-doc, hplip-gui, python3-notify2, system-config-printer
+Recommends: avahi-daemon, policykit-1, printer-driver-postscript-hp, sane-utils
+
+Package: guile-2.2-libs
+Architecture: amd64
+Version: 2.2.7+1-6build2
+APT-ID: 945
+Multi-Arch: same
+Source: guile-2.2
+Source-Version: 2.2.7+1-6build2
+Priority: optional
+Section: lisp
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), libffi8 (>= 3.4), libgc1 (>= 1:7.4.2), libgmp10 (>= 2:6.2.1+dfsg), libltdl7 (>= 2.4.6), libreadline8 (>= 6.0), libunistring2 (>= 0.9.7)
+
+Package: python3-protobuf
+Architecture: amd64
+Version: 3.12.4-1ubuntu7
+APT-ID: 5405
+Source: protobuf
+Source-Version: 3.12.4-1ubuntu7
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libprotobuf23 (>= 3.12.4), libstdc++6 (>= 11), python3 (<< 3.11), python3 (>= 3.10~), python3-pkg-resources, python3-six (>= 1.9), python3:any
+
+Package: libbluetooth3
+Architecture: amd64
+Version: 5.64-0ubuntu1
+APT-ID: 1755
+Multi-Arch: same
+Source: bluez
+Source-Version: 5.64-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.15), libudev1 (>= 183)
+Conflicts: libsdp2 (<= 1.5-2)
+Replaces: libsdp2 (<= 1.5-2)
+
+Package: libogg0
+Architecture: amd64
+Version: 1.3.5-0ubuntu3
+APT-ID: 3126
+Multi-Arch: same
+Source: libogg
+Source-Version: 1.3.5-0ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: python3-six
+Architecture: all
+Version: 1.16.0-3ubuntu1
+APT-ID: 5479
+Multi-Arch: foreign
+Source: six
+Source-Version: 1.16.0-3ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Breaks: libpython-stdlib (<< 2.7.18), python-minimal (<< 2.7.18)
+
+Package: procps
+Architecture: amd64
+Version: 2:3.3.17-6ubuntu2
+APT-ID: 4984
+Multi-Arch: foreign
+Source: procps
+Source-Version: 2:3.3.17-6ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncurses6 (>= 6), libncursesw6 (>= 6), libprocps8 (>= 2:3.3.16-1), libtinfo6 (>= 6), lsb-base (>= 3.0-10), init-system-helpers (>= 1.29~)
+Recommends: psmisc
+Replaces: manpages-de (<< 4.9.1-2), manpages-fr (<< 4.9.1-2), manpages-fr-extra (<< 20151231+nmu1), manpages-pl (<< 1:4.9.1-2)
+Breaks: guymager (<= 0.5.9-1), manpages-de (<< 4.9.1-2), manpages-fr (<< 4.9.1-2), manpages-fr-extra (<< 20151231+nmu1), manpages-pl (<< 1:4.9.1-2), open-vm-tools (<= 2011.12.20-562307-1)
+Provides: watch
+
+Package: libgweather-3-16
+Architecture: amd64
+Version: 40.0-5build1
+APT-ID: 2566
+Multi-Arch: same
+Source: libgweather
+Source-Version: 40.0-5build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libgeocode-glib0 (>= 0.99.1), libglib2.0-0 (>= 2.44.0), libgtk-3-0 (>= 3.13.5), libsoup2.4-1 (>= 2.44.0), libxml2 (>= 2.7.4), libgweather-common (>= 3.5.0)
+Breaks: evolution-data-server (<< 3.38.3-2~), gnome-applets (<< 3.40.0-5~), gnome-calendar (<< 40.0~), gnome-panel (<< 3.40.0-3~), gnome-shell (<< 40.4-1~), gnome-weather (<< 40.0~), wmforecast (<< 1.5~)
+
+Package: gnome-menus
+Architecture: amd64
+Version: 3.36.0-1ubuntu3
+APT-ID: 796
+Source: gnome-menus
+Source-Version: 3.36.0-1ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: fonts-noto-color-emoji
+Architecture: all
+Version: 2.034-1
+APT-ID: 479
+Multi-Arch: foreign
+Source: fonts-noto-color-emoji
+Source-Version: 2.034-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libxinerama1
+Architecture: amd64
+Version: 2:1.1.4-3
+APT-ID: 4212
+Multi-Arch: same
+Source: libxinerama
+Source-Version: 2:1.1.4-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: gir1.2-pango-1.0
+Architecture: amd64
+Version: 1.50.6+ds-2
+APT-ID: 736
+Multi-Arch: same
+Source: pango1.0
+Source-Version: 1.50.6+ds-2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop (>= 0.9.5), gir1.2-glib-2.0 (>= 0.9.5), gir1.2-harfbuzz-0.0 (>= 2.6.0), libpango-1.0-0 (= 1.50.6+ds-2), libpangocairo-1.0-0 (= 1.50.6+ds-2), libpangoft2-1.0-0 (= 1.50.6+ds-2), libpangoxft-1.0-0 (= 1.50.6+ds-2)
+Provides: gir1.2-pangoxft-1.0 (= 1.50.6+ds-2), gir1.2-pangoot-1.0 (= 1.50.6+ds-2), gir1.2-pangoft2-1.0 (= 1.50.6+ds-2), gir1.2-pangofc-1.0 (= 1.50.6+ds-2), gir1.2-pangocairo-1.0 (= 1.50.6+ds-2)
+
+Package: fonts-tlwg-typewriter
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 533
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-typewriter-ttf | fonts-tlwg-typewriter-otf
+
+Package: printer-driver-sag-gdi
+Architecture: all
+Version: 0.1-8
+APT-ID: 4977
+Multi-Arch: foreign
+Source: rastertosag-gdi
+Source-Version: 0.1-8
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: ghostscript, python3:any
+Recommends: cups | foomatic-filters
+Replaces: rastertosag-gdi (<< 0.1-3)
+Breaks: rastertosag-gdi (<< 0.1-3)
+
+Package: libwnck-3-0
+Architecture: amd64
+Version: 40.1-1
+APT-ID: 4074
+Multi-Arch: same
+Source: libwnck3
+Source-Version: 40.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.14), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.44), libgtk-3-0 (>= 3.22.0), libpango-1.0-0 (>= 1.14.0), libstartup-notification0 (>= 0.4), libx11-6, libxrender1, libxres1 (>= 2:1.2.1), libwnck-3-common
+
+Package: fonts-kalapi
+Architecture: all
+Version: 1.0-4
+APT-ID: 451
+Multi-Arch: foreign
+Source: fonts-kalapi
+Source-Version: 1.0-4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.6~)
+
+Package: linux-modules-extra-5.15.0-48-generic
+Architecture: amd64
+Version: 5.15.0-48.54
+APT-ID: 73886
+Source: linux
+Source-Version: 5.15.0-48.54
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-image-5.15.0-48-generic | linux-image-unsigned-5.15.0-48-generic, wireless-regdb
+
+Package: libjbig0
+Architecture: amd64
+Version: 2.1-3.1build3
+APT-ID: 2732
+Multi-Arch: same
+Source: jbigkit
+Source-Version: 2.1-3.1build3
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: apturl
+Architecture: amd64
+Version: 0.5.2ubuntu22
+APT-ID: 55
+Source: apturl
+Source-Version: 0.5.2ubuntu22
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), apturl-common (= 0.5.2ubuntu22), adwaita-icon-theme, python3-gi, software-properties-gtk, python3-aptdaemon, python3-aptdaemon.gtk3widgets, gir1.2-gtk-3.0, gir1.2-webkit2-4.0
+Suggests: libgtk2-perl (>= 1:1.130)
+
+Package: python3-uno
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 74360
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1) | libreoffice-core-nogui (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), python3:any, python3 (<< 3.11), python3 (>= 3.10~), python3.10, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libpython3.10 (>= 3.10.0), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 5.3.0~alpha), libuno-sal3 (>= 5.4.0~alpha), libuno-salhelpergcc3-3 (>= 3.6.0~beta), uno-libs-private
+Conflicts: python-uno
+Replaces: libreoffice-common (<< 1:4.4.0~beta2), libreoffice-core (= 1:4.3.0~beta1-1)
+Enhances: libreoffice
+
+Package: fonts-samyak-deva
+Architecture: all
+Version: 1.2.2-5build1
+APT-ID: 488
+Multi-Arch: foreign
+Source: fonts-samyak
+Source-Version: 1.2.2-5build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-devanagari-fonts (<< 2:1.0)
+Breaks: ttf-devanagari-fonts (<< 2:1.0)
+
+Package: distro-info
+Architecture: amd64
+Version: 1.1build1
+APT-ID: 327
+Source: distro-info
+Source-Version: 1.1build1
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: distro-info-data (>= 0.46), libc6 (>= 2.34)
+Suggests: shunit2 (>= 2.1.6)
+
+Package: pulseaudio-module-bluetooth
+Architecture: amd64
+Version: 1:15.99.1+dfsg1-1ubuntu1
+APT-ID: 4988
+Source: pulseaudio
+Source-Version: 1:15.99.1+dfsg1-1ubuntu1
+Priority: extra
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbluetooth3 (>= 4.91), libc6 (>= 2.14), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.12.0), libgstreamer-plugins-base1.0-0 (>= 1.10.0), libgstreamer1.0-0 (>= 1.14), libpulse0 (= 1:15.99.1+dfsg1-1ubuntu1), libsbc1 (>= 1.5), pulseaudio (= 1:15.99.1+dfsg1-1ubuntu1), bluez (>= 5.23)
+Suggests: gstreamer1.0-plugins-bad (>= 1.19)
+Recommends: gstreamer1.0-plugins-good (>= 1.19)
+
+Package: libopenjp2-7
+Architecture: amd64
+Version: 2.4.0-6
+APT-ID: 3139
+Multi-Arch: same
+Source: openjpeg2
+Source-Version: 2.4.0-6
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libwayland-egl1
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72824
+Multi-Arch: same
+Source: wayland
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.2.5)
+Replaces: libwayland-egl1-mesa (<< 18.0.5-0)
+Breaks: libwayland-egl1-mesa (<< 18.0.5-0)
+Provides: libwayland-egl1-mesa
+
+Package: python3-nacl
+Architecture: amd64
+Version: 1.5.0-2
+APT-ID: 5328
+Source: python-nacl
+Source-Version: 1.5.0-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3~), python3-cffi-backend-api-min (<= 9729), python3-cffi-backend-api-max (>= 9729), python3:any, libc6 (>= 2.4), libsodium23 (>= 1.0.18)
+Suggests: python-nacl-doc
+
+Package: libcdparanoia0
+Architecture: amd64
+Version: 3.10.2+debian-14build2
+APT-ID: 1866
+Multi-Arch: same
+Source: cdparanoia
+Source-Version: 3.10.2+debian-14build2
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libpython3-stdlib
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 72530
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (>= 3.10.6-1~)
+
+Package: libpython3-stdlib
+Architecture: amd64
+Version: 3.10.4-0ubuntu2
+APT-ID: 3336
+Multi-Arch: same
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-stdlib (>= 3.10.4-1~)
+
+Package: libcdio-paranoia2
+Architecture: amd64
+Version: 10.2+2.0.0-1build3
+APT-ID: 1863
+Multi-Arch: same
+Source: libcdio-paranoia
+Source-Version: 10.2+2.0.0-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcdio-cdda2 (>= 10.2+2.0.0), libcdio19 (>= 2.1.0)
+
+Package: python3.10-dbg
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74362
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10 (= 3.10.6-1~22.04), libpython3.10-dbg (= 3.10.6-1~22.04), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Suggests: python3-gdbm-dbg, python3-tk-dbg
+Recommends: gdb
+
+Package: python3.10-dbg
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79408
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3ubuntu0.1), libpython3.10-dbg (= 3.10.4-3ubuntu0.1), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Suggests: python3-gdbm-dbg, python3-tk-dbg
+Recommends: gdb
+
+Package: python3.10-dbg
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 5551
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: debug
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3), libpython3.10-dbg (= 3.10.4-3), libc6 (>= 2.35), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Suggests: python3-gdbm-dbg, python3-tk-dbg
+Recommends: gdb
+
+Package: python3.10-dev
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74363
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3.10 (= 3.10.6-1~22.04), libpython3.10-dev (= 3.10.6-1~22.04), libpython3.10 (= 3.10.6-1~22.04)
+Recommends: libc6-dev | libc-dev
+
+Package: python3.10-dev
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79409
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3ubuntu0.1), libpython3.10-dev (= 3.10.4-3ubuntu0.1), libpython3.10 (= 3.10.4-3ubuntu0.1)
+Recommends: libc6-dev | libc-dev
+
+Package: python3.10-dev
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 5552
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+Depends: python3.10 (= 3.10.4-3), libpython3.10-dev (= 3.10.4-3), libpython3.10 (= 3.10.4-3)
+Recommends: libc6-dev | libc-dev
+
+Package: libxcb-shape0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4162
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: rfkill
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 5599
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsmartcols1 (>= 2.33)
+
+Package: bash-completion
+Architecture: all
+Version: 1:2.11-5ubuntu1
+APT-ID: 89
+Multi-Arch: foreign
+Source: bash-completion
+Source-Version: 1:2.11-5ubuntu1
+Priority: standard
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Provides: dh-sequence-bash-completion
+
+Package: libglapi-mesa
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72381
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: python3.10-doc
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 74364
+Multi-Arch: foreign
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: doc
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libjs-jquery, libjs-underscore
+Suggests: python3.10
+
+Package: python3.10-doc
+Architecture: all
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79410
+Multi-Arch: foreign
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: optional
+Section: doc
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: libjs-jquery, libjs-underscore
+Suggests: python3.10
+
+Package: python3.10-doc
+Architecture: all
+Version: 3.10.4-3
+APT-ID: 5553
+Multi-Arch: foreign
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: optional
+Section: doc
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+Depends: libjs-jquery, libjs-underscore
+Suggests: python3.10
+
+Package: libvorbis0a
+Architecture: amd64
+Version: 1.3.7-1build2
+APT-ID: 4021
+Multi-Arch: same
+Source: libvorbis
+Source-Version: 1.3.7-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libogg0 (>= 1.1.0)
+
+Package: x11-apps
+Architecture: amd64
+Version: 7.7+8build2
+APT-ID: 5988
+Source: x11-apps
+Source-Version: 7.7+8build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libpng16-16 (>= 1.6.2-1), libsm6, libx11-6, libxaw7 (>= 2:1.0.14), libxcursor1 (>> 1.1.2), libxext6, libxft2 (>> 2.1.1), libxkbfile1 (>= 1:1.1.0), libxmu6 (>= 2:1.1.3), libxmuu1 (>= 2:1.1.3), libxrender1, libxt6 (>= 1:1.1.0), man-db
+Suggests: mesa-utils
+Recommends: xbitmaps
+Conflicts: bitmap, oclock, transset, x11perf, xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+Replaces: bitmap, oclock, transset, x11perf, xbase-clients (<= 1:7.2.ds2-3), xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+
+Package: mount
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 4659
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libmount1 (>= 2.37.2), libselinux1 (>= 3.1~), libsmartcols1 (>= 2.33)
+Suggests: nfs-common
+
+Package: libayatana-ido3-0.4-0
+Architecture: amd64
+Version: 0.9.1-1
+APT-ID: 1703
+Multi-Arch: same
+Source: ayatana-ido
+Source-Version: 0.9.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.23.0), libglib2.0-0 (>= 2.67.1), libgtk-3-0 (>= 3.21.4), libpango-1.0-0 (>= 1.20.0), libpangocairo-1.0-0 (>= 1.14.0)
+Breaks: ayatana-indicator-datetime (<< 0.9.0), ayatana-indicator-display (<< 0.9.0), ayatana-indicator-keyboard (<< 0.9.0), ayatana-indicator-messages (<< 0.9.0), ayatana-indicator-notifications (<< 0.9.0), ayatana-indicator-power (<< 0.9.0), ayatana-indicator-session (<< 0.9.0), ayatana-indicator-sound (<< 0.9.0)
+
+Package: libestr0
+Architecture: amd64
+Version: 0.1.10-2.1build3
+APT-ID: 2162
+Multi-Arch: same
+Source: libestr
+Source-Version: 0.1.10-2.1build3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libglib2.0-0
+Architecture: amd64
+Version: 2.72.1-1
+APT-ID: 2386
+Multi-Arch: same
+Source: glib2.0
+Source-Version: 2.72.1-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libffi8 (>= 3.4), libmount1 (>= 2.35.2-7~), libpcre3, libselinux1 (>= 3.1~), zlib1g (>= 1:1.2.2)
+Recommends: libglib2.0-data, shared-mime-info, xdg-user-dirs
+Breaks: gimp (<< 2.10.14-3~), glib-networking-tests (<< 2.70.0~), gnome-keyring (<< 40.0-3~), libgirepository-1.0-1 (<< 1.62.0-4~), libgladeui-2-6 (<< 3.22.2), libsoup2.4-tests (<< 2.72.0-3~)
+
+Package: cheese
+Architecture: amd64
+Version: 41.1-1build1
+APT-ID: 179
+Source: cheese
+Source-Version: 41.1-1build1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcanberra-gtk3-0 (>= 0.25), libcheese-gtk25 (= 41.1-1build1), libcheese8 (= 41.1-1build1), libclutter-1.0-0 (>= 1.16), libclutter-gtk-1.0-0 (>= 0.91.8), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.39.90), libgnome-desktop-3-19 (>= 3.17.92), libgstreamer1.0-0 (>= 1.0.0), libgtk-3-0 (>= 3.21.5), cheese-common (>= 41.1-1build1), gnome-video-effects
+Suggests: gnome-video-effects-frei0r
+Recommends: gvfs, yelp
+
+Package: fonts-smc-rachana
+Architecture: all
+Version: 7.0.2-1build1
+APT-ID: 507
+Multi-Arch: foreign
+Source: fonts-smc-rachana
+Source-Version: 7.0.2-1build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+Breaks: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+
+Package: fonts-navilu
+Architecture: all
+Version: 1.2-3
+APT-ID: 476
+Multi-Arch: foreign
+Source: fonts-navilu
+Source-Version: 1.2-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: ubuntu-docs
+Architecture: all
+Version: 22.04.5
+APT-ID: 74529
+Source: ubuntu-docs
+Source-Version: 22.04.5
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: yelp
+Recommends: gnome-user-docs
+
+Package: libdaemon0
+Architecture: amd64
+Version: 0.14-7.1ubuntu3
+APT-ID: 1982
+Multi-Arch: same
+Source: libdaemon
+Source-Version: 0.14-7.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.15)
+
+Package: python3-xdg
+Architecture: all
+Version: 0.27-2
+APT-ID: 5539
+Source: pyxdg
+Source-Version: 0.27-2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+Provides: python3-pyxdg
+
+Package: sound-theme-freedesktop
+Architecture: all
+Version: 0.8-2ubuntu1
+APT-ID: 5678
+Multi-Arch: foreign
+Source: sound-theme-freedesktop
+Source-Version: 0.8-2ubuntu1
+Priority: extra
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-yaml
+Architecture: amd64
+Version: 5.4.1-1ubuntu1
+APT-ID: 5542
+Multi-Arch: allowed
+Source: pyyaml
+Source-Version: 5.4.1-1ubuntu1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.14), libyaml-0-2
+Breaks: libpython-stdlib (<< 2.7.18), python-minimal (<< 2.7.18), python-yaml (<< 5.3.1-2)
+
+Package: dmz-cursor-theme
+Architecture: all
+Version: 0.4.5ubuntu1
+APT-ID: 334
+Source: dmz-cursor-theme
+Source-Version: 0.4.5ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libtss2-sys1
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3900
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tpm-udev, libc6 (>= 2.4), libtss2-mu0 (>= 3.0.1)
+Replaces: libtss2-esys0 (<< 3.0.1-2)
+Breaks: libtss2-esys0 (<< 3.0.1-2)
+
+Package: libjson-glib-1.0-0
+Architecture: amd64
+Version: 1.6.6-1build1
+APT-ID: 2755
+Multi-Arch: same
+Source: json-glib
+Source-Version: 1.6.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libjson-glib-1.0-common (>= 1.6.6-1build1), libc6 (>= 2.4), libglib2.0-0 (>= 2.55.2)
+
+Package: x11-xserver-utils
+Architecture: amd64
+Version: 7.7+9build1
+APT-ID: 5993
+Source: x11-xserver-utils
+Source-Version: 7.7+9build1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libice6 (>= 1:1.0.0), libx11-6, libxaw7 (>= 2:1.0.14), libxcursor1 (>> 1.1.2), libxext6, libxi6, libxmu6 (>= 2:1.1.3), libxmuu1 (>= 2:1.1.3), libxrandr2 (>= 2:1.5.0), libxt6, libxxf86vm1, cpp
+Suggests: nickle, cairo-5c, xorg-docs-core
+Conflicts: iceauth, sessreg, xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xvidtune
+Replaces: iceauth, sessreg, xbase-clients (<< 1:7.3), xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xutils (<< 1:7.2), xvidtune
+Breaks: arandr (<< 0.1.9)
+
+Package: rhythmbox-plugin-alternative-toolbar
+Architecture: all
+Version: 0.20.2-1
+APT-ID: 5604
+Source: rhythmbox-plugin-alternative-toolbar
+Source-Version: 0.20.2-1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend, python3:any, python3-gi, rhythmbox (>= 3.0)
+
+Package: perl-base
+Architecture: amd64
+Version: 5.34.0-3ubuntu1
+APT-ID: 4864
+Essential: yes
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: important
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: libc6 (>= 2.35), libcrypt1 (>= 1:4.1.0), dpkg (>= 1.17.17)
+Suggests: perl, sensible-utils
+Conflicts: defoma (<< 0.11.12), doc-base (<< 0.10.3), mono-gac (<< 2.10.8.1-3), safe-rm (<< 0.8), update-inetd (<< 4.41)
+Replaces: libfile-path-perl (<< 2.18), libfile-temp-perl (<< 0.2311), libio-socket-ip-perl (<< 0.41), libscalar-list-utils-perl (<< 1:1.55), libsocket-perl (<< 2.031), libxsloader-perl (<< 0.30), perl (<< 5.10.1-12), perl-modules (<< 5.20.1-3)
+Breaks: amanda-common (<< 1:3.3.9-2), backuppc (<< 3.3.1-2), bucardo (<< 5.5.0-1.1), debconf (<< 1.5.61), dh-haskell (<< 0.3), intltool (<< 0.51.0-4), kio-perldoc (<< 20.04.1-1), latexml (<< 0.8.4-2), libdevel-mat-dumper-perl (<< 0.42-3), libencode-arabic-perl (<< 14.2-2), libexception-class-perl (<< 1.42), libfile-path-perl (<< 2.18), libfile-spec-perl (<< 3.8000), libfile-temp-perl (<< 0.2311), libio-socket-ip-perl (<< 0.41), libmp3-tag-perl (<< 1.13-1.2), libsbuild-perl (<< 0.67.0-1), libscalar-list-utils-perl (<< 1:1.55), libsocket-perl (<< 2.031), libxsloader-perl (<< 0.30), mailagent (<< 1:3.1-81-2), perl (<< 5.34.0~), perl-modules (<< 5.34.0~), pod2pdf (<< 0.42-5.1), slic3r (<< 1.2.9+dfsg-6.1), slic3r-prusa (<< 1.37.0+dfsg-1.1), texinfo (<< 6.1.0.dfsg.1-8)
+Provides: perlapi-5.34.0, libxsloader-perl (= 0.30), libsocket-perl (= 2.031), libscalar-list-utils-perl (= 1:1.55), libio-socket-ip-perl (= 0.41), libfile-temp-perl (= 0.2311), libfile-path-perl (= 2.18)
+
+Package: fonts-taml
+Architecture: all
+Version: 2:1.4
+APT-ID: 511
+Multi-Arch: foreign
+Source: fonts-taml
+Source-Version: 2:1.4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-lohit-taml, fonts-lohit-taml-classical, fonts-samyak-taml
+Replaces: ttf-tamil-fonts
+Breaks: ttf-tamil-fonts (<< 2:1.0)
+
+Package: libwmf0.2-7-gtk
+Architecture: amd64
+Version: 0.2.12-5ubuntu1
+APT-ID: 4072
+Multi-Arch: same
+Source: libwmf
+Source-Version: 0.2.12-5ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libwmf-0.2-7-gtk (>= 0.2.12-5ubuntu1)
+
+Package: libdbusmenu-glib4
+Architecture: amd64
+Version: 16.04.1+18.10.20180917-0ubuntu8
+APT-ID: 2032
+Multi-Arch: same
+Source: libdbusmenu
+Source-Version: 16.04.1+18.10.20180917-0ubuntu8
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: xserver-xorg-input-wacom
+Architecture: amd64
+Version: 1:1.0.0-3ubuntu1
+APT-ID: 6050
+Source: xf86-input-wacom
+Source-Version: 1:1.0.0-3ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 183), libx11-6, libxi6 (>= 2:1.2.0), libxinerama1 (>= 2:1.1.4), libxrandr2 (>= 2:1.2.0), xorg-input-abi-24, xserver-xorg-core (>= 2:21.1.1)
+Suggests: xinput
+Conflicts: wacom-tools (<< 0.10.0)
+Replaces: wacom-tools (<< 0.10.0)
+Provides: xorg-driver-input
+
+Package: xfonts-utils
+Architecture: amd64
+Version: 1:7.7+6build2
+APT-ID: 6028
+Multi-Arch: foreign
+Source: xfonts-utils
+Source-Version: 1:7.7+6build2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libfontenc1 (>= 1:1.1.4), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), x11-common, xfonts-encodings
+
+Package: libpam0g
+Architecture: amd64
+Version: 1.4.0-11ubuntu2
+APT-ID: 3188
+Multi-Arch: same
+Source: pam
+Source-Version: 1.4.0-11ubuntu2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Replaces: libpam0g-util
+
+Package: libuno-sal3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72798
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+Replaces: uno-libs3, ure (<< 5.0.0~rc2-1)
+Breaks: libreoffice-core (<< 1:4.3.0~), uno-libs3
+
+Package: nano
+Architecture: amd64
+Version: 6.2-1
+APT-ID: 4724
+Source: nano
+Source-Version: 6.2-1
+Priority: standard
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libncursesw6 (>= 6), libtinfo6 (>= 6)
+Suggests: hunspell
+Conflicts: pico
+Replaces: nano-tiny (<< 2.8.6-2), pico
+Breaks: nano-tiny (<< 2.8.6-2)
+
+Package: gir1.2-dbusmenu-glib-0.4
+Architecture: amd64
+Version: 16.04.1+18.10.20180917-0ubuntu8
+APT-ID: 654
+Multi-Arch: same
+Source: libdbusmenu
+Source-Version: 16.04.1+18.10.20180917-0ubuntu8
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libdbusmenu-glib4 (= 16.04.1+18.10.20180917-0ubuntu8), gir1.2-glib-2.0 (>= 0.9.3)
+
+Package: librygel-db-2.6-2
+Architecture: amd64
+Version: 0.40.3-1ubuntu2
+APT-ID: 3622
+Multi-Arch: same
+Source: rygel
+Source-Version: 0.40.3-1ubuntu2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.56.0), librygel-core-2.6-2 (>= 0.40.3), libsqlite3-0 (>= 3.5.9), libunistring2 (>= 0.9.7)
+
+Package: libspa-0.2-modules
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 3719
+Multi-Arch: same
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.2.1.1), libc6 (>= 2.33), libdbus-1-3 (>= 1.9.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5), libsystemd0, libudev1 (>= 183), libwebrtc-audio-processing1
+Replaces: pipewire (<< 0.3.5)
+Breaks: pipewire (<< 0.3.5)
+
+Package: rtkit
+Architecture: amd64
+Version: 0.13-4build2
+APT-ID: 5612
+Source: rtkit
+Source-Version: 0.13-4build2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, dbus, policykit-1, libc6 (>= 2.34), libcap2 (>= 1:2.10), libdbus-1-3 (>= 1.9.14), libsystemd0
+
+Package: fonts-noto-cjk
+Architecture: all
+Version: 1:20220127+repack1-1
+APT-ID: 477
+Multi-Arch: foreign
+Source: fonts-noto-cjk
+Source-Version: 1:20220127+repack1-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: fonts-noto-cjk-extra
+
+Package: libdns-export1110
+Architecture: amd64
+Version: 1:9.11.19+dfsg-2.1ubuntu3
+APT-ID: 2084
+Source: bind9-libs
+Source-Version: 1:9.11.19+dfsg-2.1ubuntu3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libisc-export1105, libssl3 (>= 3.0.0~~alpha1)
+
+Package: libreoffice-ogltrans
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72690
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: extra
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-impress (>= 1:6.2.0~beta1~)
+
+Package: libbrotli1
+Architecture: amd64
+Version: 1.0.9-2build6
+APT-ID: 1793
+Multi-Arch: same
+Source: brotli
+Source-Version: 1.0.9-2build6
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: gnome-video-effects
+Architecture: all
+Version: 0.5.0-1ubuntu1
+APT-ID: 861
+Source: gnome-video-effects
+Source-Version: 0.5.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gstreamer1.0-plugins-good
+Suggests: gnome-video-effects-extra, gnome-video-effects-frei0r
+
+Package: gnome-shell-extension-ubuntu-dock
+Architecture: all
+Version: 72~ubuntu5.22.04.1
+APT-ID: 71873
+Source: gnome-shell-extension-ubuntu-dock
+Source-Version: 72~ubuntu5.22.04.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-shell (<< 43), gnome-shell (>= 40), dconf-gsettings-backend | gsettings-backend
+Replaces: gnome-shell-extension-dashtodock
+
+Package: xserver-xephyr
+Architecture: amd64
+Version: 2:21.1.3-2ubuntu2.1
+APT-ID: 74553
+Source: xorg-server
+Source-Version: 2:21.1.3-2ubuntu2.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-common (>= 2:21.1.3-2ubuntu2.1), libaudit1 (>= 1:2.2.1), libbsd0 (>= 0.7.0), libc6 (>= 2.35), libepoxy0 (>= 1.0), libgcrypt20 (>= 1.9.0), libgl1, libpixman-1-0 (>= 0.30.0), libselinux1 (>= 3.1~), libsystemd0, libudev1 (>= 183), libunwind8, libx11-6, libx11-xcb1 (>= 2:1.7.5), libxau6 (>= 1:1.0.9), libxcb-icccm4 (>= 0.4.1), libxcb-image0 (>= 0.2.1), libxcb-keysyms1 (>= 0.4.0), libxcb-randr0 (>= 1.1), libxcb-render-util0, libxcb-render0, libxcb-shape0, libxcb-shm0 (>= 1.10), libxcb-util1 (>= 0.4.0), libxcb-xkb1, libxcb-xv0 (>= 1.2), libxcb1 (>= 1.8), libxdmcp6, libxfont2 (>= 1:2.0.1), libxshmfence1
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Provides: xserver
+
+Package: nautilus-sendto
+Architecture: amd64
+Version: 3.8.6-4
+APT-ID: 4728
+Source: nautilus-sendto
+Source-Version: 3.8.6-4
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.30.0)
+Enhances: evince, nautilus
+
+Package: fonts-smc-uroob
+Architecture: all
+Version: 2.0.2-1
+APT-ID: 510
+Multi-Arch: foreign
+Source: fonts-smc-uroob
+Source-Version: 2.0.2-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: grub-common
+Architecture: amd64
+Version: 2.06-2ubuntu7
+APT-ID: 898
+Multi-Arch: foreign
+Source: grub2
+Source-Version: 2.06-2ubuntu7
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.36), libefiboot1 (>= 37), libefivar1 (>= 37), libfreetype6 (>= 2.2.1), libfuse3-3 (>= 3.2.3), liblzma5 (>= 5.1.1alpha+20120614), debconf (>= 0.5) | debconf-2.0, gettext-base, lsb-base (>= 3.0-6)
+Suggests: multiboot-doc, grub-emu, mtools, xorriso (>= 0.5.6.pl00), desktop-base (>= 4.0.6), console-setup
+Recommends: os-prober (>= 1.33)
+Conflicts: init-select
+Replaces: grub-coreboot (<< 2.00-4), grub-efi (<< 1.99-1), grub-efi-amd64 (<< 2.00-4), grub-efi-ia32 (<< 2.00-4), grub-efi-ia64 (<< 2.00-4), grub-ieee1275 (<< 2.00-4), grub-linuxbios (<< 1.96+20080831-1), grub-pc (<< 2.00-4), grub-yeeloong (<< 2.00-4), init-select
+Breaks: apport (<< 2.1.1), friendly-recovery (<< 0.2.13), lupin-support (<< 0.55), mdadm (<< 2.6.7-2)
+
+Package: libgtk-3-0
+Architecture: amd64
+Version: 3.24.33-1ubuntu2
+APT-ID: 72409
+Multi-Arch: same
+Source: gtk+3.0
+Source-Version: 3.24.33-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adwaita-icon-theme, hicolor-icon-theme, shared-mime-info, libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.35.1), libc6 (>= 2.34), libcairo-gobject2 (>= 1.14.0), libcairo2 (>= 1.14.0), libcolord2 (>= 0.1.10), libcups2 (>= 2.3~b6), libepoxy0 (>= 1.4.3), libfontconfig1 (>= 2.12.6), libfribidi0 (>= 0.19.7), libgdk-pixbuf-2.0-0 (>= 2.40.0), libglib2.0-0 (>= 2.59.0), libharfbuzz0b (>= 2.2.0), libpango-1.0-0 (>= 1.45.5), libpangocairo-1.0-0 (>= 1.44.0), libpangoft2-1.0-0 (>= 1.44.0), libwayland-client0 (>= 1.20.0), libwayland-cursor0 (>= 1.14.91), libwayland-egl1 (>= 1.15.0), libx11-6 (>= 2:1.4.99.1), libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxinerama1 (>= 2:1.1.4), libxkbcommon0 (>= 0.5.0), libxrandr2 (>= 2:1.5.0), libgtk-3-common (>= 3.24.33-1ubuntu2)
+Suggests: gvfs
+Recommends: libgtk-3-bin, librsvg2-common
+Provides: gtk3-binver-3.0.0
+
+Package: anacron
+Architecture: amd64
+Version: 2.3-31ubuntu2
+APT-ID: 20
+Source: anacron
+Source-Version: 2.3-31ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debianutils, lsb-base (>= 3.0-10), libc6 (>= 2.34)
+Suggests: default-mta | mail-transport-agent, rsyslog | system-log-daemon, powermgmt-base
+Recommends: cron | cron-daemon
+
+Package: bind9-libs
+Architecture: amd64
+Version: 1:9.18.1-1ubuntu1.2
+APT-ID: 71719
+Multi-Arch: same
+Source: bind9
+Source-Version: 1:9.18.1-1ubuntu1.2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libjson-c5 (>= 0.15), libkrb5-3 (>= 1.6.dfsg.2), liblmdb0 (>= 0.9.7), libmaxminddb0 (>= 1.3.0), libnghttp2-14 (>= 1.12.0), libssl3 (>= 3.0.0~~alpha1), libuv1 (>= 1.34.2), libxml2 (>= 2.7.4), zlib1g (>= 1:1.1.4)
+Replaces: bind-libs (<< 1:9.13.6~)
+Breaks: bind-libs (<< 1:9.13.6~)
+
+Package: libpaper-utils
+Architecture: amd64
+Version: 1.1.28build2
+APT-ID: 3200
+Multi-Arch: foreign
+Source: libpaper
+Source-Version: 1.1.28build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpaper1
+Replaces: libpaper1 (<< 1.1.10), libpaperg (<< 1.1.9)
+
+Package: libdrm-amdgpu1
+Architecture: amd64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2091
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28), libdrm2 (>= 2.4.108)
+
+Package: mime-support
+Architecture: all
+Version: 3.66
+APT-ID: 4647
+Multi-Arch: foreign
+Source: mime-support
+Source-Version: 3.66
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: mailcap, media-types
+
+Package: simple-scan
+Architecture: amd64
+Version: 42.0-1
+APT-ID: 5665
+Source: simple-scan
+Source-Version: 42.0-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: default-dbus-session-bus | dbus-session-bus, xdg-utils, dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcairo2 (>= 1.4.10), libcolord2 (>= 0.1.10), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.43.92), libgtk-3-0 (>= 3.21.5), libgusb2 (>= 0.2.2), libhandy-1-0 (>= 1.5.0), libpackagekit-glib2-18 (>= 0.9.4), libsane1 (>= 1.0.27), libwebp7, libwebpmux3, zlib1g (>= 1:1.1.4)
+
+Package: libgtk-4-1
+Architecture: amd64
+Version: 4.6.6+ds-0ubuntu1
+APT-ID: 72414
+Multi-Arch: same
+Source: gtk4
+Source-Version: 4.6.6+ds-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adwaita-icon-theme, hicolor-icon-theme, shared-mime-info, libc6 (>= 2.34), libcairo-gobject2 (>= 1.14.0), libcairo-script-interpreter2 (>= 1.14.0), libcairo2 (>= 1.14.0), libcolord2 (>= 0.1.10), libcups2 (>= 2.0), libepoxy0 (>= 1.4.3), libfontconfig1 (>= 2.12.6), libfribidi0 (>= 0.19.7), libgdk-pixbuf-2.0-0 (>= 2.30.1), libglib2.0-0 (>= 2.70.0), libgraphene-1.0-0 (>= 1.9.4), libharfbuzz0b (>= 2.2.0), libjpeg8 (>= 8c), libpango-1.0-0 (>= 1.50.3), libpangocairo-1.0-0 (>= 1.50.0), libpangoft2-1.0-0 (>= 1.50.0), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3), libwayland-client0 (>= 1.20.0), libwayland-egl1 (>= 1.20.0), libx11-6 (>= 2:1.4.99.1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxinerama1 (>= 2:1.1.4), libxkbcommon0 (>= 0.5.0), libxrandr2 (>= 2:1.5.0), libgtk-4-common (>= 4.6.6+ds-0ubuntu1)
+Suggests: gvfs, libgtk-4-media-gstreamer | libgtk-4-media-ffmpeg
+Recommends: libgtk-4-bin, iso-codes, librsvg2-common (>= 2.52.0)
+Replaces: libgtk-4-0 (<< 4.0.0)
+Breaks: libgtk-4-0 (<< 4.0.0)
+Provides: gtk4-binver-4.0.0
+
+Package: gtk2-engines-pixbuf
+Architecture: amd64
+Version: 2.24.33-2ubuntu2
+APT-ID: 940
+Multi-Arch: same
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libcairo2 (>= 1.6.4-6.1), libgdk-pixbuf-2.0-0 (>= 2.22.1), libglib2.0-0 (>= 2.27.3)
+
+Package: printer-driver-pnm2ppa
+Architecture: amd64
+Version: 1.13+nondbs-0ubuntu9
+APT-ID: 4973
+Source: pnm2ppa
+Source-Version: 1.13+nondbs-0ubuntu9
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), debconf (>= 0.5) | debconf-2.0, ghostscript
+Suggests: magicfilter | apsfilter
+Conflicts: pbm2ppa
+Replaces: pnm2ppa (<< 1.13-3~)
+Breaks: pnm2ppa (<< 1.13-3~)
+
+Package: accountsservice
+Architecture: amd64
+Version: 22.07.5-2ubuntu1.3
+APT-ID: 71694
+Source: accountsservice
+Source-Version: 22.07.5-2ubuntu1.3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus (>= 1.9.18), libaccountsservice0 (= 22.07.5-2ubuntu1.3), libc6 (>= 2.34), libglib2.0-0 (>= 2.63.5), libpolkit-gobject-1-0 (>= 0.99)
+Suggests: gnome-control-center
+Recommends: default-logind | logind
+
+Package: dconf-gsettings-backend
+Architecture: amd64
+Version: 0.40.0-3
+APT-ID: 273
+Multi-Arch: same
+Source: dconf
+Source-Version: 0.40.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-service (<< 0.40.0-3.1~), dconf-service (>= 0.40.0-3), libdconf1 (= 0.40.0-3), libc6 (>= 2.14), libglib2.0-0 (>= 2.55.2)
+Provides: gsettings-backend
+
+Package: cups-core-drivers
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71758
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-daemon (>= 2.4.1op1-1ubuntu4.1), cups-filters-core-drivers, libcups2 (= 2.4.1op1-1ubuntu4.1), libc6 (>= 2.34)
+Recommends: avahi-daemon
+Replaces: cups-server-common (<< 2.1.0-7~)
+Breaks: cups-server-common (<< 2.1.0-7~)
+
+Package: libdrm-radeon1
+Architecture: amd64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2096
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.4.108)
+
+Package: libusbmuxd6
+Architecture: amd64
+Version: 2.0.2-3build2
+APT-ID: 3969
+Multi-Arch: same
+Source: libusbmuxd
+Source-Version: 2.0.2-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libplist3 (>= 2.2.0)
+Breaks: usbmuxd (<< 1.1.1~git20181007.f838cf6-1)
+
+Package: libdrm2
+Architecture: amd64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2097
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libdrm-common (>= 2.4.110-1ubuntu1), libc6 (>= 2.33)
+
+Package: fonts-telu
+Architecture: all
+Version: 2:1.3
+APT-ID: 512
+Multi-Arch: foreign
+Source: fonts-telu
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-lohit-telu, fonts-telu-extra, fonts-teluguvijayam
+Replaces: ttf-telugu-fonts
+Breaks: ttf-telugu-fonts (<< 2:1.0)
+
+Package: aptdaemon-data
+Architecture: all
+Version: 1.1.1+bzr982-0ubuntu39
+APT-ID: 54
+Source: aptdaemon
+Source-Version: 1.1.1+bzr982-0ubuntu39
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: python-aptdaemon-gtk (<= 0.41+bzr580-0ubuntu1)
+
+Package: libwhoopsie0
+Architecture: amd64
+Version: 0.2.77
+APT-ID: 4064
+Multi-Arch: same
+Source: whoopsie
+Source-Version: 0.2.77
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.32)
+
+Package: libyelp0
+Architecture: amd64
+Version: 42.1-1
+APT-ID: 4305
+Multi-Arch: same
+Source: yelp
+Source-Version: 42.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.14), libglib2.0-0 (>= 2.67.4), libgtk-3-0 (>= 3.13.3), liblzma5 (>= 5.1.1alpha+20120614), libsqlite3-0 (>= 3.5.9), libwebkit2gtk-4.0-37 (>= 2.19.2), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25)
+
+Package: ibus-gtk
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 1098
+Multi-Arch: same
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.67.3), libgtk2.0-0 (>= 2.24.5-4), libibus-1.0-5 (>= 1.5.21), libpango-1.0-0 (>= 1.14.0)
+
+Package: libgtkmm-3.0-1v5
+Architecture: amd64
+Version: 3.24.5-1build1
+APT-ID: 2539
+Multi-Arch: same
+Source: gtkmm3.0
+Source-Version: 3.24.5-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatkmm-1.6-1v5 (>= 2.28.2), libc6 (>= 2.14), libcairomm-1.0-1v5 (>= 1.12.0), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.35.5), libglib2.0-0 (>= 2.41.1), libglibmm-2.4-1v5 (>= 2.66.2), libgtk-3-0 (>= 3.24.0), libpangomm-1.4-1v5 (>= 2.46.2), libsigc++-2.0-0v5 (>= 2.6.1), libstdc++6 (>= 5.2)
+Conflicts: libgtkmm-3.0-1
+Replaces: libgtkmm-3.0-1
+
+Package: samba-libs
+Architecture: amd64
+Version: 2:4.15.9+dfsg-0ubuntu0.2
+APT-ID: 74395
+Multi-Arch: same
+Source: samba
+Source-Version: 2:4.15.9+dfsg-0ubuntu0.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libacl1 (>= 2.2.23), libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libbsd0 (>= 0.5.0), libc6 (>= 2.34), libcap2 (>= 1:2.10), libcups2 (>= 1.7.0), libgnutls30 (>= 3.7.3), libjansson4 (>= 2.1), libldap-2.5-0 (>= 2.5.4), libldb2 (>= 2:2.4.4), libpam0g (>= 0.99.7.1), libpopt0 (>= 1.14), libpython3.10 (>= 3.10.0), libtalloc2 (>= 2.3.3~), libtdb1 (>= 1.4.4~), libtevent0 (>= 0.11.0~), libtirpc3 (>= 1.0.2), libwbclient0 (= 2:4.15.9+dfsg-0ubuntu0.2), python3-ldb (>= 2:2.1.0), python3-talloc (>= 2.3.1~), zlib1g (>= 1:1.1.4)
+Replaces: libndr-standard0 (<< 2:4.0.9), libsamba-credentials0 (<< 2:4.0.9), libsamba-hostconfig0 (<< 2:4.0.9), libsamba-util0 (<< 2:4.0.9), samba (<< 2:4.3.3+dfsg-1)
+Breaks: libndr-standard0 (<< 2:4.0.9), libsamba-credentials0 (<< 2:4.0.9), libsamba-hostconfig0 (<< 2:4.0.9), libsamba-util0 (<< 2:4.0.9), sssd-ad-common (<< 2.3.0)
+
+Package: libsensors5
+Architecture: amd64
+Version: 1:3.6.0-7ubuntu1
+APT-ID: 3661
+Multi-Arch: same
+Source: lm-sensors
+Source-Version: 1:3.6.0-7ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsensors-config, libc6 (>= 2.33)
+Suggests: lm-sensors
+
+Package: fonts-khmeros-core
+Architecture: all
+Version: 5.0-9ubuntu1
+APT-ID: 453
+Source: fonts-khmeros
+Source-Version: 5.0-9ubuntu1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-khmeros (<< 5.0-5ubuntu1), ttf-khmeros (<< 5.0-4), ttf-khmeros-core (<< 5.0-5ubuntu1)
+Breaks: fonts-khmeros (<< 5.0-5ubuntu1), ttf-khmeros (<< 5.0-4), ttf-khmeros-core (<< 5.0-5ubuntu1)
+
+Package: liblmdb0
+Architecture: amd64
+Version: 0.9.24-1build2
+APT-ID: 2828
+Multi-Arch: same
+Source: lmdb
+Source-Version: 0.9.24-1build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libavahi-glib1
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1693
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-common3 (= 0.8-5ubuntu5), libc6 (>= 2.2.5), libglib2.0-0 (>= 2.16.0)
+
+Package: sudo
+Architecture: amd64
+Version: 1.9.9-1ubuntu2
+APT-ID: 5716
+Source: sudo
+Source-Version: 1.9.9-1ubuntu2
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), zlib1g (>= 1:1.2.0.2), libpam-modules, lsb-base
+Conflicts: sudo-ldap
+Replaces: sudo-ldap
+
+Package: gnome-control-center
+Architecture: amd64
+Version: 1:41.7-0ubuntu0.22.04.5
+APT-ID: 71859
+Source: gnome-control-center
+Source-Version: 1:41.7-0ubuntu0.22.04.5
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaccountsservice0 (>= 0.6.40), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.14.0), libcheese-gtk25 (>= 3.18.0), libcheese8 (>= 3.28.0), libcolord-gtk1 (>= 0.1.24), libcolord2 (>= 1.4.3), libcups2 (>= 1.7.0), libepoxy0 (>= 1.0), libfontconfig1 (>= 2.12.6), libgcr-base-3-1 (>= 3.8.0), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.70.0), libgnome-bluetooth13 (>= 3.18.2), libgnome-desktop-3-19 (>= 3.33.4), libgnutls30 (>= 3.7.0), libgoa-1.0-0b (>= 3.25.3), libgoa-backend-1.0-1 (>= 3.25.3), libgsound0 (>= 1.0.1), libgtk-3-0 (>= 3.22.20), libgtop-2.0-11 (>= 2.22.3), libgudev-1.0-0 (>= 232), libhandy-1-0 (>= 1.2.0), libibus-1.0-5 (>= 1.5.2), libkrb5-3 (>= 1.8+dfsg), libmm-glib0 (>= 1.6.8), libnm0 (>= 1.24.0), libnma0 (>= 1.8.0), libpango-1.0-0 (>= 1.37.2), libpangocairo-1.0-0 (>= 1.18.0), libpolkit-gobject-1-0 (>= 0.103), libpulse-mainloop-glib0 (>= 13.0~), libpulse0 (>= 13.0~), libpwquality1 (>= 1.1.0), libsecret-1-0 (>= 0.7), libsmbclient (>= 2:4.0.3+dfsg1), libsnapd-glib1 (>= 1.58), libudisks2-0 (>= 2.0.0), libupower-glib3 (>= 0.99.8), libwacom9 (>= 2.0.0), libwayland-server0 (>= 1.0.2), libwhoopsie-preferences0 (>= 0.9), libx11-6, libxi6 (>= 2:1.2.99.4), libxml2 (>= 2.7.4), accountsservice, apg, colord (>= 0.1.30), desktop-file-utils, gedit-common, gnome-control-center-data (<< 1:42~), gnome-control-center-data (>= 1:41.7-0ubuntu0.22.04.5), gnome-desktop3-data, gnome-remote-desktop (>= 42), gnome-settings-daemon (>= 41), gsettings-desktop-schemas (>= 42~), language-selector-gnome (>= 0.179~), system-config-printer (>= 1.4), whoopsie-preferences
+Suggests: gnome-software | gnome-packagekit, gnome-user-share, realmd, gstreamer1.0-pulseaudio, libcanberra-gtk-module, libcanberra-gtk3-module, x11-xserver-utils
+Recommends: cups-pk-helper, gnome-online-accounts (>= 3.25.3), gnome-user-docs, gkbd-capplet, ibus, iso-codes, libcanberra-pulse, policykit-1, network-manager-gnome (>= 0.9.8), cracklib-runtime, pulseaudio-module-bluetooth, power-profiles-daemon, gnome-control-center-faces, rygel | rygel-tracker
+Breaks: gnome-shell (<< 3.37.92)
+
+Package: libxcb-randr0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4150
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1 (>= 1.9.2)
+
+Package: ubuntu-standard
+Architecture: amd64
+Version: 1.481
+APT-ID: 5900
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: standard
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: bind9-dnsutils, busybox-static, cpio, cron, dmidecode, dosfstools, ed, file, ftp, hdparm, info, libpam-systemd, logrotate, lshw, lsof, man-db, media-types, nftables, parted, pciutils, psmisc, rsync, strace, time, usbutils, wget, xz-utils
+Recommends: apparmor, bash-completion, command-not-found, friendly-recovery, iptables, iputils-tracepath, irqbalance, manpages, mtr-tiny, nano, ntfs-3g, openssh-client, plymouth, plymouth-theme-ubuntu-text, tcpdump, telnet, ufw, update-manager-core, uuid-runtime
+
+Package: fonts-liberation2
+Architecture: all
+Version: 2.1.5-1
+APT-ID: 458
+Multi-Arch: foreign
+Source: fonts-liberation2
+Source-Version: 2.1.5-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: ubuntu-desktop-minimal
+Architecture: amd64
+Version: 1.481
+APT-ID: 5884
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: optional
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: alsa-base, alsa-utils, anacron, at-spi2-core, bc, ca-certificates, dmz-cursor-theme, fonts-dejavu-core, fonts-freefont-ttf, foomatic-db-compressed-ppds, gdm3, ghostscript-x, gnome-control-center, gnome-menus, gnome-session-canberra, gnome-settings-daemon, gnome-shell, gnome-shell-extension-appindicator, gnome-shell-extension-desktop-icons-ng, gnome-shell-extension-ubuntu-dock, gstreamer1.0-alsa, gstreamer1.0-packagekit, gstreamer1.0-plugins-base-apps, gstreamer1.0-pulseaudio, inputattach, language-selector-common, language-selector-gnome, libatk-adaptor, libnotify-bin, libsasl2-modules, libu2f-udev, nautilus, openprinting-ppds, printer-driver-pnm2ppa, pulseaudio, rfkill, software-properties-gtk, spice-vdagent, ubuntu-drivers-common, ubuntu-release-upgrader-gtk, ubuntu-session, ubuntu-settings, unzip, update-manager, update-notifier, wireless-tools, wpasupplicant, xdg-user-dirs, xdg-user-dirs-gtk, xkb-data, xorg, yelp, zenity, zip
+Recommends: acpi-support, apport-gtk, appstream, apt-config-icons-hidpi, avahi-autoipd, avahi-daemon, bluez, bluez-cups, brltty, cups, cups-bsd, cups-client, cups-filters, dirmngr, eog, evince, file-roller, fonts-indic, fonts-kacst-one, fonts-khmeros-core, fonts-lao, fonts-liberation, fonts-liberation2, fonts-lklug-sinhala, fonts-noto-cjk, fonts-noto-color-emoji, fonts-opensymbol, fonts-sil-abyssinica, fonts-sil-padauk, fonts-thai-tlwg, fonts-tibetan-machine, fonts-ubuntu, fwupd, fwupd-signed, gamemode, gedit, gir1.2-gmenu-3.0, gnome-accessibility-themes, gnome-bluetooth, gnome-calculator, gnome-characters, gnome-disk-utility, gnome-font-viewer, gnome-initial-setup, gnome-keyring, gnome-logs, gnome-power-manager, gnome-remote-desktop, gnome-system-monitor, gnome-terminal, gpg-agent, gsettings-ubuntu-schemas, gvfs-fuse, hplip, ibus, ibus-gtk, ibus-gtk3, ibus-table, im-config, kerneloops, laptop-detect, libglib2.0-bin, libnss-mdns, libpam-fprintd, libpam-gnome-keyring, libpam-sss, libproxy1-plugin-gsettings, libproxy1-plugin-networkmanager, libwmf0.2-7-gtk, memtest86+, mousetweaks, nautilus-sendto, nautilus-share, network-manager, network-manager-config-connectivity-ubuntu, network-manager-openvpn-gnome, network-manager-pptp-gnome, orca, packagekit, pcmciautils, plymouth-theme-spinner, policykit-desktop-privileges, printer-driver-brlaser, printer-driver-c2esp, printer-driver-foo2zjs, printer-driver-m2300w, printer-driver-min12xxw, printer-driver-ptouch, printer-driver-pxljr, printer-driver-sag-gdi, printer-driver-splix, pulseaudio-module-bluetooth, seahorse, snapd, speech-dispatcher, system-config-printer, systemd-oomd, ubuntu-docs, ubuntu-report, ubuntu-wallpapers, whoopsie, xcursor-themes, xdg-desktop-portal-gnome, xdg-desktop-portal-gtk, xdg-utils, yaru-theme-gnome-shell, yaru-theme-gtk, yaru-theme-icon, yaru-theme-sound
+Provides: packagekit-installer
+
+Package: gnome-terminal-data
+Architecture: all
+Version: 3.44.0-1ubuntu1
+APT-ID: 816
+Source: gnome-terminal
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: gnome-terminal
+
+Package: mscompress
+Architecture: amd64
+Version: 0.4-9build1
+APT-ID: 4663
+Source: mscompress
+Source-Version: 0.4-9build1
+Priority: extra
+Section: otherosfs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libc-bin
+Architecture: amd64
+Version: 2.35-0ubuntu3.1
+APT-ID: 72274
+Essential: yes
+Multi-Arch: foreign
+Source: glibc
+Source-Version: 2.35-0ubuntu3.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>> 2.35), libc6 (<< 2.36)
+Suggests: manpages
+
+Package: python3-update-manager
+Architecture: all
+Version: 1:22.04.9
+APT-ID: 5520
+Source: update-manager
+Source-Version: 1:22.04.9
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-apt (>= 0.8.5~), python3-distro-info, python3-distupgrade, lsb-release
+Suggests: python3-launchpadlib
+Replaces: update-manager-core (<< 1:0.163)
+Breaks: python3-distupgrade (<< 1:16.10.10), update-manager-core (<< 1:0.163)
+
+Package: pkexec
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 4916
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: polkitd (= 0.105-33), libc6 (>= 2.34), libglib2.0-0 (>= 2.35.9), libpam0g (>= 0.99.7.1), libpolkit-agent-1-0 (= 0.105-33), libpolkit-gobject-1-0 (= 0.105-33)
+Replaces: policykit-1 (<< 0.105-32~)
+Breaks: policykit-1 (<< 0.105-32~)
+
+Package: libadwaita-1-0
+Architecture: amd64
+Version: 1.1.0-1ubuntu2
+APT-ID: 1579
+Multi-Arch: same
+Source: libadwaita-1
+Source-Version: 1.1.0-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libcairo2 (>= 1.10.0), libfribidi0 (>= 0.19.2), libglib2.0-0 (>= 2.67.3), libgraphene-1.0-0 (>= 1.5.4), libgtk-4-1 (>= 4.5.0), libpango-1.0-0 (>= 1.14.0), gsettings-desktop-schemas
+
+Package: libparted-fs-resize0
+Architecture: amd64
+Version: 3.4-2build1
+APT-ID: 3205
+Multi-Arch: same
+Source: parted
+Source-Version: 3.4-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libparted2 (= 3.4-2build1)
+Suggests: libparted-dev
+
+Package: yelp
+Architecture: amd64
+Version: 42.1-1
+APT-ID: 6072
+Source: yelp
+Source-Version: 42.1-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libbz2-1.0, libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.67.4), libgtk-3-0 (>= 3.13.3), libhandy-1-0 (>= 1.5.0), libharfbuzz0b (>= 0.6.0), libjavascriptcoregtk-4.0-18 (>= 2.35.90), liblzma5 (>= 5.1.1alpha+20110809), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libsoup2.4-1 (>= 2.4.0), libsqlite3-0 (>= 3.5.9), libwebkit2gtk-4.0-37 (>= 2.19.2), libxml2 (>= 2.6.27), libxslt1.1 (>= 1.1.25), libyelp0 (= 42.1-1), dconf-gsettings-backend | gsettings-backend, python3-distro, yelp-xsl (>= 41~), man-db (>= 2.5.1-1)
+Recommends: docbook-xml
+
+Package: usbmuxd
+Architecture: amd64
+Version: 1.1.1-2build2
+APT-ID: 5929
+Source: usbmuxd
+Source-Version: 1.1.1-2build2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libimobiledevice6 (>= 1.3.0), libplist3 (>= 2.2.0), libusb-1.0-0 (>= 2:1.0.22), adduser
+
+Package: fonts-smc-raghumalayalamsans
+Architecture: all
+Version: 2.2.1-1
+APT-ID: 508
+Multi-Arch: foreign
+Source: fonts-smc-raghumalayalamsans
+Source-Version: 2.2.1-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+Breaks: fonts-smc (<< 6.1~), ttf-malayalam-fonts
+
+Package: netplan.io
+Architecture: amd64
+Version: 0.104-0ubuntu2.1
+APT-ID: 74209
+Multi-Arch: foreign
+Source: netplan.io
+Source-Version: 0.104-0ubuntu2.1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.70.0), libnetplan0 (= 0.104-0ubuntu2.1), libsystemd0 (>= 243), iproute2, python3, python3-yaml, python3-netifaces, systemd (>= 248~)
+Suggests: network-manager | wpasupplicant, openvswitch-switch
+Conflicts: netplan
+Replaces: nplan (<< 0.34~)
+Breaks: network-manager (<< 1.2.2-1), nplan (<< 0.34~)
+Provides: nplan
+
+Package: libtotem-plparser-common
+Architecture: all
+Version: 3.26.6-1build1
+APT-ID: 3881
+Multi-Arch: foreign
+Source: totem-pl-parser
+Source-Version: 3.26.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libtotem-plparser17, libtotem-plparser18 (<< 3.10.5-1)
+Breaks: libtotem-plparser17, libtotem-plparser18 (<< 3.10.5-1)
+
+Package: language-pack-gnome-en
+Architecture: all
+Version: 1:22.04+20220721
+APT-ID: 72016
+Source: language-pack-gnome-en
+Source-Version: 1:22.04+20220721
+Priority: optional
+Section: translations
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: language-pack-gnome-en-base (>= 1:22.04+20220721), language-pack-en
+Pre-Depends: dpkg (>= 1.16.1)
+Replaces: language-pack-en (<< 1:22.04+20220721), language-pack-en-base (<< 1:22.04+20220721), language-pack-gnome-en (<< 1:22.04+20220721), language-pack-gnome-en-base, language-pack-kde-en (<< 1:22.04+20220721), language-pack-kde-en-base (<< 1:22.04+20220721)
+
+Package: plymouth-label
+Architecture: amd64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 4925
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: plymouth (= 0.9.5+git20211018-1ubuntu3), libc6 (>= 2.4), libcairo2 (>= 1.14.0), libglib2.0-0 (>= 2.12.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libplymouth5 (>= 0.9.4git20190712), fonts-ubuntu, fontconfig-config
+Replaces: plymouth-themes (<< 0.9.2-5~)
+Breaks: plymouth-themes (<< 0.9.2-5~)
+
+Package: transmission-common
+Architecture: all
+Version: 3.00-2ubuntu2
+APT-ID: 5866
+Source: transmission
+Source-Version: 3.00-2ubuntu2
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: transmission-gtk (<< 2.10-1)
+Breaks: transmission-gtk (<< 2.10-1)
+
+Package: python3-apport
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 74302
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.0~), python3-apt (>= 0.7.9), python3-httplib2, python3-problem-report (>= 0.94), lsb-release, python3-launchpadlib, python3-yaml
+Recommends: apport
+
+Package: keyboard-configuration
+Architecture: all
+Version: 1.205ubuntu3
+APT-ID: 1170
+Multi-Arch: foreign
+Source: console-setup
+Source-Version: 1.205ubuntu3
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: liblocale-gettext-perl
+Pre-Depends: debconf (>= 1.5.34)
+Replaces: console-setup (<< 1.47), console-setup-mini (<< 1.47)
+Breaks: console-setup (<< 1.71), console-setup-mini (<< 1.47)
+
+Package: libao-common
+Architecture: all
+Version: 1.2.2+20180113-1.1ubuntu3
+APT-ID: 1589
+Multi-Arch: foreign
+Source: libao
+Source-Version: 1.2.2+20180113-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Conflicts: libao2
+Replaces: libao4 (<< 1.0.0-2)
+Breaks: libao4 (<< 1.0.0-2)
+
+Package: libfreerdp-client2-2
+Architecture: amd64
+Version: 2.6.1+dfsg1-3ubuntu2.2
+APT-ID: 72348
+Multi-Arch: same
+Source: freerdp2
+Source-Version: 2.6.1+dfsg1-3ubuntu2.2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.18), libc6 (>= 2.28), libcups2 (>= 1.7.0), libfreerdp2-2 (= 2.6.1+dfsg1-3ubuntu2.2), libpulse0 (>= 0.99.1), libusb-1.0-0 (>= 2:1.0.19), libwinpr2-2 (>= 2.4.1+dfsg1)
+Replaces: libfreerdp-client2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+Breaks: libfreerdp-client2 (<< 2.0.0~git20170725.1.1648deb+dfsg1-1~)
+
+Package: gir1.2-rsvg-2.0
+Architecture: amd64
+Version: 2.52.5+dfsg-3
+APT-ID: 744
+Multi-Arch: same
+Source: librsvg
+Source-Version: 2.52.5+dfsg-3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop (>= 0.10.8), gir1.2-gdkpixbuf-2.0 (>= 2.23.5-2) | libgdk-pixbuf2.0-dev (>= 2.23.5-2), gir1.2-glib-2.0 (>= 0.10.8), librsvg2-2 (>= 2.52.5)
+
+Package: grilo-plugins-0.3-base
+Architecture: amd64
+Version: 0.3.14-1ubuntu2
+APT-ID: 896
+Multi-Arch: same
+Source: grilo-plugins
+Source-Version: 0.3.14-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libarchive13 (>= 3.0.4), libc6 (>= 2.7), libglib2.0-0 (>= 2.61.2), libgoa-1.0-0b (>= 3.17.92), libgom-1.0-0 (>= 0.4), libgrilo-0.3-0 (>= 0.3.8), libjson-glib-1.0-0 (>= 1.5.2), liblua5.3-0, libmediaart-2.0-0 (>= 1.9.0), libsoup2.4-1 (>= 2.41.90), libsqlite3-0 (>= 3.5.9), libtotem-plparser18 (>= 3.26.0), libtracker-sparql-3.0-0 (>= 3.1.1), libxml2 (>= 2.7.4)
+Suggests: grilo-plugins-0.3-extra
+Replaces: grilo-plugins-0.2
+Breaks: grilo-plugins-0.2
+
+Package: libattr1
+Architecture: amd64
+Version: 1:2.5.1-1build1
+APT-ID: 1675
+Multi-Arch: same
+Source: attr
+Source-Version: 1:2.5.1-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: python3-keyring
+Architecture: all
+Version: 23.5.0-1
+APT-ID: 5285
+Source: python-keyring
+Source-Version: 23.5.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-importlib-metadata (>= 3.6), python3-jeepney (>= 0.4.2), python3-secretstorage (>= 3.2), python3:any
+Suggests: gir1.2-secret-1, gnome-keyring, libkf5wallet-bin, python3-dbus, python3-gi, python3-keyrings.alt
+Breaks: python3-keyrings.alt (<< 3.1), python3-wheel (<< 0.27)
+
+Package: libmythes-1.2-0
+Architecture: amd64
+Version: 2:1.2.4-4build1
+APT-ID: 2989
+Multi-Arch: same
+Source: mythes
+Source-Version: 2:1.2.4-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5)
+
+Package: fonts-nakula
+Architecture: all
+Version: 1.0-4
+APT-ID: 475
+Multi-Arch: foreign
+Source: fonts-nakula
+Source-Version: 1.0-4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: fonts-sahadeva
+Replaces: ttf-devanagari-fonts
+Breaks: ttf-devanagari-fonts (<< 2:1.0)
+
+Package: gtk-update-icon-cache
+Architecture: amd64
+Version: 3.24.33-1ubuntu2
+APT-ID: 71897
+Multi-Arch: foreign
+Source: gtk+3.0
+Source-Version: 3.24.33-1ubuntu2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.40.0), libglib2.0-0 (>= 2.57.2)
+Replaces: libgtk-3-bin (<< 3.20.6-1), libgtk2.0-bin (<< 2.24.30-2)
+Breaks: libgtk-3-bin (<< 3.20.6-1), libgtk2.0-bin (<< 2.24.30-2)
+
+Package: libxcb-xkb1
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4180
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxcb1
+
+Package: liblouisutdml-data
+Architecture: all
+Version: 2.10.0-4
+APT-ID: 2839
+Multi-Arch: foreign
+Source: liblouisutdml
+Source-Version: 2.10.0-4
+Priority: extra
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-commandnotfound
+Architecture: all
+Version: 22.04.0
+APT-ID: 5188
+Source: command-not-found
+Source-Version: 22.04.0
+Priority: standard
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-release, python3-apt, python3-gdbm, python3:any
+Replaces: command-not-found (<< 0.3ubuntu7)
+
+Package: efibootmgr
+Architecture: amd64
+Version: 17-1ubuntu2
+APT-ID: 366
+Multi-Arch: foreign
+Source: efibootmgr
+Source-Version: 17-1ubuntu2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.33), libefiboot1 (>= 37), libefivar1 (>= 37), libpopt0 (>= 1.14)
+
+Package: libdazzle-1.0-0
+Architecture: amd64
+Version: 3.44.0-1
+APT-ID: 1996
+Multi-Arch: same
+Source: libdazzle
+Source-Version: 3.44.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.10.0), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.59.0), libgtk-3-0 (>= 3.24), libpango-1.0-0 (>= 1.37.5), libdazzle-common
+
+Package: libvisio-0.1-1
+Architecture: amd64
+Version: 0.1.7-1build5
+APT-ID: 4008
+Multi-Arch: same
+Source: libvisio
+Source-Version: 0.1.7-1build5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), librevenge-0.0-0, libstdc++6 (>= 11), libxml2 (>= 2.9.2+zdfsg1-4)
+Breaks: libvisio-tools (<< 0.0.15~)
+
+Package: libaudit1
+Architecture: amd64
+Version: 1:3.0.7-1build1
+APT-ID: 1679
+Multi-Arch: same
+Source: audit
+Source-Version: 1:3.0.7-1build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit-common (>= 1:3.0.7-1build1), libc6 (>= 2.33), libcap-ng0 (>= 0.7.9)
+
+Package: gnome-session-canberra
+Architecture: amd64
+Version: 0.30-10ubuntu1
+APT-ID: 802
+Source: libcanberra
+Source-Version: 0.30-10ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.2), libglib2.0-0 (>= 2.16.0), libgtk-3-0 (>= 3.0.0)
+Replaces: libcanberra-gtk0 (<< 0.28-5)
+Breaks: libcanberra-gtk0 (<< 0.28-5)
+
+Package: libkmod2
+Architecture: amd64
+Version: 29-1ubuntu1
+APT-ID: 2774
+Multi-Arch: same
+Source: kmod
+Source-Version: 29-1ubuntu1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), liblzma5 (>= 5.1.1alpha+20120614), libssl3 (>= 3.0.0~~alpha1), libzstd1 (>= 1.4.0)
+
+Package: libclone-perl
+Architecture: amd64
+Version: 0.45-1build3
+APT-ID: 1895
+Source: libclone-perl
+Source-Version: 0.45-1build3
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34)
+
+Package: libboost-regex1.74.0
+Architecture: amd64
+Version: 1.74.0-14ubuntu3
+APT-ID: 1777
+Multi-Arch: same
+Source: boost1.74
+Source-Version: 1.74.0-14ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), libstdc++6 (>= 11)
+Provides: libboost-regex1.74.0-icu70
+
+Package: libedata-cal-2.0-1
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72328
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcamel-1.2-63 (>= 3.19.92), libebackend-1.2-10 (= 3.44.4-0ubuntu1), libecal-2.0-1 (>= 3.39.3), libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libglib2.0-0 (>= 2.70.0), libical3 (>= 3.0.7), libsoup2.4-1 (>= 2.42), libsqlite3-0 (>= 3.5.9)
+Conflicts: evolution-data-server (<< 3.26.3), evolution-data-server-tests (<< 3.26.3), evolution-ews (<< 3.26.3)
+
+Package: libxext6
+Architecture: amd64
+Version: 2:1.3.4-1build1
+APT-ID: 4202
+Multi-Arch: same
+Source: libxext
+Source-Version: 2:1.3.4-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0)
+
+Package: initramfs-tools
+Architecture: all
+Version: 0.140ubuntu13
+APT-ID: 1125
+Multi-Arch: foreign
+Source: initramfs-tools
+Source-Version: 0.140ubuntu13
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: initramfs-tools-core (= 0.140ubuntu13), linux-base
+Suggests: bash-completion
+Conflicts: linux-initramfs-tool, usplash (<< 0.5.50)
+Breaks: e2fsprogs (<< 1.42.13), initscripts (<< 2.88dsf-59.3~), netplan.io (<< 0.37), upstart
+Provides: linux-initramfs-tool
+
+Package: libhyphen0
+Architecture: amd64
+Version: 2.8.8-7build2
+APT-ID: 2610
+Multi-Arch: same
+Source: hyphen
+Source-Version: 2.8.8-7build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libgtk-3-common
+Architecture: all
+Version: 3.24.33-1ubuntu2
+APT-ID: 72411
+Multi-Arch: foreign
+Source: gtk+3.0
+Source-Version: 3.24.33-1ubuntu2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Recommends: libgtk-3-0
+Replaces: libgtk-3-dev (<< 3.24.30-3~)
+Breaks: libgtk-3-dev (<< 3.24.30-3~)
+
+Package: linux-modules-extra-5.15.0-43-generic
+Architecture: amd64
+Version: 5.15.0-43.46
+APT-ID: 73883
+Source: linux
+Source-Version: 5.15.0-43.46
+Priority: optional
+Section: kernel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: linux-image-5.15.0-43-generic | linux-image-unsigned-5.15.0-43-generic, wireless-regdb
+
+Package: libisl23
+Architecture: amd64
+Version: 0.24-2build1
+APT-ID: 2705
+Multi-Arch: same
+Source: isl
+Source-Version: 0.24-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgmp10 (>= 2:6.2.1+dfsg)
+Replaces: libisl-dbg (<< 0.19)
+Breaks: libisl-dbg (<< 0.19)
+
+Package: libc6-dbg
+Architecture: amd64
+Version: 2.35-0ubuntu3.1
+APT-ID: 72278
+Multi-Arch: same
+Source: glibc
+Source-Version: 2.35-0ubuntu3.1
+Priority: extra
+Section: debug
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (= 2.35-0ubuntu3.1)
+Provides: libc6-dbgsym, libc-dbg
+
+Package: gir1.2-soup-2.4
+Architecture: amd64
+Version: 2.74.2-3
+APT-ID: 747
+Multi-Arch: same
+Source: libsoup2.4
+Source-Version: 2.74.2-3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.5), libsoup-gnome2.4-1 (= 2.74.2-3), libsoup2.4-1 (= 2.74.2-3)
+Provides: gir1.2-soupgnome-2.4 (= 2.74.2-3)
+
+Package: librygel-renderer-2.6-2
+Architecture: amd64
+Version: 0.40.3-1ubuntu2
+APT-ID: 3623
+Multi-Arch: same
+Source: rygel
+Source-Version: 0.40.3-1ubuntu2
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgee-0.8-2 (>= 0.8.3), libglib2.0-0 (>= 2.56.0), libgupnp-1.2-1 (>= 1.1.2), libgupnp-av-1.0-3 (>= 0.12.8), librygel-core-2.6-2 (>= 0.40.3), libsoup2.4-1 (>= 2.44.0)
+
+Package: fonts-lohit-beng-assamese
+Architecture: all
+Version: 2.91.5-2
+APT-ID: 460
+Multi-Arch: foreign
+Source: fonts-lohit-beng-assamese
+Source-Version: 2.91.5-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-lohit-beng-bengali
+Replaces: ttf-bengali-fonts (<= 1:0.5.12)
+Breaks: ttf-bengali-fonts (<= 1:0.5.12)
+
+Package: python3-rfc3339
+Architecture: all
+Version: 1.1-3
+APT-ID: 5458
+Source: pyrfc3339
+Source-Version: 1.1-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-tz, python3:any
+
+Package: hplip-data
+Architecture: all
+Version: 3.21.12+dfsg0-1
+APT-ID: 970
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-distro, xz-utils, python3:any
+Suggests: hplip
+
+Package: libreoffice-style-yaru
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72696
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: libreoffice-common
+Enhances: libreoffice-core
+Provides: libreoffice-style
+
+Package: tpm-udev
+Architecture: all
+Version: 0.6
+APT-ID: 5862
+Multi-Arch: foreign
+Source: tpm-udev
+Source-Version: 0.6
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, udev
+
+Package: parted
+Architecture: amd64
+Version: 3.4-2build1
+APT-ID: 4853
+Multi-Arch: foreign
+Source: parted
+Source-Version: 3.4-2build1
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libparted2 (= 3.4-2build1), libreadline8 (>= 6.0), libtinfo6 (>= 6)
+Suggests: parted-doc
+
+Package: libhogweed6
+Architecture: amd64
+Version: 3.7.3-1build2
+APT-ID: 2587
+Multi-Arch: same
+Source: nettle
+Source-Version: 3.7.3-1build2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgmp10 (>= 2:6.2.1+dfsg), libnettle8
+
+Package: nautilus
+Architecture: amd64
+Version: 1:42.2-0ubuntu1
+APT-ID: 74206
+Source: nautilus
+Source-Version: 1:42.2-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bubblewrap, desktop-file-utils (>= 0.7), gsettings-desktop-schemas (>= 3.8.0), gvfs (>= 1.3.2), libglib2.0-data, libnautilus-extension1a (= 1:42.2-0ubuntu1), nautilus-data (= 1:42.2-0ubuntu1), shared-mime-info (>= 0.50), tracker (>= 3), tracker-miner-fs (>= 3), tracker-extract (>= 3), libatk1.0-0 (>= 1.32.0), libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.14.0), libdbusmenu-glib4 (>= 0.4.2), libgdk-pixbuf-2.0-0 (>= 2.25.2), libgexiv2-2 (>= 0.14.0), libglib2.0-0 (>= 2.70.0), libgnome-autoar-0-0 (>= 0.4.0), libgnome-desktop-3-19 (>= 3.17.92), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.0.0), libgtk-3-0 (>= 3.23.1), libhandy-1-0 (>= 1.5.0), libpango-1.0-0 (>= 1.44.6), libselinux1 (>= 3.1~), libtracker-sparql-3.0-0 (>= 3.1.1), libunity9 (>= 3.4.6)
+Suggests: eog, evince | pdf-viewer, gnome-sushi, nautilus-extension-brasero, nautilus-sendto, totem | mp3-decoder, xdg-user-dirs
+Recommends: gvfs-backends, libgdk-pixbuf2.0-bin, librsvg2-common
+Replaces: nautilus-data (<< 1:3.38.1-1ubuntu1), totem (<< 3.31.91-1)
+Breaks: gedit (<< 40), nautilus-data (<< 1:3.38.1-1ubuntu1), totem (<< 3.31.91-1), unity (<< 7.5.1+21.10.20210601.1-0ubuntu1)
+
+Package: xdg-utils
+Architecture: all
+Version: 1.1.3-4.1ubuntu3~22.04.1
+APT-ID: 74551
+Multi-Arch: foreign
+Source: xdg-utils
+Source-Version: 1.1.3-4.1ubuntu3~22.04.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: libfile-mimeinfo-perl, libnet-dbus-perl, libx11-protocol-perl, x11-utils, x11-xserver-utils
+
+Package: media-player-info
+Architecture: all
+Version: 24-2
+APT-ID: 4638
+Multi-Arch: foreign
+Source: media-player-info
+Source-Version: 24-2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: udev
+
+Package: cpio
+Architecture: amd64
+Version: 2.13+dfsg-7
+APT-ID: 217
+Multi-Arch: foreign
+Source: cpio
+Source-Version: 2.13+dfsg-7
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: libarchive1
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Replaces: cpio-mt
+
+Package: dirmngr
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71778
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, gpgconf (= 2.2.27-3ubuntu2.1), lsb-base (>= 3.2-13), init-system-helpers (>= 1.52), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgnutls30 (>= 3.7.2), libgpg-error0 (>= 1.42), libksba8 (>= 1.3.5), libldap-2.5-0 (>= 2.5.4), libnpth0 (>= 0.90)
+Suggests: dbus-user-session, libpam-systemd, pinentry-gnome3, tor
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+Replaces: gnupg2 (<< 2.1.10-2)
+Breaks: gnupg2 (<< 2.1.10-2)
+Enhances: gpg, gpgsm, squid
+
+Package: libpeas-1.0-0
+Architecture: amd64
+Version: 1.32.0-1
+APT-ID: 3235
+Multi-Arch: same
+Source: libpeas
+Source-Version: 1.32.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpeas-common, libc6 (>= 2.14), libgirepository-1.0-1 (>= 1.39.0), libglib2.0-0 (>= 2.38.0), libgtk-3-0 (>= 3.21.5), libpython3.10 (>= 3.10.0)
+
+Package: linux-headers-5.15.0-43
+Architecture: all
+Version: 5.15.0-43.46
+APT-ID: 73258
+Multi-Arch: foreign
+Source: linux
+Source-Version: 5.15.0-43.46
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: coreutils
+
+Package: linux-headers-5.15.0-48
+Architecture: all
+Version: 5.15.0-48.54
+APT-ID: 73267
+Multi-Arch: foreign
+Source: linux
+Source-Version: 5.15.0-48.54
+Priority: optional
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: coreutils
+
+Package: python3-aptdaemon.gtk3widgets
+Architecture: all
+Version: 1.1.1+bzr982-0ubuntu39
+APT-ID: 5148
+Source: aptdaemon
+Source-Version: 1.1.1+bzr982-0ubuntu39
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.2~), python3-aptdaemon (= 1.1.1+bzr982-0ubuntu39), python3-gi, gir1.2-gtk-3.0, gir1.2-vte-2.91, aptdaemon-data
+Conflicts: python-aptdaemon-gtk (<< 0.41+bzr582-0ubuntu1)
+Replaces: python-aptdaemon-gtk (<< 0.41+bzr582-0ubuntu1)
+
+Package: libcanberra-pulse
+Architecture: amd64
+Version: 0.30-10ubuntu1
+APT-ID: 1846
+Multi-Arch: same
+Source: libcanberra
+Source-Version: 0.30-10ubuntu1
+Priority: optional
+Section: libdevel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcanberra0 (= 0.30-10ubuntu1), libpulse0 (>= 0.99.1), pulseaudio | pipewire-pulse
+
+Package: fonts-tlwg-kinnari-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 520
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-kinnari (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-kinnari (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-kinnari (<< 1:0.6.2-2)
+
+Package: gir1.2-goa-1.0
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 692
+Multi-Arch: same
+Source: gnome-online-accounts
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.3), libgoa-1.0-0b (>= 3.35.90)
+
+Package: libcogl-pango20
+Architecture: amd64
+Version: 1.22.8-3build1
+APT-ID: 1915
+Multi-Arch: same
+Source: cogl
+Source-Version: 1.22.8-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.10), libcogl20 (= 1.22.8-3build1), libglib2.0-0 (>= 2.37.3), libpango-1.0-0 (>= 1.28.3-5), libpangocairo-1.0-0 (>= 1.28.3-5)
+Recommends: libcogl-common
+
+Package: bc
+Architecture: amd64
+Version: 1.07.1-3build1
+APT-ID: 91
+Multi-Arch: foreign
+Source: bc
+Source-Version: 1.07.1-3build1
+Priority: optional
+Section: math
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libreadline8 (>= 6.0)
+
+Package: ubuntu-wallpapers-jammy
+Architecture: all
+Version: 22.04.4-0ubuntu1
+APT-ID: 5902
+Source: ubuntu-wallpapers
+Source-Version: 22.04.4-0ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: dc
+Architecture: amd64
+Version: 1.07.1-3build1
+APT-ID: 271
+Multi-Arch: foreign
+Source: bc
+Source-Version: 1.07.1-3build1
+Priority: optional
+Section: math
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: ed
+Architecture: amd64
+Version: 1.18-1
+APT-ID: 365
+Multi-Arch: foreign
+Source: ed
+Source-Version: 1.18-1
+Priority: standard
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libksba8
+Architecture: amd64
+Version: 1.6.0-2build1
+APT-ID: 2787
+Multi-Arch: same
+Source: libksba
+Source-Version: 1.6.0-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgpg-error0 (>= 1.14)
+
+Package: colord-data
+Architecture: all
+Version: 1.4.6-1
+APT-ID: 207
+Source: colord
+Source-Version: 1.4.6-1
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: colord (<< 1.2.0-2)
+Breaks: colord (<< 1.2.0-2)
+
+Package: libgphoto2-6
+Architecture: amd64
+Version: 2.5.27-1build2
+APT-ID: 2476
+Multi-Arch: same
+Source: libgphoto2
+Source-Version: 2.5.27-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcurl4 (>= 7.16.2), libexif12 (>= 0.6.21-1~), libgd3 (>= 2.1.0~alpha~), libgphoto2-port12 (>= 2.5.10), libjpeg8 (>= 8c), libltdl7 (>= 2.4.6), libxml2 (>= 2.7.4)
+Suggests: gphoto2 (>= 2.5.7)
+Recommends: libgphoto2-l10n (>= 2.5.27-1build2)
+
+Package: cracklib-runtime
+Architecture: amd64
+Version: 2.9.6-3.4build4
+APT-ID: 231
+Multi-Arch: foreign
+Source: cracklib2
+Source-Version: 2.9.6-3.4build4
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: file, libcrack2 (>= 2.9.6-3.4build4), libc6 (>= 2.34)
+Recommends: wamerican | wordlist
+
+Package: libv4lconvert0
+Architecture: amd64
+Version: 1.22.1-2build1
+APT-ID: 3986
+Multi-Arch: same
+Source: v4l-utils
+Source-Version: 1.22.1-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libjpeg8 (>= 8c)
+Replaces: libv4l-0 (<< 0.8.5-4)
+Breaks: libv4l-0 (<< 0.8.5-4)
+
+Package: nautilus-data
+Architecture: all
+Version: 1:42.2-0ubuntu1
+APT-ID: 74207
+Multi-Arch: foreign
+Source: nautilus
+Source-Version: 1:42.2-0ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: libharfbuzz0b
+Architecture: amd64
+Version: 2.7.4-1ubuntu3.1
+APT-ID: 72423
+Multi-Arch: same
+Source: harfbuzz
+Source-Version: 2.7.4-1ubuntu3.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libfreetype6 (>= 2.9.1), libglib2.0-0 (>= 2.31.8), libgraphite2-3 (>= 1.2.2)
+Conflicts: libharfbuzz0, libharfbuzz0a
+Replaces: libharfbuzz0, libharfbuzz0a
+
+Package: nautilus-share
+Architecture: amd64
+Version: 0.7.3-2ubuntu6
+APT-ID: 4729
+Source: nautilus-share
+Source-Version: 0.7.3-2ubuntu6
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: nautilus (>= 2.10), gnome-session-bin, apturl, libc6 (>= 2.33), libglib2.0-0 (>= 2.35.9), libgtk-3-0 (>= 3.0.0), libnautilus-extension1a (>= 3.14.1)
+Suggests: samba (>= 3.0.27a)
+Enhances: nautilus
+
+Package: libxml-twig-perl
+Architecture: all
+Version: 1:3.52-1
+APT-ID: 4234
+Source: libxml-twig-perl
+Source-Version: 1:3.52-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libxml-parser-perl
+Suggests: libunicode-map8-perl, libunicode-string-perl, xml-twig-tools
+Recommends: libhtml-parser-perl, libtext-iconv-perl, libtie-ixhash-perl, libwww-perl, libxml-xpathengine-perl | libxml-xpath-perl
+
+Package: fonts-freefont-ttf
+Architecture: all
+Version: 20120503-10build1
+APT-ID: 440
+Multi-Arch: foreign
+Source: fonts-freefont
+Source-Version: 20120503-10build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: librasqal3
+Architecture: amd64
+Version: 0.9.33-0.2ubuntu1
+APT-ID: 3369
+Multi-Arch: same
+Source: rasqal
+Source-Version: 0.9.33-0.2ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgmp10 (>= 2:6.2.1+dfsg), libmhash2 (>= 0.9.9.9), libpcre3, libraptor2-0 (>= 2.0.14), libuuid1 (>= 2.16)
+Suggests: rasqal-utils
+
+Package: libtext-iconv-perl
+Architecture: amd64
+Version: 1.7-7build3
+APT-ID: 3831
+Source: libtext-iconv-perl
+Source-Version: 1.7-7build3
+Priority: required
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), perl-base, perlapi-5.34.0
+
+Package: fonts-smc-anjalioldlipi
+Architecture: all
+Version: 7.1.2-2
+APT-ID: 499
+Multi-Arch: foreign
+Source: fonts-smc-anjalioldlipi
+Source-Version: 7.1.2-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-smc (<< 6.1~)
+Breaks: fonts-smc (<< 6.1~)
+
+Package: libprotobuf23
+Architecture: amd64
+Version: 3.12.4-1ubuntu7
+APT-ID: 3310
+Multi-Arch: same
+Source: protobuf
+Source-Version: 3.12.4-1ubuntu7
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+Breaks: cura-engine (<< 1:3.3.0-2.1+b1), libarcus3 (<< 3.3.0-2)
+
+Package: systemd-sysv
+Architecture: amd64
+Version: 249.11-0ubuntu3.4
+APT-ID: 79619
+Multi-Arch: foreign
+Source: systemd
+Source-Version: 249.11-0ubuntu3.4
+Priority: required
+Section: admin
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: systemd (= 249.11-0ubuntu3.4)
+Pre-Depends: systemd
+Recommends: libpam-systemd, libnss-systemd
+Conflicts: file-rc, systemd-shim, sysvinit-core
+Replaces: sysvinit-core
+
+Package: libsecret-common
+Architecture: all
+Version: 0.20.5-2
+APT-ID: 3652
+Multi-Arch: foreign
+Source: libsecret
+Source-Version: 0.20.5-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-cups
+Architecture: amd64
+Version: 2.0.1-5build1
+APT-ID: 5197
+Multi-Arch: same
+Source: python-cups
+Source-Version: 2.0.1-5build1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.34), libcups2 (>= 1.7.0)
+Provides: python3.10-cups
+
+Package: fonts-dejavu-core
+Architecture: all
+Version: 2.37-2build1
+APT-ID: 433
+Multi-Arch: foreign
+Source: fonts-dejavu
+Source-Version: 2.37-2build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: cron
+Architecture: amd64
+Version: 3.0pl1-137ubuntu3
+APT-ID: 235
+Multi-Arch: foreign
+Source: cron
+Source-Version: 3.0pl1-137ubuntu3
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), debianutils (>= 1.7), sensible-utils, adduser, lsb-base (>= 3.0-10), libpam-runtime (>= 1.0.1-11)
+Pre-Depends: init-system-helpers (>= 1.54~)
+Suggests: anacron (>= 2.0-1), logrotate, checksecurity, default-mta | mail-transport-agent
+Provides: cron-daemon
+
+Package: libcheese8
+Architecture: amd64
+Version: 41.1-1build1
+APT-ID: 1882
+Multi-Arch: same
+Source: cheese
+Source-Version: 41.1-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libclutter-1.0-0 (>= 1.16), libclutter-gst-3.0-0 (>= 3.0.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.39.90), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), cheese-common (>= 41.1-1build1), gstreamer1.0-plugins-base (>= 0.11.0), gstreamer1.0-plugins-good (>= 0.11.0), gstreamer1.0-x
+
+Package: libical3
+Architecture: amd64
+Version: 3.0.14-1build1
+APT-ID: 2624
+Multi-Arch: same
+Source: libical3
+Source-Version: 3.0.14-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: tzdata, libc6 (>= 2.34), libdb5.3, libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.41.1), libicu70 (>= 70.1-1~), libstdc++6 (>= 5.2)
+
+Package: libgtk-3-bin
+Architecture: amd64
+Version: 3.24.33-1ubuntu2
+APT-ID: 72410
+Multi-Arch: foreign
+Source: gtk+3.0
+Source-Version: 3.24.33-1ubuntu2
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gtk-update-icon-cache, libc6 (>= 2.34), libcairo2 (>= 1.14.0), libgdk-pixbuf-2.0-0 (>= 2.40.0), libglib2.0-0 (>= 2.57.2), libgtk-3-0 (>= 3.24.33-1ubuntu2), libgtk-3-common (>= 3.24.33-1ubuntu2)
+Replaces: gtk-3-examples (<< 3.24.13)
+Breaks: gtk-3-examples (<< 3.24.13)
+
+Package: apt-utils
+Architecture: amd64
+Version: 2.4.7
+APT-ID: 71711
+Source: apt
+Source-Version: 2.4.7
+Priority: required
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: apt (= 2.4.7), libapt-pkg6.0 (>= 2.4.7), libc6 (>= 2.34), libdb5.3, libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+
+Package: libgnome-bluetooth13
+Architecture: amd64
+Version: 3.34.5-8
+APT-ID: 2426
+Multi-Arch: same
+Source: gnome-bluetooth
+Source-Version: 3.34.5-8
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.29), libcanberra-gtk3-0 (>= 0.25), libcanberra0 (>= 0.2), libglib2.0-0 (>= 2.59.0), libgtk-3-0 (>= 3.19.12), libnotify4 (>= 0.7.0), libudev1 (>= 196), gnome-bluetooth-common (>= 3.34.5-8)
+
+Package: fonts-lklug-sinhala
+Architecture: all
+Version: 0.6-4
+APT-ID: 459
+Multi-Arch: foreign
+Source: fonts-lklug-sinhala
+Source-Version: 0.6-4
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: python3-idna
+Architecture: all
+Version: 3.3-1
+APT-ID: 5264
+Multi-Arch: foreign
+Source: python-idna
+Source-Version: 3.3-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: unzip
+Architecture: amd64
+Version: 6.0-26ubuntu3
+APT-ID: 5913
+Multi-Arch: foreign
+Source: unzip
+Source-Version: 6.0-26ubuntu3
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34)
+Suggests: zip
+
+Package: libwebkit2gtk-4.0-37
+Architecture: amd64
+Version: 2.36.7-0ubuntu0.22.04.1
+APT-ID: 72828
+Multi-Arch: same
+Source: webkit2gtk
+Source-Version: 2.36.7-0ubuntu0.22.04.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libjavascriptcoregtk-4.0-18 (= 2.36.7-0ubuntu0.22.04.1), gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, bubblewrap (>= 0.3.1), xdg-dbus-proxy, libatk1.0-0 (>= 2.11.6), libc6 (>= 2.35), libcairo2 (>= 1.15.12), libegl1, libenchant-2-2 (>= 2.2.3), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.9.1), libgcc-s1 (>= 4.0), libgcrypt20 (>= 1.9.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.70.0), libglx0, libgstreamer-gl1.0-0 (>= 1.14.0), libgstreamer-plugins-base1.0-0 (>= 1.20.0), libgstreamer1.0-0 (>= 1.20.0), libgtk-3-0 (>= 3.23.0), libharfbuzz-icu0 (>= 0.9.18), libharfbuzz0b (>= 1.4.2), libhyphen0 (>= 2.7.1), libicu70 (>= 70.1-1~), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libmanette-0.2-0 (>= 0.1.2), libnotify4 (>= 0.7.0), libopengl0, libopenjp2-7 (>= 2.2.0), libpango-1.0-0 (>= 1.14.0), libpng16-16 (>= 1.6.2-1), libseccomp2 (>= 0.0.0~20120605), libsecret-1-0 (>= 0.7), libsoup2.4-1 (>= 2.69.90), libsqlite3-0 (>= 3.7.15), libstdc++6 (>= 11), libsystemd0, libtasn1-6 (>= 4.14), libwayland-client0 (>= 1.20.0), libwayland-egl1 (>= 1.15.0), libwayland-server0 (>= 1.2.0), libwebp7, libwebpdemux2, libwoff1 (>= 1.0.0), libx11-6, libxcomposite1 (>= 1:0.4.5), libxdamage1 (>= 1:1.1), libxml2 (>= 2.8), libxslt1.1 (>= 1.1.25), zlib1g (>= 1:1.2.0)
+Suggests: gstreamer1.0-libav, gstreamer1.0-plugins-bad, gstreamer1.0-alsa
+Recommends: gstreamer1.0-gl, libgl1-mesa-dri, xdg-desktop-portal-gtk
+Breaks: evolution (<< 3.34.1)
+
+Package: gnupg-utils
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71876
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.5.0), libbz2-1.0, libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libksba8 (>= 1.3.5), libreadline8 (>= 6.0), zlib1g (>= 1:1.1.4)
+Recommends: gpg, gpg-agent, gpgconf, gpgsm
+Replaces: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+
+Package: memtest86+
+Architecture: amd64
+Version: 5.31b+dfsg-4
+APT-ID: 4641
+Source: memtest86+
+Source-Version: 5.31b+dfsg-4
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0
+Suggests: grub-pc | grub-legacy, memtest86, memtester, mtools
+
+Package: fonts-pagul
+Architecture: all
+Version: 1.0-8
+APT-ID: 486
+Multi-Arch: foreign
+Source: fonts-pagul
+Source-Version: 1.0-8
+Priority: extra
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gir1.2-totemplparser-1.0
+Architecture: amd64
+Version: 3.26.6-1build1
+APT-ID: 750
+Multi-Arch: same
+Source: totem-pl-parser
+Source-Version: 3.26.6-1build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.10.7-1~), libtotem-plparser18 (>= 3.26.5)
+Conflicts: gir1.2-totem-plparser-1.0
+Replaces: gir1.2-totem-plparser-1.0
+Provides: gir1.2-totem-plparser-1.0
+
+Package: python3-olefile
+Architecture: all
+Version: 0.46-3
+APT-ID: 5344
+Source: olefile
+Source-Version: 0.46-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any
+
+Package: bluez
+Architecture: amd64
+Version: 5.64-0ubuntu1
+APT-ID: 136
+Multi-Arch: foreign
+Source: bluez
+Source-Version: 5.64-0ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.31.8), libreadline8 (>= 6.0), libudev1 (>= 196), kmod, udev, lsb-base, dbus
+Suggests: pulseaudio-module-bluetooth
+Conflicts: bluez-audio (<= 3.36-3), bluez-utils (<= 3.36-3)
+Replaces: bluez-audio (<= 3.36-3), bluez-input, bluez-network, bluez-serial, bluez-utils (<= 3.36-3), udev (<< 170-1)
+Breaks: udev (<< 170-1)
+
+Package: gnome-terminal
+Architecture: amd64
+Version: 3.44.0-1ubuntu1
+APT-ID: 815
+Multi-Arch: foreign
+Source: gnome-terminal
+Source-Version: 3.44.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: default-dbus-session-bus | dbus-session-bus, gnome-terminal-data (<< 3.46), gnome-terminal-data (>= 3.44), gsettings-desktop-schemas (>= 0.1.0), python3, python3-gi, gir1.2-glib-2.0, dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.34), libcairo2 (>= 1.2.4), libdconf1 (>= 0.14.0), libgcc-s1 (>= 3.0), libglib2.0-0 (>= 2.52.0), libgtk-3-0 (>= 3.23.0), libpango-1.0-0 (>= 1.14.0), libstdc++6 (>= 4.1.1), libuuid1 (>= 2.16), libvte-2.91-0 (>= 0.68.0), libx11-6
+Recommends: gvfs, nautilus-extension-gnome-terminal, yelp
+Provides: x-terminal-emulator
+
+Package: libpam-cap
+Architecture: amd64
+Version: 1:2.44-1build3
+APT-ID: 3172
+Multi-Arch: same
+Source: libcap2
+Source-Version: 1:2.44-1build3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcap2 (>= 1:2.33), libpam0g (>= 0.99.7.1), libpam-runtime (>= 1.1.3-2~)
+Replaces: libcap2-bin (<< 1:2.22-1.1)
+Breaks: libcap2-bin (<< 1:2.22-1.1)
+
+Package: libblkid1
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 1727
+Multi-Arch: same
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: whoopsie
+Architecture: amd64
+Version: 0.2.77
+APT-ID: 5967
+Source: whoopsie
+Source-Version: 0.2.77
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcurl3-gnutls (>= 7.16.2), libglib2.0-0 (>= 2.32), libwhoopsie0 (= 0.2.77), adduser
+Pre-Depends: sysvinit-utils (>= 2.88dsf-50)
+
+Package: libgnutls30
+Architecture: amd64
+Version: 3.7.3-4ubuntu1.1
+APT-ID: 72396
+Multi-Arch: same
+Source: gnutls28
+Source-Version: 3.7.3-4ubuntu1.1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgmp10 (>= 2:6.2.1+dfsg), libhogweed6 (>= 3.6), libidn2-0 (>= 2.0.0), libnettle8 (>= 3.7~), libp11-kit0 (>= 0.23.18.1), libtasn1-6 (>= 4.14), libunistring2 (>= 0.9.7)
+Suggests: gnutls-bin
+
+Package: libdbusmenu-gtk3-4
+Architecture: amd64
+Version: 16.04.1+18.10.20180917-0ubuntu8
+APT-ID: 2034
+Multi-Arch: same
+Source: libdbusmenu
+Source-Version: 16.04.1+18.10.20180917-0ubuntu8
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libdbusmenu-glib4 (>= 0.5.90), libgdk-pixbuf-2.0-0 (>= 2.22.1-0ubuntu4), libglib2.0-0 (>= 2.37.3), libpango-1.0-0 (>= 1.14.0)
+
+Package: ibus
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 1094
+Multi-Arch: foreign
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: init-system-helpers (>= 1.52), python3:any, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libdconf1 (>= 0.14.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.68.0), libgtk-3-0 (>= 3.21.5), libibus-1.0-5 (>= 1.5.19), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libx11-6, libxfixes3 (>= 1:6.0.0), libxi6 (>= 2:1.2.99.4), adwaita-icon-theme, dconf-cli, ibus-data (= 1.5.26-4), gir1.2-gtk-3.0 (>= 3.8.5), gir1.2-ibus-1.0 (= 1.5.26-4), python3-gi, python3-ibus-1.0 (= 1.5.26-4)
+Suggests: ibus-clutter, ibus-doc
+Recommends: ibus-gtk, ibus-gtk3, ibus-gtk4, im-config
+Replaces: ibus-data (<< 1.5.21-4~exp1)
+Breaks: ibus-anthy (<< 1.5.3-2), ibus-data (<< 1.5.21-4~exp1), ibus-el (<< 0.3.2-2), ibus-googlepinyin (<< 0.1.2-2)
+
+Package: gnome-characters
+Architecture: amd64
+Version: 41.0-4
+APT-ID: 783
+Source: gnome-characters
+Source-Version: 41.0-4
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-gdkpixbuf-2.0, gir1.2-glib-2.0, gir1.2-gnomedesktop-3.0, gir1.2-gtk-3.0 (>= 3.20.0), gir1.2-handy-1 (>= 1.5.90), gir1.2-pango-1.0, gjs (>= 1.49), libglib2.0-bin (>= 2.40.0-3), dconf-gsettings-backend | gsettings-backend, libc6 (>= 2.4), libglib2.0-0 (>= 2.39), libgtk-3-0 (>= 3.20.0), libpango-1.0-0 (>= 1.18.0), libunistring2 (>= 0.9.7)
+Recommends: fonts-noto-color-emoji
+
+Package: libraqm0
+Architecture: amd64
+Version: 0.7.0-4ubuntu1
+APT-ID: 3368
+Multi-Arch: same
+Source: raqm
+Source-Version: 0.7.0-4ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libfreetype6 (>= 2.4.2), libfribidi0 (>= 1.0.0), libharfbuzz0b (>= 2.1.1)
+
+Package: libqqwing2v5
+Architecture: amd64
+Version: 1.3.4-1.1ubuntu3
+APT-ID: 3351
+Multi-Arch: same
+Source: qqwing
+Source-Version: 1.3.4-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5)
+Conflicts: libqqwing2
+Replaces: libqqwing2
+
+Package: fonts-deva
+Architecture: all
+Version: 2:1.3
+APT-ID: 435
+Multi-Arch: foreign
+Source: fonts-deva
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-deva-extra, fonts-gargi, fonts-lohit-deva, fonts-nakula, fonts-sahadeva, fonts-samyak-deva
+Replaces: ttf-devanagari-fonts
+Breaks: ttf-devanagari-fonts (<< 2:1.0)
+
+Package: xfonts-base
+Architecture: all
+Version: 1:1.0.5
+APT-ID: 6025
+Multi-Arch: foreign
+Source: xfonts-base
+Source-Version: 1:1.0.5
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xfonts-utils (>= 1:7.5+2)
+Suggests: xfs | xserver
+Replaces: xfonts-misc
+
+Package: libhandy-1-0
+Architecture: amd64
+Version: 1.6.1-1
+APT-ID: 2572
+Multi-Arch: same
+Source: libhandy-1
+Source-Version: 1.6.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.29), libcairo2 (>= 1.14.0), libfribidi0 (>= 0.19.2), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.59.0), libgtk-3-0 (>= 3.23.1), libpango-1.0-0 (>= 1.14.0)
+
+Package: xorg-docs-core
+Architecture: all
+Version: 1:1.7.1-1.2
+APT-ID: 6040
+Multi-Arch: foreign
+Source: xorg-docs
+Source-Version: 1:1.7.1-1.2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: xorg-docs
+Replaces: xorg-docs (<< 1:1.4-5)
+
+Package: python3-bcrypt
+Architecture: amd64
+Version: 3.2.0-1build1
+APT-ID: 5159
+Source: python-bcrypt
+Source-Version: 3.2.0-1build1
+Priority: extra
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3~), python3-cffi-backend-api-min (<= 9729), python3-cffi-backend-api-max (>= 9729), python3-six (>= 1.4.1), python3:any, libc6 (>= 2.14)
+
+Package: libxvmc1
+Architecture: amd64
+Version: 2:1.0.12-2build2
+APT-ID: 4282
+Multi-Arch: same
+Source: libxvmc
+Source-Version: 2:1.0.12-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6 (>= 2:1.6.0), libxext6, x11-common
+
+Package: libaa1
+Architecture: amd64
+Version: 1.4p5-50build1
+APT-ID: 1567
+Multi-Arch: same
+Source: aalib
+Source-Version: 1.4p5-50build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgpm2 (>= 1.20.7), libncurses6 (>= 6), libslang2 (>= 2.2.4), libtinfo6 (>= 6), libx11-6
+Replaces: aalib1
+Provides: aalib1
+
+Package: gnome-bluetooth
+Architecture: amd64
+Version: 3.34.5-8
+APT-ID: 778
+Source: gnome-bluetooth
+Source-Version: 3.34.5-8
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bluez (>= 5.5), bluez-obexd, udev (>= 154), libc6 (>= 2.34), libglib2.0-0 (>= 2.38.0), libgnome-bluetooth13 (>= 3.12.0), libgtk-3-0 (>= 3.12.0)
+Recommends: gnome-control-center | budgie-control-center | unity-control-center, gvfs-backends
+Conflicts: bluez-gnome
+Breaks: gnome-shell (<< 3.12)
+
+Package: python3-chardet
+Architecture: all
+Version: 4.0.0-1
+APT-ID: 5179
+Multi-Arch: foreign
+Source: chardet
+Source-Version: 4.0.0-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-pkg-resources
+Replaces: python-chardet (<< 3.0.4-6)
+Breaks: python-chardet (<< 3.0.4-6)
+
+Package: unattended-upgrades
+Architecture: all
+Version: 2.8ubuntu1
+APT-ID: 5909
+Source: unattended-upgrades
+Source-Version: 2.8ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, debconf, python3, python3-apt (>= 1.9.6~), python3-dbus, python3-distro-info, ucf, lsb-release, lsb-base, xz-utils
+Suggests: bsd-mailx, default-mta | mail-transport-agent, needrestart, powermgmt-base, python3-gi
+Recommends: systemd-sysv | cron | cron-daemon | anacron
+
+Package: cups
+Architecture: amd64
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71754
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups-client (>= 2.4.1op1-1ubuntu4.1), cups-common (>= 2.4.1op1-1ubuntu4.1), cups-core-drivers (>= 2.4.1op1-1ubuntu4.1), cups-daemon (>= 2.4.1op1-1ubuntu4.1), cups-filters, cups-ppdc, cups-server-common (>= 2.4.1op1-1ubuntu4.1), debconf (>= 0.5) | debconf-2.0, ghostscript, libcups2 (= 2.4.1op1-1ubuntu4.1), poppler-utils, procps, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5), libusb-1.0-0 (>= 2:1.0.16)
+Suggests: cups-bsd, cups-pdf, foomatic-db-compressed-ppds | foomatic-db, smbclient, udev
+Recommends: avahi-daemon, colord
+
+Package: thermald
+Architecture: amd64
+Version: 2.4.9-1ubuntu0.1
+APT-ID: 74433
+Source: thermald
+Source-Version: 2.4.9-1ubuntu0.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.88), libevdev2 (>= 0.9.1), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.37.3), liblzma5 (>= 5.1.1alpha+20120614), libstdc++6 (>= 11), libupower-glib3 (>= 0.99.0), libxml2 (>= 2.7.4), lsb-base (>= 3.0-6)
+
+Package: libao4
+Architecture: amd64
+Version: 1.2.2+20180113-1.1ubuntu3
+APT-ID: 1592
+Multi-Arch: same
+Source: libao
+Source-Version: 1.2.2+20180113-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libao-common
+Suggests: libasound2, libaudio2, libpulse0, libsndio6.1
+Replaces: libao-pulse
+
+Package: idle
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 77374
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3 (>= 3.10.6-1~22.04), python3-tk, idle-python3.10
+Replaces: idle3 (<< 3.6.2-2)
+Breaks: idle3 (<< 3.6.2-2)
+Enhances: python3
+
+Package: idle
+Architecture: all
+Version: 3.10.4-0ubuntu2
+APT-ID: 21726
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3 (>= 3.10.4-0ubuntu2), python3-tk, idle-python3.10
+Replaces: idle3 (<< 3.6.2-2)
+Breaks: idle3 (<< 3.6.2-2)
+Enhances: python3
+
+Package: fonts-tlwg-loma
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 523
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-loma-ttf | fonts-tlwg-loma-otf
+
+Package: libpcre2-32-0
+Architecture: amd64
+Version: 10.39-3ubuntu0.1
+APT-ID: 72502
+Multi-Arch: same
+Source: pcre2
+Source-Version: 10.39-3ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: fonts-tlwg-norasi
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 527
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-norasi-ttf | fonts-tlwg-norasi-otf
+
+Package: libslang2
+Architecture: amd64
+Version: 2.3.2-5build4
+APT-ID: 3677
+Multi-Arch: same
+Source: slang2
+Source-Version: 2.3.2-5build4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35)
+
+Package: aspell-en
+Architecture: all
+Version: 2018.04.16-0-1
+APT-ID: 59
+Multi-Arch: foreign
+Source: aspell-en
+Source-Version: 2018.04.16-0-1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: aspell (>= 0.60.3-2), dictionaries-common (>= 0.49.2)
+Provides: aspell-dictionary
+
+Package: libegl-mesa0
+Architecture: amd64
+Version: 22.0.5-0ubuntu0.1
+APT-ID: 72334
+Multi-Arch: same
+Source: mesa
+Source-Version: 22.0.5-0ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libdrm2 (>= 2.4.109), libexpat1 (>= 2.0.1), libgbm1 (= 22.0.5-0ubuntu0.1), libgcc-s1 (>= 3.4), libglapi-mesa (= 22.0.5-0ubuntu0.1), libstdc++6 (>= 4.1.1), libwayland-client0 (>= 1.20.0), libwayland-server0 (>= 1.15.0), libx11-xcb1 (>= 2:1.7.5), libxcb-dri2-0 (>= 1.8), libxcb-dri3-0 (>= 1.13), libxcb-present0, libxcb-sync1, libxcb-xfixes0, libxcb1 (>= 1.9.2), libxshmfence1
+Provides: libegl-vendor
+
+Package: gcc-11-base
+Architecture: amd64
+Version: 11.2.0-19ubuntu1
+APT-ID: 593
+Multi-Arch: same
+Source: gcc-11
+Source-Version: 11.2.0-19ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: gnat (<< 7)
+
+Package: libtracker-sparql-3.0-0
+Architecture: amd64
+Version: 3.3.0-1
+APT-ID: 3888
+Multi-Arch: same
+Source: tracker
+Source-Version: 3.3.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.55.2), libicu70 (>= 70.1-1~), libjson-glib-1.0-0 (>= 1.5.2), libsoup2.4-1 (>= 2.49.91.1), libsqlite3-0 (>= 3.20.0), libstemmer0d (>= 0+svn527), libxml2 (>= 2.7.4)
+
+Package: xfonts-scalable
+Architecture: all
+Version: 1:1.0.3-1.2ubuntu1
+APT-ID: 6027
+Multi-Arch: foreign
+Source: xfonts-scalable
+Source-Version: 1:1.0.3-1.2ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conflicts: xfntscl
+
+Package: libxcb-render-util0
+Architecture: amd64
+Version: 0.3.9-1build3
+APT-ID: 4154
+Multi-Arch: same
+Source: xcb-util-renderutil
+Source-Version: 0.3.9-1build3
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb-render0, libxcb1
+
+Package: libargon2-1
+Architecture: amd64
+Version: 0~20171227-0.3
+APT-ID: 1625
+Multi-Arch: same
+Source: argon2
+Source-Version: 0~20171227-0.3
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libsane1
+Architecture: amd64
+Version: 1.1.1-5
+APT-ID: 3634
+Multi-Arch: same
+Source: sane-backends
+Source-Version: 1.1.1-5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: acl, adduser, libsane-common (= 1.1.1-5), udev, libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libcairo2 (>= 1.2.4), libcurl3-gnutls (>= 7.16.2), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libieee1284-3 (>= 0.2.11), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libpoppler-glib8 (>= 0.18.0), libsnmp40 (>= 5.9.1+dfsg), libstdc++6 (>= 11), libtiff5 (>= 4.0.3), libusb-1.0-0 (>= 2:1.0.22), libxml2 (>= 2.7.4)
+Suggests: avahi-daemon, hplip
+Recommends: sane-airscan, sane-utils (>= 1.1.1-5), ipp-usb
+Replaces: libsane (<< 1.0.29-1~)
+Breaks: libsane (<< 1.0.29-1~)
+Provides: libsane (= 1.1.1-5)
+
+Package: sysvinit-utils
+Architecture: amd64
+Version: 3.01-1ubuntu1
+APT-ID: 5738
+Essential: yes
+Multi-Arch: foreign
+Source: sysvinit
+Source-Version: 3.01-1ubuntu1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: lsb-base (>= 11.0.0~), libc6 (>= 2.34)
+
+Package: libcairo-gobject-perl
+Architecture: amd64
+Version: 1.005-3build1
+APT-ID: 1828
+Multi-Arch: same
+Source: libcairo-gobject-perl
+Source-Version: 1.005-3build1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.12.0), libcairo-perl, libglib-perl
+
+Package: libenchant-2-2
+Architecture: amd64
+Version: 2.3.2-1ubuntu2
+APT-ID: 2145
+Multi-Arch: same
+Source: enchant-2
+Source-Version: 2.3.2-1ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: hunspell-en-us | hunspell-dictionary | myspell-dictionary | aspell-dictionary | ispell-dictionary, libaspell15 (>= 0.60.8), libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.28.0), libhunspell-1.7-0, libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4)
+Suggests: libenchant-2-voikko
+Recommends: enchant-2
+
+Package: session-migration
+Architecture: amd64
+Version: 0.3.6
+APT-ID: 5650
+Source: session-migration
+Source-Version: 0.3.6
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.51.1), init-system-helpers (>= 1.52)
+
+Package: libreoffice-math
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72687
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: editors
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-opensymbol (>= 2:102.11), libreoffice-common (>= 1:7.0.0~alpha~), libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), ucf (>= 0.8), libc6 (>= 2.32), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 4.0.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libuno-salhelpergcc3-3 (>= 1.4.0), uno-libs-private
+Replaces: libreoffice-common (<< 1:6.4.2~rc1~)
+Breaks: libreoffice-common (<< 1:6.4.2~rc1~)
+
+Package: python3-debconf
+Architecture: all
+Version: 1.5.79ubuntu1
+APT-ID: 5205
+Source: debconf
+Source-Version: 1.5.79ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (= 1.5.79ubuntu1), python3:any
+Replaces: debconf (<< 1.5.64)
+Breaks: debconf (<< 1.5.64)
+
+Package: libcbor0.8
+Architecture: amd64
+Version: 0.8.0-2ubuntu1
+APT-ID: 1855
+Multi-Arch: same
+Source: libcbor
+Source-Version: 0.8.0-2ubuntu1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: fonts-deva-extra
+Architecture: all
+Version: 3.0-5
+APT-ID: 436
+Multi-Arch: foreign
+Source: fonts-deva-extra
+Source-Version: 3.0-5
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.6~)
+Recommends: fonts-gargi, fonts-sarai
+Replaces: ttf-devanagari-fonts
+Breaks: ttf-devanagari-fonts (<< 2:1.0)
+
+Package: gir1.2-gweather-3.0
+Architecture: amd64
+Version: 40.0-5build1
+APT-ID: 713
+Multi-Arch: same
+Source: libgweather
+Source-Version: 40.0-5build1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 0.9.5), gir1.2-gtk-3.0 (>= 3.13.5), libgweather-3-16 (>= 40.0)
+
+Package: logsave
+Architecture: amd64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 74193
+Multi-Arch: foreign
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Replaces: e2fsprogs (<< 1.45.3-1)
+Breaks: e2fsprogs (<< 1.45.3-1)
+
+Package: libpangoxft-1.0-0
+Architecture: amd64
+Version: 1.50.6+ds-2
+APT-ID: 3198
+Multi-Arch: same
+Source: pango1.0
+Source-Version: 1.50.6+ds-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libfontconfig1 (>= 2.13.0), libglib2.0-0 (>= 2.62.0), libpango-1.0-0 (= 1.50.6+ds-2), libpangoft2-1.0-0 (= 1.50.6+ds-2), libx11-6, libxft2 (>> 2.1.1), libxrender1
+
+Package: libhttp-message-perl
+Architecture: all
+Version: 6.36-1
+APT-ID: 2600
+Source: libhttp-message-perl
+Source-Version: 6.36-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libencode-locale-perl, libencode-perl (>= 3.01), libhttp-date-perl, libio-html-perl, liblwp-mediatypes-perl, liburi-perl
+Recommends: libclone-perl
+
+Package: xml-core
+Architecture: all
+Version: 0.18+nmu1
+APT-ID: 6035
+Multi-Arch: foreign
+Source: xml-core
+Source-Version: 0.18+nmu1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: sed (>= 4.1.2-8), sgml-base (>= 1.28)
+Suggests: debhelper (>= 9.20120909)
+
+Package: libflashrom1
+Architecture: amd64
+Version: 1.2-5build1
+APT-ID: 2239
+Multi-Arch: same
+Source: flashrom
+Source-Version: 1.2-5build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libftdi1-2 (>= 1.2), libpci3 (>= 1:3.5.1), libusb-1.0-0 (>= 2:1.0.22)
+
+Package: libmessaging-menu0
+Architecture: amd64
+Version: 22.2.0-1
+APT-ID: 2909
+Multi-Arch: same
+Source: ayatana-indicator-messages
+Source-Version: 22.2.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.37.3)
+
+Package: gnupg-l10n
+Architecture: all
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71875
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: gnupg (<< 2.1.14-2~), gnupg2 (<< 2.1.14-2~)
+Breaks: gnupg (<< 2.1.14-2~), gnupg2 (<< 2.1.14-2~)
+Enhances: dirmngr, gpg, gpg-agent
+
+Package: libreoffice-gtk3
+Architecture: amd64
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72556
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-core (= 1:7.3.6-0ubuntu0.22.04.1), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.12.0), libepoxy0 (>= 1.0), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.38.0), libgtk-3-0 (>= 3.21.5), libpango-1.0-0 (>= 1.14.0), libstdc++6 (>= 11), libuno-cppu3 (>= 4.4.0~alpha), libuno-cppuhelpergcc3-3 (>= 4.0.0~alpha), libuno-sal3 (>= 1:7.3.0~beta1), libx11-6, uno-libs-private
+Suggests: libreofficekit-data
+Recommends: gstreamer1.0-gtk3
+Enhances: libreoffice
+
+Package: libexttextcat-data
+Architecture: all
+Version: 3.4.5-1build2
+APT-ID: 2191
+Multi-Arch: foreign
+Source: libexttextcat
+Source-Version: 3.4.5-1build2
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libgtk-4-bin
+Architecture: amd64
+Version: 4.6.6+ds-0ubuntu1
+APT-ID: 72415
+Multi-Arch: foreign
+Source: gtk4
+Source-Version: 4.6.6+ds-0ubuntu1
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gtk-update-icon-cache, libc6 (>= 2.34), libcairo-gobject2 (>= 1.14.0), libcairo-script-interpreter2 (>= 1.14.0), libcairo2 (>= 1.14.0), libepoxy0 (>= 1.4.3), libfontconfig1 (>= 2.12.6), libfribidi0 (>= 0.19.7), libgdk-pixbuf-2.0-0 (>= 2.30.1), libglib2.0-0 (>= 2.70.0), libgraphene-1.0-0 (>= 1.9.4), libgtk-4-1 (>= 4.6.6+ds-0ubuntu1), libharfbuzz0b (>= 2.2.0), libjpeg8 (>= 8c), libpango-1.0-0 (>= 1.50.3), libpangocairo-1.0-0 (>= 1.50.0), libpangoft2-1.0-0 (>= 1.50.0), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3), libwayland-client0 (>= 1.20.0), libwayland-egl1 (>= 1.20.0), libx11-6 (>= 2:1.4.99.1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxinerama1 (>= 2:1.1.4), libxkbcommon0 (>= 0.5.0), libxrandr2 (>= 2:1.5.0), libgtk-4-common (>= 4.6.6+ds-0ubuntu1)
+Replaces: gtk-4-examples (<< 3.96.0-3~)
+Breaks: gtk-4-examples (<< 3.96.0-3~)
+
+Package: libraw20
+Architecture: amd64
+Version: 0.20.2-2ubuntu2
+APT-ID: 3379
+Multi-Arch: same
+Source: libraw
+Source-Version: 0.20.2-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgcc-s1 (>= 3.3.1), libgomp1 (>= 6), libjpeg8 (>= 8c), liblcms2-2 (>= 2.2+git20110628), libstdc++6 (>= 5.2)
+
+Package: libpipewire-0.3-modules
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 3261
+Multi-Arch: same
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libcanberra0 (>= 0.2), libdbus-1-3 (>= 1.9.14), libpipewire-0.3-0 (= 0.3.48-1ubuntu1), libpulse0 (>= 11.1), libsndfile1 (>= 1.0.20), libssl3 (>= 3.0.0~~alpha1), libsystemd0, libx11-6 (>= 2:1.7.0), libxfixes3 (>= 1:6.0.0)
+Replaces: pipewire (<< 0.3.5)
+Breaks: pipewire (<< 0.3.5)
+
+Package: python3.10-minimal
+Architecture: amd64
+Version: 3.10.6-1~22.04
+APT-ID: 74366
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.6-1~22.04), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Pre-Depends: libc6 (>= 2.35)
+Suggests: binfmt-support
+Recommends: python3.10
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: python3.10-minimal
+Architecture: amd64
+Version: 3.10.4-3ubuntu0.1
+APT-ID: 79412
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3ubuntu0.1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3ubuntu0.1), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Pre-Depends: libc6 (>= 2.35)
+Suggests: binfmt-support
+Recommends: python3.10
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: python3.10-minimal
+Architecture: amd64
+Version: 3.10.4-3
+APT-ID: 5555
+Multi-Arch: allowed
+Source: python3.10
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-3
+Priority: required
+Section: python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Automatic: yes
+Depends: libpython3.10-minimal (= 3.10.4-3), libexpat1 (>= 2.1~beta3), zlib1g (>= 1:1.2.0)
+Pre-Depends: libc6 (>= 2.35)
+Suggests: binfmt-support
+Recommends: python3.10
+Conflicts: binfmt-support (<< 1.1.2)
+
+Package: gstreamer1.0-pulseaudio
+Architecture: amd64
+Version: 1.20.3-0ubuntu1
+APT-ID: 71894
+Multi-Arch: same
+Source: gst-plugins-good1.0
+Source-Version: 1.20.3-0ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gstreamer1.0-plugins-good (>= 1.20.0)
+
+Package: libjcat1
+Architecture: amd64
+Version: 0.1.9-1
+APT-ID: 2736
+Multi-Arch: same
+Source: libjcat
+Source-Version: 0.1.9-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.61.2), libgnutls30 (>= 3.7.0), libgpg-error0 (>= 1.14), libgpgme11 (>= 1.2.0), libjson-glib-1.0-0 (>= 1.5.2)
+
+Package: ubuntu-release-upgrader-core
+Architecture: all
+Version: 1:22.04.14
+APT-ID: 74531
+Source: ubuntu-release-upgrader
+Source-Version: 1:22.04.14
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-distupgrade (= 1:22.04.14), ca-certificates
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-manager (<< 1:0.165), update-manager-core (<< 1:0.165)
+Breaks: software-properties (<< 0.9.27), update-manager (<< 1:0.165), update-manager-core (<< 1:0.165)
+
+Package: libfreehand-0.1-1
+Architecture: amd64
+Version: 0.1.2-3build2
+APT-ID: 2255
+Source: libfreehand
+Source-Version: 0.1.2-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), liblcms2-2 (>= 2.2+git20110628), librevenge-0.0-0, libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: libpam-pwquality
+Architecture: amd64
+Version: 1.4.4-1build2
+APT-ID: 3183
+Multi-Arch: same
+Source: libpwquality
+Source-Version: 1.4.4-1build2
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libpam0g (>= 1.1.1), libpwquality1 (>= 1.1.0), libpam-runtime
+
+Package: gnome-accessibility-themes
+Architecture: all
+Version: 3.28-1ubuntu3
+APT-ID: 777
+Multi-Arch: foreign
+Source: gnome-themes-extra
+Source-Version: 3.28-1ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-sil-abyssinica
+Architecture: all
+Version: 2.100-3
+APT-ID: 493
+Multi-Arch: foreign
+Source: fonts-sil-abyssinica
+Source-Version: 2.100-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libdv4
+Architecture: amd64
+Version: 1.0.0-14build1
+APT-ID: 2098
+Multi-Arch: same
+Source: libdv
+Source-Version: 1.0.0-14build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Suggests: libdv-bin, oss-compat
+
+Package: libdw1
+Architecture: amd64
+Version: 0.186-1build1
+APT-ID: 2104
+Multi-Arch: same
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbz2-1.0, libc6 (>= 2.34), libelf1 (= 0.186-1build1), liblzma5 (>= 5.1.1alpha+20120614), zlib1g (>= 1:1.2.2.3)
+
+Package: libfile-listing-perl
+Architecture: all
+Version: 6.14-1
+APT-ID: 2224
+Source: libfile-listing-perl
+Source-Version: 6.14-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libhttp-date-perl
+
+Package: libfwupdplugin5
+Architecture: amd64
+Version: 1.7.5-3
+APT-ID: 2283
+Multi-Arch: same
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libfwupd2 (= 1.7.5-3), libarchive13 (>= 3.0.4), libc6 (>= 2.14), libgcab-1.0-0 (>= 1.0), libglib2.0-0 (>= 2.67.3), libgudev-1.0-0 (>= 212), libgusb2 (>= 0.3.5), libjcat1 (>= 0.1.0), libxmlb2 (>= 0.3.2)
+
+Package: gpg-wks-client
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71882
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dirmngr (= 2.2.27-3ubuntu2.1), gpg (= 2.2.27-3ubuntu2.1), gpg-agent (= 2.2.27-3ubuntu2.1), libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42)
+Recommends: gnupg (= 2.2.27-3ubuntu2.1)
+
+Package: gsettings-ubuntu-schemas
+Architecture: all
+Version: 0.0.7+21.10.20210712-0ubuntu2
+APT-ID: 922
+Multi-Arch: foreign
+Source: gsettings-ubuntu-touch-schemas
+Source-Version: 0.0.7+21.10.20210712-0ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Replaces: gsettings-ubuntu-touch-schemas (<= 0.0.1+14.04.20140130.1-0ubuntu1)
+Breaks: gsettings-ubuntu-touch-schemas (<= 0.0.1+14.04.20140130.1-0ubuntu1)
+
+Package: fonts-tlwg-loma-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 524
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-loma (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-loma (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-loma (<< 1:0.6.2-2)
+
+Package: libxcb-shm0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4164
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1 (>= 1.12)
+
+Package: gir1.2-harfbuzz-0.0
+Architecture: amd64
+Version: 2.7.4-1ubuntu3.1
+APT-ID: 71841
+Multi-Arch: same
+Source: harfbuzz
+Source-Version: 2.7.4-1ubuntu3.1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.31.0-2), libharfbuzz0b (>= 2.7.4)
+
+Package: fonts-tlwg-umpush
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 539
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-umpush-ttf | fonts-tlwg-umpush-otf
+
+Package: gir1.2-gdesktopenums-3.0
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 675
+Multi-Arch: same
+Source: gsettings-desktop-schemas
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: remmina-common
+Architecture: all
+Version: 1.4.25+dfsg-1
+APT-ID: 5592
+Multi-Arch: foreign
+Source: remmina
+Source-Version: 1.4.25+dfsg-1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: remmina
+
+Package: iio-sensor-proxy
+Architecture: amd64
+Version: 3.3-0ubuntu6
+APT-ID: 1118
+Source: iio-sensor-proxy
+Source-Version: 3.3-0ubuntu6
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.67.3), libgudev-1.0-0 (>= 1:237)
+Suggests: systemd
+
+Package: liblz4-1
+Architecture: amd64
+Version: 1.9.3-2build2
+APT-ID: 2864
+Multi-Arch: same
+Source: lz4
+Source-Version: 1.9.3-2build2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: liblz4-1a
+Breaks: liblz4-1a
+
+Package: libplymouth5
+Architecture: amd64
+Version: 0.9.5+git20211018-1ubuntu3
+APT-ID: 3276
+Multi-Arch: same
+Source: plymouth
+Source-Version: 0.9.5+git20211018-1ubuntu3
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libpng16-16 (>= 1.6.2-1), libudev1 (>= 183)
+Replaces: plymouth (<< 0.9.2-1~)
+Breaks: plymouth (<< 0.9.2-1~)
+
+Package: librhythmbox-core10
+Architecture: amd64
+Version: 3.4.4-5ubuntu1
+APT-ID: 3566
+Multi-Arch: same
+Source: rhythmbox
+Source-Version: 3.4.4-5ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.12.4), libc6 (>= 2.29), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgirepository-1.0-1 (>= 0.10.0), libglib2.0-0 (>= 2.38.0), libgstreamer-plugins-base1.0-0 (>= 1.4.0), libgstreamer1.0-0 (>= 1.4.0), libgtk-3-0 (>= 3.20.0), libgudev-1.0-0 (>= 146), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpeas-1.0-0 (>= 1.0.0), libsoup2.4-1 (>= 2.42.0), libtdb1 (>= 1.2.7+git20101214), libtotem-plparser18 (>= 3.26.0), libxml2 (>= 2.7.8)
+
+Package: amd64-microcode
+Architecture: amd64
+Version: 3.20191218.1ubuntu2
+APT-ID: 19
+Source: amd64-microcode
+Source-Version: 3.20191218.1ubuntu2
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: initramfs-tools (>= 0.113~) | dracut (>= 044) | tiny-initramfs
+Breaks: intel-microcode (<< 2)
+
+Package: libpci3
+Architecture: amd64
+Version: 1:3.7.0-6
+APT-ID: 3217
+Multi-Arch: same
+Source: pciutils
+Source-Version: 1:3.7.0-6
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libudev1 (>= 196), zlib1g (>= 1:1.1.4), pci.ids (>= 0.0~2019.11.10-2)
+
+Package: libgnomekbd8
+Architecture: amd64
+Version: 3.26.1-2
+APT-ID: 2443
+Multi-Arch: same
+Source: libgnomekbd
+Source-Version: 3.26.1-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: iso-codes, libgnomekbd-common (>= 3.26.1-2), libc6 (>= 2.14), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.22.0), libx11-6, libxklavier16 (>= 5.2)
+
+Package: gnome-themes-extra
+Architecture: amd64
+Version: 3.28-1ubuntu3
+APT-ID: 817
+Multi-Arch: same
+Source: gnome-themes-extra
+Source-Version: 3.28-1ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-themes-extra-data (>= 3.28-1ubuntu3), libc6 (>= 2.4), libcairo2 (>= 1.2.4), libglib2.0-0 (>= 2.37.3), gtk2-engines-pixbuf
+Recommends: gnome-accessibility-themes, adwaita-icon-theme (>= 3.18.0-2~)
+Replaces: gnome-themes-standard (<= 3.27.90.1)
+Breaks: gnome-themes-standard (<= 3.27.90.1)
+
+Package: dconf-service
+Architecture: amd64
+Version: 0.40.0-3
+APT-ID: 274
+Multi-Arch: foreign
+Source: dconf
+Source-Version: 0.40.0-3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: default-dbus-session-bus | dbus-session-bus, libdconf1 (= 0.40.0-3), libc6 (>= 2.34), libglib2.0-0 (>= 2.55.2)
+Recommends: dconf-gsettings-backend
+
+Package: command-not-found
+Architecture: all
+Version: 22.04.0
+APT-ID: 209
+Source: command-not-found
+Source-Version: 22.04.0
+Priority: standard
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-commandnotfound (= 22.04.0)
+Suggests: snapd
+
+Package: gir1.2-upowerglib-1.0
+Architecture: amd64
+Version: 0.99.17-1
+APT-ID: 754
+Multi-Arch: same
+Source: upower
+Source-Version: 0.99.17-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0, libupower-glib3 (>= 0.99.14)
+
+Package: libgc1
+Architecture: amd64
+Version: 1:8.0.6-1.1build1
+APT-ID: 2295
+Multi-Arch: same
+Source: libgc
+Source-Version: 1:8.0.6-1.1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libstdc++6 (>= 4.1.1)
+Conflicts: libgc1c2
+Replaces: libgc1c2
+
+Package: libgd3
+Architecture: amd64
+Version: 2.3.0-2ubuntu2
+APT-ID: 2324
+Multi-Arch: same
+Source: libgd2
+Source-Version: 2.3.0-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3), libwebp7, libxpm4, zlib1g (>= 1:1.1.4)
+Suggests: libgd-tools
+
+Package: libtss2-esys-3.0.2-0
+Architecture: amd64
+Version: 3.2.0-1ubuntu1
+APT-ID: 3896
+Multi-Arch: same
+Source: tpm2-tss
+Source-Version: 3.2.0-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtss2-tcti-cmd0, libtss2-tcti-device0, libtss2-tcti-mssim0, libtss2-tcti-swtpm0, tpm-udev, libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1), libtss2-mu0 (>= 3.0.1), libtss2-sys1 (>= 3.1.0)
+Replaces: libtss2-esys0 (<< 3.0.2-1)
+Breaks: libtss2-esys0 (<< 3.0.2-1)
+
+Package: libxml-parser-perl
+Architecture: amd64
+Version: 2.46-3build1
+APT-ID: 4229
+Multi-Arch: same
+Source: libxml-parser-perl
+Source-Version: 2.46-3build1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libexpat1 (>= 2.0.1), liburi-perl, libwww-perl
+
+Package: perl-modules-5.34
+Architecture: all
+Version: 5.34.0-3ubuntu1
+APT-ID: 4867
+Multi-Arch: foreign
+Source: perl
+Source-Version: 5.34.0-3ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl-base (>= 5.34.0-1)
+Pre-Depends: dpkg (>= 1.17.17)
+Recommends: perl (>= 5.34.0-1)
+Conflicts: perl-modules (<< 5.22.0~)
+Replaces: libansicolor-perl (<< 5.01), libarchive-tar-perl (<< 2.38), libattribute-handlers-perl (<< 1.01), libautodie-perl (<< 2.34), libcpan-meta-perl (<< 2.150010), libcpan-meta-requirements-perl (<< 2.140), libcpan-meta-yaml-perl (<< 0.018), libdigest-perl (<< 1.19), libexperimental-perl (<< 0.024), libextutils-cbuilder-perl (<< 0.280236), libextutils-command-perl (<< 7.62), libextutils-install-perl (<< 2.20), libextutils-parsexs-perl (<< 3.430000), libfile-spec-perl (<< 3.8000), libhttp-tiny-perl (<< 0.076), libi18n-langtags-perl (<< 0.45), libio-zlib-perl (<< 1.11), libjson-pp-perl (<< 4.06000), liblocale-maketext-perl (<< 1.29), liblocale-maketext-simple-perl (<< 0.21.01), libmath-bigint-perl (<< 1.999818), libmath-complex-perl (<< 1.5902), libmodule-corelist-perl (<< 5.20210520), libmodule-load-conditional-perl (<< 0.74), libmodule-load-perl (<< 0.36), libmodule-metadata-perl (<< 1.000037), libnet-perl (<< 1:3.13), libnet-ping-perl (<< 2.74), libparams-check-perl (<< 0.38), libparent-perl (<< 0.238), libparse-cpan-meta-perl (<< 2.150010), libperl-ostype-perl (<< 1.010), libpod-escapes-perl (<< 1.07), libpod-simple-perl (<< 3.42), libtest-harness-perl (<< 3.43), libtest-simple-perl (<< 1.302183), libtest-tester-perl (<< 1.302183), libtest-use-ok-perl (<< 1.302183), libthread-queue-perl (<< 3.14), libtime-local-perl (<< 1.3000), libunicode-collate-perl (<< 1.29), libversion-perl (<< 1:0.9928), perl-base (<< 5.22.0~), perl-modules, podlators-perl (<< 4.14)
+Breaks: libansicolor-perl (<< 5.01), libarchive-tar-perl (<< 2.38), libattribute-handlers-perl (<< 1.01), libautodie-perl (<< 2.34), libcpan-meta-perl (<< 2.150010), libcpan-meta-requirements-perl (<< 2.140), libcpan-meta-yaml-perl (<< 0.018), libdigest-perl (<< 1.19), libexperimental-perl (<< 0.024), libextutils-cbuilder-perl (<< 0.280236), libextutils-command-perl (<< 7.62), libextutils-install-perl (<< 2.20), libextutils-parsexs-perl (<< 3.430000), libfile-spec-perl (<< 3.8000), libhttp-tiny-perl (<< 0.076), libi18n-langtags-perl (<< 0.45), libio-zlib-perl (<< 1.11), libjson-pp-perl (<< 4.06000), liblocale-maketext-perl (<< 1.29), liblocale-maketext-simple-perl (<< 0.21.01), libmath-bigint-perl (<< 1.999818), libmath-complex-perl (<< 1.5902), libmodule-corelist-perl (<< 5.20210520), libmodule-load-conditional-perl (<< 0.74), libmodule-load-perl (<< 0.36), libmodule-metadata-perl (<< 1.000037), libnet-perl (<< 1:3.13), libnet-ping-perl (<< 2.74), libparams-check-perl (<< 0.38), libparent-perl (<< 0.238), libparse-cpan-meta-perl (<< 2.150010), libperl-ostype-perl (<< 1.010), libpod-escapes-perl (<< 1.07), libpod-simple-perl (<< 3.42), libtest-harness-perl (<< 3.43), libtest-simple-perl (<< 1.302183), libtest-tester-perl (<< 1.302183), libtest-use-ok-perl (<< 1.302183), libthread-queue-perl (<< 3.14), libtime-local-perl (<< 1.3000), libunicode-collate-perl (<< 1.29), libversion-perl (<< 1:0.9928), maildirsync (<< 1.2-2.1), perl (<< 5.34.0~), podlators-perl (<< 4.14)
+Provides: perl-modules
+
+Package: libgl1
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 2375
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglvnd0 (= 1.4.0-1), libglx0 (= 1.4.0-1)
+
+Package: libncursesw6
+Architecture: amd64
+Version: 6.3-2
+APT-ID: 3001
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtinfo6 (= 6.3-2), libc6 (>= 2.34)
+Recommends: libgpm2
+
+Package: whoopsie-preferences
+Architecture: amd64
+Version: 23
+APT-ID: 5968
+Source: whoopsie-preferences
+Source-Version: 23
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.30.0), libpolkit-gobject-1-0 (>= 0.99), libwhoopsie-preferences0 (= 23), libwhoopsie0 (>= 0.2.48)
+Recommends: whoopsie (>= 0.2.77)
+Replaces: activity-log-manager (<< 0.9.7-0ubuntu4), activity-log-manager-control-center (<< 0.9.6)
+Breaks: activity-log-manager (<< 0.9.7-0ubuntu4), activity-log-manager-control-center (<< 0.9.6), whoopsie (<< 0.2.47)
+
+Package: libgs9
+Architecture: amd64
+Version: 9.55.0~dfsg1-0ubuntu5
+APT-ID: 2499
+Multi-Arch: same
+Source: ghostscript
+Source-Version: 9.55.0~dfsg1-0ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgs9-common (= 9.55.0~dfsg1-0ubuntu5), poppler-data, libc6 (>= 2.34), libcups2 (>= 2.3~b6), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libgcc-s1 (>= 3.3.1), libidn12 (>= 1.13), libijs-0.35 (>= 0.35), libjbig2dec0 (>= 0.16+20190905), libjpeg8 (>= 8c), libopenjp2-7 (>= 2.0.0), libpaper1, libpng16-16 (>= 1.6.2-1), libstdc++6 (>= 11), libtiff5 (>= 4.0.3), zlib1g (>= 1:1.2.0)
+
+Package: python3-cryptography
+Architecture: amd64
+Version: 3.4.8-1ubuntu2
+APT-ID: 5195
+Source: python-cryptography
+Source-Version: 3.4.8-1ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (>= 3~), python3-cffi-backend-api-min (<= 9729), python3-cffi-backend-api-max (>= 9729), python3:any, libc6 (>= 2.14), libssl3 (>= 3.0.0~~alpha1)
+Suggests: python-cryptography-doc, python3-cryptography-vectors
+Breaks: python3-openssl (<< 16.0.0)
+
+Package: ncurses-bin
+Architecture: amd64
+Version: 6.3-2
+APT-ID: 4732
+Essential: yes
+Multi-Arch: foreign
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libtinfo6 (>= 6.3)
+
+Package: libgtksourceview-4-common
+Architecture: all
+Version: 4.8.3-1
+APT-ID: 2543
+Multi-Arch: foreign
+Source: gtksourceview4
+Source-Version: 4.8.3-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libbz2-1.0
+Architecture: amd64
+Version: 1.0.8-5build1
+APT-ID: 1801
+Multi-Arch: same
+Source: bzip2
+Source-Version: 1.0.8-5build1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: libegl1
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 2139
+Multi-Arch: same
+Source: libglvnd
+Source-Version: 1.4.0-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglvnd0 (= 1.4.0-1), libegl-mesa0
+
+Package: ubuntu-advantage-tools
+Architecture: amd64
+Version: 27.10.1~22.04.1
+APT-ID: 74528
+Source: ubuntu-advantage-tools
+Source-Version: 27.10.1~22.04.1
+Priority: required
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, python3-yaml, python3:any, libapt-pkg6.0 (>= 0.8.0), libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libjson-c5 (>= 0.15), libstdc++6 (>= 9), python3-apt, python3-pkg-resources, distro-info (>= 0.18ubuntu0.18.04.1)
+
+Package: 2to3
+Architecture: all
+Version: 3.10.6-1~22.04
+APT-ID: 76923
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.6-1~22.04
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: python3-lib2to3 (>= 3.10.6-1~), python3 (>= 3.10.6-1~22.04)
+Replaces: python (<< 2.7.14-4)
+Breaks: python (<< 2.7.14-4)
+
+Package: 2to3
+Architecture: all
+Version: 3.10.4-0ubuntu2
+APT-ID: 8990
+Multi-Arch: foreign
+Source: python3-defaults
+Phased-Update-Percentage: 10
+Source-Version: 3.10.4-0ubuntu2
+Priority: optional
+Section: universe/python
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=universe,b=i386
+APT-Pin: 500
+Depends: python3-lib2to3 (>= 3.9.10-2~), python3 (>= 3.10.4-0ubuntu2)
+Replaces: python (<< 2.7.14-4)
+Breaks: python (<< 2.7.14-4)
+
+Package: libinih1
+Architecture: amd64
+Version: 53-1ubuntu3
+APT-ID: 2652
+Multi-Arch: same
+Source: libinih
+Source-Version: 53-1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4)
+
+Package: gir1.2-vte-2.91
+Architecture: amd64
+Version: 0.68.0-1
+APT-ID: 755
+Multi-Arch: same
+Source: vte2.91
+Source-Version: 0.68.0-1
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop (>= 0.9.12), gir1.2-gtk-3.0 (>= 3.24.22), gir1.2-pango-1.0 (>= 1.22.0), libvte-2.91-0 (>= 0.67.90)
+
+Package: time
+Architecture: amd64
+Version: 1.9-0.1build2
+APT-ID: 5844
+Multi-Arch: foreign
+Source: time
+Source-Version: 1.9-0.1build2
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: gnome-keyring-pkcs11
+Architecture: amd64
+Version: 40.0-3ubuntu3
+APT-ID: 71865
+Multi-Arch: same
+Source: gnome-keyring
+Source-Version: 40.0-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Replaces: gnome-keyring (<< 3.20.1-3)
+Breaks: gnome-keyring (<< 3.27.4-2~)
+
+Package: zlib1g
+Architecture: amd64
+Version: 1:1.2.11.dfsg-2ubuntu9.1
+APT-ID: 74568
+Multi-Arch: same
+Source: zlib
+Source-Version: 1:1.2.11.dfsg-2ubuntu9.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Breaks: libxml2 (<< 2.7.6.dfsg-2), texlive-binaries (<< 2009-12)
+Provides: libz1
+
+Package: liblouisutdml9
+Architecture: amd64
+Version: 2.10.0-4
+APT-ID: 2842
+Multi-Arch: same
+Source: liblouisutdml
+Source-Version: 2.10.0-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: liblouisutdml-data, libc6 (>= 2.33), liblouis20 (>= 3.20.0), libxml2 (>= 2.7.4)
+
+Package: branding-ubuntu
+Architecture: all
+Version: 0.10
+APT-ID: 142
+Source: branding-ubuntu
+Source-Version: 0.10
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-guru-extra
+Architecture: all
+Version: 2.0-5
+APT-ID: 446
+Multi-Arch: foreign
+Source: fonts-guru-extra
+Source-Version: 2.0-5
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-punjabi-fonts
+Breaks: ttf-punjabi-fonts (<< 2:1.0)
+
+Package: speech-dispatcher
+Architecture: amd64
+Version: 0.11.1-1ubuntu1
+APT-ID: 79614
+Multi-Arch: foreign
+Source: speech-dispatcher
+Source-Version: 0.11.1-1ubuntu1
+Priority: optional
+Section: sound
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: adduser, lsb-base (>= 3.0-10), speech-dispatcher-audio-plugins (= 0.11.1-1ubuntu1), init-system-helpers (>= 1.51), libc6 (>= 2.34), libdotconf0 (>= 1.0.13), libglib2.0-0 (>= 2.67.3), libltdl7 (>= 2.4.6), libsndfile1 (>= 1.0.20), libspeechd2 (>= 0.9.0~rc1)
+Suggests: libttspico-utils, espeak, mbrola, speech-dispatcher-doc-cs, speech-dispatcher-festival, speech-dispatcher-cicero, speech-dispatcher-flite, speech-dispatcher-espeak
+Recommends: pulseaudio, speech-dispatcher-espeak-ng, sound-icons
+Breaks: cl-speech-dispatcher (<< 0.9~), libspeechd2 (<< 0.9~), python-speechd (<< 0.9~), python3-speechd (<< 0.9~), speech-dispatcher-baratinoo (<< 0.10.2-1~), speech-dispatcher-ibmtts (<< 0.10.2-1~), speech-dispatcher-kali (<< 0.10.2-1~)
+
+Package: libx11-6
+Architecture: amd64
+Version: 2:1.7.5-1
+APT-ID: 4093
+Multi-Arch: same
+Source: libx11
+Source-Version: 2:1.7.5-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libxcb1 (>= 1.11.1), libx11-data
+Breaks: libx11-xcb1 (<< 2:1.7.0-2)
+
+Package: libgstreamer-plugins-base1.0-0
+Architecture: amd64
+Version: 1.20.1-1
+APT-ID: 2518
+Multi-Arch: same
+Source: gst-plugins-base1.0
+Source-Version: 1.20.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.67.3), libgstreamer1.0-0 (>= 1.20.0), liborc-0.4-0 (>= 1:0.4.25), zlib1g (>= 1:1.1.4), iso-codes
+Suggests: libvisual-0.4-plugins
+Recommends: gstreamer1.0-plugins-base
+Conflicts: libgstreamer-plugins-bad1.0-0 (<< 1.15.1)
+Breaks: gstreamer1.0-plugins-bad (<< 1.15.1), libgstreamer-plugins-bad1.0-0 (<< 1.15.1), totem-gstreamer (<= 2.17.92-0ubuntu1)
+
+Package: libdbus-glib-1-2
+Architecture: amd64
+Version: 0.112-2build1
+APT-ID: 2026
+Multi-Arch: same
+Source: dbus-glib
+Source-Version: 0.112-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.40)
+
+Package: fonts-tlwg-laksaman-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 522
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-laksaman (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-laksaman (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-laksaman (<< 1:0.6.2-2)
+
+Package: libtag1v5-vanilla
+Architecture: amd64
+Version: 1.11.1+dfsg.1-3ubuntu3
+APT-ID: 3806
+Multi-Arch: same
+Source: taglib
+Source-Version: 1.11.1+dfsg.1-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4)
+Conflicts: libtag-extras0, libtag1-rusxmms
+Replaces: libtag1-vanilla, libtag1c2a (<< 1.5-5)
+Breaks: libtag1-vanilla, libtag1c2a (<< 1.5-5)
+
+Package: libspeechd2
+Architecture: amd64
+Version: 0.11.1-1ubuntu1
+APT-ID: 79610
+Multi-Arch: same
+Source: speech-dispatcher
+Source-Version: 0.11.1-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Pin: 100
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.36)
+
+Package: xserver-xorg-video-all
+Architecture: amd64
+Version: 1:7.7+23ubuntu2
+APT-ID: 6052
+Source: xorg
+Source-Version: 1:7.7+23ubuntu2
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: xserver-xorg-video-amdgpu, xserver-xorg-video-ati, xserver-xorg-video-fbdev, xserver-xorg-video-nouveau, xserver-xorg-video-vesa, xserver-xorg-video-vmware
+Recommends: xserver-xorg-video-intel, xserver-xorg-video-qxl
+Conflicts: xserver-xorg-driver-all
+Replaces: xserver-xorg-driver-all
+
+Package: libmediaart-2.0-0
+Architecture: amd64
+Version: 1.9.5-2build1
+APT-ID: 2900
+Multi-Arch: same
+Source: libmediaart
+Source-Version: 1.9.5-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.67.3)
+
+Package: thunderbird-locale-en-us
+Architecture: all
+Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+APT-ID: 74456
+Source: thunderbird
+Source-Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+Priority: optional
+Section: web
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: thunderbird-locale-en
+
+Package: xserver-xorg-video-ati
+Architecture: amd64
+Version: 1:19.1.0-2ubuntu1
+APT-ID: 74558
+Source: xserver-xorg-video-ati
+Source-Version: 1:19.1.0-2ubuntu1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libpciaccess0, xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1), xserver-xorg-video-radeon
+Suggests: xserver-xorg-video-r128, xserver-xorg-video-mach64
+Provides: xorg-driver-video
+
+Package: libwayland-client0
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72819
+Multi-Arch: same
+Source: wayland
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.28), libffi8 (>= 3.4)
+Conflicts: libwayland0 (<< 1.1.0-1)
+Replaces: libwayland0 (<< 1.1.0-1)
+
+Package: python3-launchpadlib
+Architecture: all
+Version: 1.10.16-1
+APT-ID: 5291
+Source: python-launchpadlib
+Source-Version: 1.10.16-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-httplib2, python3-keyring, python3-lazr.restfulclient, python3-lazr.uri, python3:any
+Suggests: python3-pkg-resources, python3-testresources
+
+Package: sane-airscan
+Architecture: amd64
+Version: 0.99.27-1build1
+APT-ID: 5636
+Source: sane-airscan
+Source-Version: 0.99.27-1build1
+Priority: optional
+Section: graphics
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-client3 (>= 0.6.16), libavahi-common3 (>= 0.6.16), libc6 (>= 2.34), libgnutls30 (>= 3.7.0), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libxml2 (>= 2.7.4)
+Recommends: ipp-usb, sane-utils
+
+Package: libgraphene-1.0-0
+Architecture: amd64
+Version: 1.10.8-1
+APT-ID: 2489
+Multi-Arch: same
+Source: graphene
+Source-Version: 1.10.8-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.14.0)
+
+Package: fonts-smc-gayathri
+Architecture: all
+Version: 1.110-2-1
+APT-ID: 502
+Multi-Arch: foreign
+Source: fonts-smc-gayathri
+Source-Version: 1.110-2-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: gcc-12-base
+Architecture: amd64
+Version: 12.1.0-2ubuntu1~22.04
+APT-ID: 71815
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12.1.0-2ubuntu1~22.04
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: gnat (<< 7)
+
+Package: libxmlsec1-nss
+Architecture: amd64
+Version: 1.2.33-1build2
+APT-ID: 4247
+Multi-Arch: same
+Source: xmlsec1
+Source-Version: 1.2.33-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libnspr4 (>= 2:4.10.9), libnss3 (>= 2:3.13.4-2~), libxml2 (>= 2.8.0), libxmlsec1 (>= 1.2.33)
+
+Package: info
+Architecture: amd64
+Version: 6.8-4build1
+APT-ID: 1122
+Multi-Arch: foreign
+Source: texinfo
+Source-Version: 6.8-4build1
+Priority: standard
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libtinfo6 (>= 6), install-info
+Replaces: texinfo (<< 4.7-2), texinfo-doc-nonfree
+Breaks: texinfo-doc-nonfree
+Provides: info-browser
+
+Package: init
+Architecture: amd64
+Version: 1.62
+APT-ID: 1123
+Multi-Arch: foreign
+Source: init-system-helpers
+Source-Version: 1.62
+Priority: required
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: init-system-helpers (>= 1.25)
+Pre-Depends: systemd-sysv
+
+Package: fonts-droid-fallback
+Architecture: all
+Version: 1:6.0.1r16-1.1build1
+APT-ID: 437
+Multi-Arch: foreign
+Source: fonts-android
+Source-Version: 1:6.0.1r16-1.1build1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Pre-Depends: dpkg (>= 1.15.7.2)
+Suggests: fonts-noto
+Recommends: fonts-noto-mono
+Replaces: fonts-droid (<< 1:6.0.0r26-1~)
+Breaks: fonts-droid (<< 1:6.0.0r26-1~)
+
+Package: libgdata22
+Architecture: amd64
+Version: 0.18.1-2build1
+APT-ID: 2328
+Multi-Arch: same
+Source: libgdata
+Source-Version: 0.18.1-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libgcr-base-3-1 (>= 3.8.0), libglib2.0-0 (>= 2.44.0), libgoa-1.0-0b (>= 3.12.0), libjson-glib-1.0-0 (>= 1.5.2), libsoup2.4-1 (>= 2.56.0), libxml2 (>= 2.7.4), libgdata-common
+
+Package: libgnome-autoar-0-0
+Architecture: amd64
+Version: 0.4.3-1
+APT-ID: 2413
+Multi-Arch: same
+Source: gnome-autoar
+Source-Version: 0.4.3-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libarchive13 (>= 3.4.0), libc6 (>= 2.33), libglib2.0-0 (>= 2.55.2)
+
+Package: python3-dbus
+Architecture: amd64
+Version: 1.2.18-3build1
+APT-ID: 5203
+Source: dbus-python
+Source-Version: 1.2.18-3build1
+Priority: required
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.4), libdbus-1-3 (>= 1.9.14), libglib2.0-0 (>= 2.40)
+Suggests: python-dbus-doc
+Recommends: python3-gi
+Provides: python3.10-dbus
+
+Package: libxkbcommon-x11-0
+Architecture: amd64
+Version: 1.4.0-1
+APT-ID: 4215
+Multi-Arch: same
+Source: libxkbcommon
+Source-Version: 1.4.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libxkbcommon0 (= 1.4.0-1), libc6 (>= 2.4), libxcb-xkb1, libxcb1 (>= 1.6)
+
+Package: xdg-dbus-proxy
+Architecture: amd64
+Version: 0.1.3-1
+APT-ID: 6017
+Multi-Arch: foreign
+Source: xdg-dbus-proxy
+Source-Version: 0.1.3-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.39.4)
+
+Package: liblcms2-2
+Architecture: amd64
+Version: 2.12~rc1-2build2
+APT-ID: 2804
+Multi-Arch: same
+Source: lcms2
+Source-Version: 2.12~rc1-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+Suggests: liblcms2-utils
+
+Package: cups-server-common
+Architecture: all
+Version: 2.4.1op1-1ubuntu4.1
+APT-ID: 71762
+Multi-Arch: foreign
+Source: cups
+Source-Version: 2.4.1op1-1ubuntu4.1
+Priority: optional
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libelf1
+Architecture: amd64
+Version: 0.186-1build1
+APT-ID: 2142
+Multi-Arch: same
+Source: elfutils
+Source-Version: 0.186-1build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), zlib1g (>= 1:1.1.4)
+
+Package: groff-base
+Architecture: amd64
+Version: 1.22.4-8build1
+APT-ID: 897
+Multi-Arch: foreign
+Source: groff
+Source-Version: 1.22.4-8build1
+Priority: standard
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.35), libgcc-s1 (>= 4.0), libstdc++6 (>= 4.1.1), libuchardet0 (>= 0.0.1)
+Suggests: groff
+
+Package: libvte-2.91-0
+Architecture: amd64
+Version: 0.68.0-1
+APT-ID: 4029
+Multi-Arch: same
+Source: vte2.91
+Source-Version: 0.68.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libvte-2.91-common (= 0.68.0-1), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.34), libcairo2 (>= 1.10.0), libfribidi0 (>= 1.0.0), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.52.0), libgnutls30 (>= 3.7.2), libgtk-3-0 (>= 3.24.22), libicu70 (>= 70.1-1~), libpango-1.0-0 (>= 1.44.3), libpangocairo-1.0-0 (>= 1.22.0), libpcre2-8-0 (>= 10.22), libstdc++6 (>= 11), libsystemd0 (>= 220), zlib1g (>= 1:1.2.0)
+
+Package: libglib-object-introspection-perl
+Architecture: amd64
+Version: 0.049-1+build2
+APT-ID: 2384
+Source: libglib-object-introspection-perl
+Source-Version: 0.049-1+build2
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libffi8 (>= 3.4), libgirepository-1.0-1 (>= 1.62.0-4~), libgirepository-1.0-1-with-libffi8 (>= 1.62.0-4~), libglib2.0-0 (>= 2.24.0), libglib-perl (>= 3:1.320)
+Suggests: libxml-libxml-perl
+
+Package: libclutter-1.0-0
+Architecture: amd64
+Version: 1.26.4+dfsg-4build1
+APT-ID: 1899
+Multi-Arch: same
+Source: clutter-1.0
+Source-Version: 1.26.4+dfsg-4build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 2.5.3), libc6 (>= 2.29), libcairo-gobject2 (>= 1.14.0), libcairo2 (>= 1.14.0), libcogl-pango20 (>= 1.17.4), libcogl-path20 (>= 1.17.4), libcogl20 (>= 1.21.2), libfontconfig1 (>= 2.12.6), libglib2.0-0 (>= 2.53.4), libgtk-3-0 (>= 3.16.2), libinput10 (>= 0.21.0), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.30), libpangocairo-1.0-0 (>= 1.30), libpangoft2-1.0-0 (>= 1.30), libudev1 (>= 183), libwayland-client0 (>= 1.20.0), libwayland-cursor0 (>= 1.0.2), libwayland-server0 (>= 1.2.0), libx11-6 (>= 2:1.2.99.901), libxcomposite1 (>= 1:0.4.5), libxdamage1 (>= 1:1.1), libxi6 (>= 2:1.2.99.4), libxkbcommon0 (>= 0.5.0)
+Recommends: libclutter-1.0-common
+Breaks: cinnamon-session (<< 2.6.2)
+
+Package: libmd0
+Architecture: amd64
+Version: 1.0.4-1build1
+APT-ID: 2897
+Multi-Arch: same
+Source: libmd
+Source-Version: 1.0.4-1build1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: shim-signed
+Architecture: amd64
+Version: 1.51+15.4-0ubuntu9
+APT-ID: 5659
+Source: shim-signed
+Source-Version: 1.51
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: debconf (>= 0.5) | debconf-2.0, grub-efi-amd64-signed | grub-efi-arm64-signed, grub2-common (>= 2.04-1ubuntu24), mokutil (>= 0.3.0+1538710437.fb6250f-0ubuntu2), sbsigntool
+Recommends: secureboot-db
+Replaces: shim (<< 15.3)
+Breaks: shim (<< 15.3)
+
+Package: cheese-common
+Architecture: all
+Version: 41.1-1build1
+APT-ID: 180
+Multi-Arch: foreign
+Source: cheese
+Source-Version: 41.1-1build1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+
+Package: libwpg-0.3-3
+Architecture: amd64
+Version: 0.3.3-1build3
+APT-ID: 4083
+Multi-Arch: same
+Source: libwpg
+Source-Version: 0.3.3-1build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), librevenge-0.0-0, libstdc++6 (>= 11), libwpd-0.10-10
+
+Package: libnet-dbus-perl
+Architecture: amd64
+Version: 1.2.0-1build3
+APT-ID: 3009
+Source: libnet-dbus-perl
+Source-Version: 1.2.0-1build3
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14), libxml-twig-perl
+
+Package: libaccountsservice0
+Architecture: amd64
+Version: 22.07.5-2ubuntu1.3
+APT-ID: 72257
+Multi-Arch: same
+Source: accountsservice
+Source-Version: 22.07.5-2ubuntu1.3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcrypt1 (>= 1:4.1.0), libglib2.0-0 (>= 2.63.5), libsystemd0 (>= 209)
+Breaks: accountsservice (<< 0.6.5)
+
+Package: dash
+Architecture: amd64
+Version: 0.5.11+git20210903+057cd650a4ed-3build1
+APT-ID: 263
+Essential: yes
+Multi-Arch: foreign
+Source: dash
+Source-Version: 0.5.11+git20210903+057cd650a4ed-3build1
+Priority: important
+Section: shells
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: debianutils (>= 2.15), dpkg (>= 1.19.1), debconf (>= 0.5) | debconf-2.0
+Pre-Depends: libc6 (>= 2.34)
+
+Package: shotwell
+Architecture: amd64
+Version: 0.30.14-1ubuntu6
+APT-ID: 74399
+Source: shotwell
+Source-Version: 0.30.14-1ubuntu6
+Priority: extra
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libexif12 (>= 0.6.21-1~), libgcr-base-3-1 (>= 3.8.0), libgcr-ui-3-1 (>= 3.8.0), libgdata22 (>= 0.15.0), libgdk-pixbuf-2.0-0 (>= 2.25.2), libgee-0.8-2 (>= 0.10.1), libgexiv2-2 (>= 0.10.4), libglib2.0-0 (>= 2.49.5), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.0.0), libgtk-3-0 (>= 3.21.5), libgudev-1.0-0 (>= 146), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0), libraw20 (>= 0.16.0), libsoup2.4-1 (>= 2.41.90), libsqlite3-0 (>= 3.5.9), libunity9 (>= 3.4.6), libwebkit2gtk-4.0-37 (>= 2.25.1), libxml2 (>= 2.7.4), shotwell-common (= 0.30.14-1ubuntu6), dconf-cli, default-dbus-session-bus | dbus-session-bus, librsvg2-common
+Replaces: shotwell-common (<< 0.26.2-1)
+
+Package: libblockdev-crypto2
+Architecture: amd64
+Version: 2.26-1
+APT-ID: 1729
+Multi-Arch: same
+Source: libblockdev
+Source-Version: 2.26-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.23.0), libblockdev-utils2 (>= 2.20), libc6 (>= 2.25), libcryptsetup12 (>= 2:2.0.3), libglib2.0-0 (>= 2.42.2), libnss3 (>= 2:3.13.4-2~), libvolume-key1 (>= 0.3.9)
+
+Package: libnm0
+Architecture: amd64
+Version: 1.36.6-0ubuntu2
+APT-ID: 72478
+Multi-Arch: same
+Source: network-manager
+Source-Version: 1.36.6-0ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.43.2), libgnutls30 (>= 3.7.2), libudev1 (>= 183)
+
+Package: libtirpc3
+Architecture: amd64
+Version: 1.3.2-2ubuntu0.1
+APT-ID: 72784
+Multi-Arch: same
+Source: libtirpc
+Source-Version: 1.3.2-2ubuntu0.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgssapi-krb5-2 (>= 1.17), libtirpc-common (>= 1.3.2-2ubuntu0.1)
+Breaks: nfs-common (<< 1:1.2.8-7), nfs-kernel-server (<< 1:1.2.8-7)
+
+Package: fonts-orya
+Architecture: all
+Version: 2:1.3
+APT-ID: 484
+Multi-Arch: foreign
+Source: fonts-orya
+Source-Version: 2:1.3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-lohit-orya, fonts-orya-extra
+Replaces: ttf-oriya-fonts
+Breaks: ttf-oriya-fonts (<< 2:1.0)
+
+Package: libgeocode-glib0
+Architecture: amd64
+Version: 3.26.2-2build2
+APT-ID: 2350
+Multi-Arch: same
+Source: geocode-glib
+Source-Version: 3.26.2-2build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.44), libjson-glib-1.0-0 (>= 1.5.2), libsoup2.4-1 (>= 2.42)
+
+Package: libtalloc2
+Architecture: amd64
+Version: 2.3.3-2build1
+APT-ID: 3810
+Multi-Arch: same
+Source: talloc
+Source-Version: 2.3.3-2build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.16)
+Breaks: python3-talloc (<< 2.1.13-2~)
+
+Package: gnome-todo
+Architecture: amd64
+Version: 3.28.1-6ubuntu1
+APT-ID: 819
+Source: gnome-todo
+Source-Version: 3.28.1-6ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libecal-2.0-1 (>= 3.33.4), libedataserver-1.2-26 (>= 3.33.4), libedataserverui-1.2-3 (>= 3.33.4), libgirepository-1.0-1 (>= 0.9.2), libglib2.0-0 (>= 2.51.2), libgoa-1.0-0b (>= 3.5.1), libgtk-3-0 (>= 3.21.5), libical3 (>= 3.0.0), libjson-glib-1.0-0 (>= 1.5.2), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpeas-1.0-0 (>= 1.17), librest-0.7-0 (>= 0.7), gnome-todo-common (>= 3.28.1-6ubuntu1), libgnome-todo (= 3.28.1-6ubuntu1), evolution-data-server (>= 3.17.1), gsettings-desktop-schemas
+Replaces: gnome-todo-common (<< 3.28)
+Breaks: gnome-todo-common (<< 3.28)
+
+Package: libsigc++-2.0-0v5
+Architecture: amd64
+Version: 2.10.4-2ubuntu3
+APT-ID: 3672
+Multi-Arch: same
+Source: libsigc++-2.0
+Source-Version: 2.10.4-2ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 4.6)
+Conflicts: libsigc++-2.0-0c2a
+Replaces: libsigc++-2.0-0c2a
+
+Package: dbus
+Architecture: amd64
+Version: 1.12.20-2ubuntu4
+APT-ID: 267
+Multi-Arch: foreign
+Source: dbus
+Source-Version: 1.12.20-2ubuntu4
+Priority: required
+Section: devel
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: adduser, libapparmor1 (>= 2.8.94), libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcap-ng0 (>= 0.7.9), libdbus-1-3 (= 1.12.20-2ubuntu4), libexpat1 (>= 2.1~beta3), libselinux1 (>= 3.1~), libsystemd0
+Suggests: default-dbus-session-bus | dbus-session-bus
+Provides: dbus-bin (= 1.12.20-2ubuntu4), dbus-system-bus-common (= 1.12.20-2ubuntu4), dbus-system-bus (= 1.12.20-2ubuntu4), default-dbus-system-bus, dbus-session-bus-common (= 1.12.20-2ubuntu4), dbus-daemon (= 1.12.20-2ubuntu4)
+
+Package: libepoxy0
+Architecture: amd64
+Version: 1.5.10-1
+APT-ID: 2152
+Multi-Arch: same
+Source: libepoxy
+Source-Version: 1.5.10-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: espeak-ng-data
+Architecture: amd64
+Version: 1.50+dfsg-10
+APT-ID: 396
+Multi-Arch: same
+Source: espeak-ng
+Source-Version: 1.50+dfsg-10
+Priority: optional
+Section: sound
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: fonts-tlwg-waree
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 541
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: fonts-tlwg-waree-ttf | fonts-tlwg-waree-otf
+
+Package: sbsigntool
+Architecture: amd64
+Version: 0.9.4-2ubuntu2
+APT-ID: 5639
+Multi-Arch: foreign
+Source: sbsigntool
+Source-Version: 0.9.4-2ubuntu2
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.0~~alpha1), libuuid1 (>= 2.16)
+
+Package: libreoffice-help-en-us
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72565
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: doc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libreoffice-common (>= 1:6.1.0~), libreoffice-l10n-en-us, libreoffice-help-common (= 1:7.3.6-0ubuntu0.22.04.1)
+Suggests: firefox | firefox-esr | epiphany-browser | konqueror | chromium-browser | chromium
+Recommends: libreoffice-core (>> 1:7.3.6)
+Replaces: libreoffice-help-common (<< 1:6.4.1~rc1)
+Provides: libreoffice-help (= 7.3)
+
+Package: libimobiledevice6
+Architecture: amd64
+Version: 1.3.0-6build3
+APT-ID: 2647
+Multi-Arch: same
+Source: libimobiledevice
+Source-Version: 1.3.0-6build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libplist3 (>= 2.2.0), libssl3 (>= 3.0.0~~alpha1), libusbmuxd6 (>= 2.0.2)
+Suggests: libusbmuxd-tools
+Recommends: usbmuxd
+Conflicts: libiphone0
+Replaces: libimobiledevice0, libimobiledevice1, libiphone0
+
+Package: libgeoclue-2-0
+Architecture: amd64
+Version: 2.5.7-3ubuntu3
+APT-ID: 2345
+Multi-Arch: same
+Source: geoclue-2.0
+Source-Version: 2.5.7-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libglib2.0-0 (>= 2.44.0), geoclue-2.0 (= 2.5.7-3ubuntu3)
+
+Package: libpam-sss
+Architecture: amd64
+Version: 2.6.3-1ubuntu3.1
+APT-ID: 72497
+Multi-Arch: same
+Source: sssd
+Source-Version: 2.6.3-1ubuntu3.1
+Priority: extra
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libpam-pwquality (>= 1.2.2-1), libpam-runtime (>= 1.0.1-6), libc6 (>= 2.33), libgssapi-krb5-2 (>= 1.17), libpam0g (>= 0.99.7.1)
+Recommends: sssd
+
+Package: libeot0
+Architecture: amd64
+Version: 0.01-5build2
+APT-ID: 2150
+Multi-Arch: same
+Source: libeot
+Source-Version: 0.01-5build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libxcb-sync1
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4167
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libxcb1
+
+Package: libgck-1-0
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 2310
+Multi-Arch: same
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.59.0), libp11-kit0 (>= 0.23.18.1)
+
+Package: fonts-lohit-knda
+Architecture: all
+Version: 2.5.4-3
+APT-ID: 465
+Multi-Arch: foreign
+Source: fonts-lohit-knda
+Source-Version: 2.5.4-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: ttf-kannada-fonts (<= 1:0.5.12)
+Breaks: ttf-kannada-fonts (<= 1:0.5.12)
+
+Package: libedit2
+Architecture: amd64
+Version: 3.1-20210910-1build1
+APT-ID: 2131
+Multi-Arch: same
+Source: libedit
+Source-Version: 3.1-20210910-1build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.1.3), libc6 (>= 2.33), libtinfo6 (>= 6)
+Replaces: libedit-dev (<< 3.1-20180525-2~)
+
+Package: libicu70
+Architecture: amd64
+Version: 70.1-2
+APT-ID: 2629
+Multi-Arch: same
+Source: icu
+Source-Version: 70.1-2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 5.2)
+Replaces: libiculx63 (<< 63.1-5)
+Breaks: libiculx63 (<< 63.1-5), openttd (<< 1.8.0-2~)
+
+Package: grub-pc
+Architecture: amd64
+Version: 2.06-2ubuntu7
+APT-ID: 913
+Multi-Arch: foreign
+Source: grub2
+Source-Version: 2.06-2ubuntu7
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: debconf (>= 0.5) | debconf-2.0, grub-common (= 2.06-2ubuntu7), grub2-common (= 2.06-2ubuntu7), grub-pc-bin (= 2.06-2ubuntu7), ucf, grub-gfxpayload-lists
+Conflicts: grub (<< 0.97-54), grub-coreboot, grub-efi-amd64, grub-efi-ia32, grub-ieee1275, grub-legacy, grub-xen
+Replaces: grub, grub-common (<= 1.97~beta2-1), grub-coreboot, grub-efi-amd64, grub-efi-ia32, grub-ieee1275, grub-legacy, grub2 (<< 2.06-2ubuntu7)
+
+Package: printer-driver-hpcups
+Architecture: amd64
+Version: 3.21.12+dfsg0-1
+APT-ID: 4969
+Source: hplip
+Source-Version: 3.21.12+dfsg0-1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: cups, cups-filters | ghostscript-cups, libc6 (>= 2.34), libcups2 (>= 2.3~b6), libdbus-1-3 (>= 1.9.14), libgcc-s1 (>= 3.3.1), libhpmud0 (>= 3.21.12+dfsg0), libjpeg8 (>= 8c), libstdc++6 (>= 5.2), zlib1g (>= 1:1.1.4)
+Suggests: hplip (= 3.21.12+dfsg0-1), hplip-doc
+
+Package: bsdutils
+Architecture: amd64
+Version: 1:2.37.2-4ubuntu3
+APT-ID: 147
+Essential: yes
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: important
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Pre-Depends: libc6 (>= 2.34), libsystemd0
+Recommends: bsdextrautils
+
+Package: yaru-theme-gnome-shell
+Architecture: all
+Version: 22.04.4
+APT-ID: 6068
+Source: yaru-theme
+Source-Version: 22.04.4
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Breaks: gnome-shell (<< 42~)
+
+Package: python3-problem-report
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 74340
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any (>= 3.0~)
+
+Package: gnome-startup-applications
+Architecture: amd64
+Version: 42.0-1ubuntu2
+APT-ID: 812
+Source: gnome-session
+Source-Version: 42.0-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gnome-session-bin (>= 42.0-1ubuntu2), gnome-session-common (>= 42.0-1ubuntu2)
+Replaces: gnome-session-bin (<< 3.28.0-0ubuntu4~), gnome-session-common (<< 3.28.0-0ubuntu4~)
+Breaks: gnome-session-bin (<< 3.28.0-0ubuntu4~), gnome-session-common (<< 3.28.0-0ubuntu4~)
+
+Package: libreoffice-style-elementary
+Architecture: all
+Version: 1:7.3.6-0ubuntu0.22.04.1
+APT-ID: 72694
+Source: libreoffice
+Source-Version: 1:7.3.6-0ubuntu0.22.04.1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libreoffice-style-colibre
+Recommends: libreoffice-common
+Enhances: libreoffice-core
+Provides: libreoffice-style
+
+Package: libmspub-0.1-1
+Architecture: amd64
+Version: 0.1.4-3build3
+APT-ID: 2971
+Multi-Arch: same
+Source: libmspub
+Source-Version: 0.1.4-3build3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.32), libgcc-s1 (>= 3.3.1), libicu70 (>= 70.1-1~), librevenge-0.0-0, libstdc++6 (>= 11), zlib1g (>= 1:1.1.4)
+
+Package: xserver-xorg-video-fbdev
+Architecture: amd64
+Version: 1:0.5.0-2build1
+APT-ID: 6056
+Source: xserver-xorg-video-fbdev
+Source-Version: 1:0.5.0-2build1
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Provides: xorg-driver-video
+
+Package: gir1.2-secret-1
+Architecture: amd64
+Version: 0.20.5-2
+APT-ID: 745
+Multi-Arch: same
+Source: libsecret
+Source-Version: 0.20.5-2
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-glib-2.0 (>= 1.29), libsecret-1-0 (>= 0.20.1)
+
+Package: iproute2
+Architecture: amd64
+Version: 5.15.0-1ubuntu2
+APT-ID: 1134
+Multi-Arch: foreign
+Source: iproute2
+Source-Version: 5.15.0-1ubuntu2
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: debconf (>= 0.5) | debconf-2.0, libbpf0 (>= 1:0.2), libbsd0 (>= 0.0), libc6 (>= 2.34), libcap2 (>= 1:2.10), libdb5.3, libelf1 (>= 0.131), libmnl0 (>= 1.0.3-4~), libselinux1 (>= 3.1~), libxtables12 (>= 1.6.0+snapshot20161117), libcap2-bin
+Suggests: iproute2-doc
+Recommends: libatm1 (>= 2.4.1-17~)
+Conflicts: arpd, iproute (<< 20130000-1)
+Replaces: iproute
+Provides: arpd
+
+Package: libnetplan0
+Architecture: amd64
+Version: 0.104-0ubuntu2.1
+APT-ID: 72468
+Multi-Arch: same
+Source: netplan.io
+Source-Version: 0.104-0ubuntu2.1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.27), libglib2.0-0 (>= 2.70.0), libuuid1 (>= 2.16), libyaml-0-2
+
+Package: libspeexdsp1
+Architecture: amd64
+Version: 1.2~rc1.2-1.1ubuntu3
+APT-ID: 3728
+Multi-Arch: same
+Source: speex
+Source-Version: 1.2~rc1.2-1.1ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: libavahi-client3
+Architecture: amd64
+Version: 0.8-5ubuntu5
+APT-ID: 1684
+Multi-Arch: same
+Source: avahi
+Source-Version: 0.8-5ubuntu5
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libavahi-common3 (= 0.8-5ubuntu5), libc6 (>= 2.34), libdbus-1-3 (>= 1.9.14)
+
+Package: fonts-lohit-taml-classical
+Architecture: all
+Version: 2.5.4-2
+APT-ID: 469
+Multi-Arch: foreign
+Source: fonts-lohit-taml-classical
+Source-Version: 2.5.4-2
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: fonts-lohit-tamil-classical
+Breaks: fonts-lohit-tamil-classical
+
+Package: gpgconf
+Architecture: amd64
+Version: 2.2.27-3ubuntu2.1
+APT-ID: 71884
+Multi-Arch: foreign
+Source: gnupg2
+Source-Version: 2.2.27-3ubuntu2.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libassuan0 (>= 2.5.0), libc6 (>= 2.34), libgcrypt20 (>= 1.9.0), libgpg-error0 (>= 1.42), libreadline8 (>= 6.0)
+Replaces: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+Breaks: gnupg (<< 2.1.21-4), gnupg-agent (<< 2.1.21-4)
+
+Package: libibus-1.0-5
+Architecture: amd64
+Version: 1.5.26-4
+APT-ID: 2618
+Multi-Arch: same
+Source: ibus
+Source-Version: 1.5.26-4
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libglib2.0-0 (>= 2.59.0)
+
+Package: glib-networking
+Architecture: amd64
+Version: 2.72.0-1
+APT-ID: 768
+Multi-Arch: same
+Source: glib-networking
+Source-Version: 2.72.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libglib2.0-0 (>= 2.69.0), libgnutls30 (>= 3.7.3), libproxy1v5 (>= 0.4.17), glib-networking-services (>= 2.72.0-1), glib-networking-services (<< 2.72.0-1.1~), glib-networking-common (>= 2.72.0-1), gsettings-desktop-schemas
+Breaks: balsa (<< 2.6.0-2ubuntu0.1), libsoup2.4-tests (<< 2.71.1-1~)
+
+Package: libdevmapper1.02.1
+Architecture: amd64
+Version: 2:1.02.175-2.1ubuntu4
+APT-ID: 2065
+Multi-Arch: same
+Source: lvm2
+Source-Version: 2.03.11-2.1ubuntu4
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libselinux1 (>= 3.1~), libudev1 (>= 183)
+Recommends: dmsetup (>= 2:1.02.175-2.1ubuntu4~)
+
+Package: libglib-perl
+Architecture: amd64
+Version: 3:1.329.3-2build1
+APT-ID: 2385
+Multi-Arch: same
+Source: libglib-perl
+Source-Version: 3:1.329.3-2build1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libglib2.0-0 (>= 2.41.1), libextutils-depends-perl
+
+Package: libcairo-perl
+Architecture: amd64
+Version: 1.109-2build1
+APT-ID: 1830
+Multi-Arch: same
+Source: libcairo-perl
+Source-Version: 1.109-2build1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl, perlapi-5.34.0, libc6 (>= 2.34), libcairo2 (>= 1.15.8)
+Suggests: libfont-freetype-perl
+
+Package: xinit
+Architecture: amd64
+Version: 1.4.1-0ubuntu4
+APT-ID: 6032
+Source: xinit
+Source-Version: 1.4.1-0ubuntu4
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libx11-6, coreutils (>= 7.4-1), x11-common, xauth
+Recommends: xserver-xorg | xserver, gnome-terminal | xterm | x-session-manager | x-window-manager | x-terminal-emulator
+
+Package: libsm6
+Architecture: amd64
+Version: 2:1.2.3-1build2
+APT-ID: 3683
+Multi-Arch: same
+Source: libsm
+Source-Version: 2:1.2.3-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libice6 (>= 1:1.0.0), libuuid1 (>= 2.16)
+
+Package: libss2
+Architecture: amd64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 72755
+Multi-Arch: same
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libcom-err2, libc6 (>= 2.34)
+Replaces: e2fsprogs (<< 1.34-1)
+
+Package: totem
+Architecture: amd64
+Version: 42.0-1ubuntu1
+APT-ID: 5859
+Source: totem
+Source-Version: 42.0-1ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libcairo2 (>= 1.14.0), libgdk-pixbuf-2.0-0 (>= 2.23.0), libglib2.0-0 (>= 2.56.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libgtk-3-0 (>= 3.22.0), libhandy-1-0 (>= 1.5.90), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libtotem-plparser18 (>= 3.26.0), libtotem0 (>= 42.0-1ubuntu1), libtotem0 (<< 42.1), libx11-6, grilo-plugins-0.3-base, totem-common (>= 42.0-1ubuntu1), gsettings-desktop-schemas, gstreamer1.0-gl, gstreamer1.0-gtk3, gstreamer1.0-plugins-base (>= 1.6.0), gstreamer1.0-plugins-good (>= 1.10), gstreamer1.0-x
+Suggests: gstreamer1.0-plugins-bad, gstreamer1.0-libav, gstreamer1.0-plugins-ugly, gnome-codec-install
+Recommends: gstreamer1.0-pulseaudio, totem-plugins
+
+Package: python3-cupshelpers
+Architecture: all
+Version: 1.5.16-0ubuntu3
+APT-ID: 5198
+Source: system-config-printer
+Source-Version: 1.5.16-0ubuntu3
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-cups (>= 1.9.42), python3-dbus, python3:any
+Replaces: python-cupshelpers (<= 1.5)
+Breaks: python-cupshelpers (<= 1.5)
+
+Package: python3-future
+Architecture: all
+Version: 0.18.2-5
+APT-ID: 5239
+Multi-Arch: foreign
+Source: python-future
+Source-Version: 0.18.2-5
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-lib2to3
+Suggests: python-future-doc
+
+Package: fonts-ubuntu
+Architecture: all
+Version: 0.83-6ubuntu1
+APT-ID: 543
+Multi-Arch: foreign
+Source: fonts-ubuntu
+Source-Version: 0.83-6ubuntu1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libnewt0.52
+Architecture: amd64
+Version: 0.52.21-5ubuntu2
+APT-ID: 3037
+Multi-Arch: same
+Source: newt
+Source-Version: 0.52.21-5ubuntu2
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libslang2 (>= 2.2.4)
+Recommends: libfribidi0
+
+Package: rhythmbox-data
+Architecture: all
+Version: 3.4.4-5ubuntu1
+APT-ID: 5601
+Multi-Arch: foreign
+Source: rhythmbox
+Source-Version: 3.4.4-5ubuntu1
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dconf-gsettings-backend | gsettings-backend
+Recommends: rhythmbox
+
+Package: libcupsfilters1
+Architecture: amd64
+Version: 1.28.15-0ubuntu1
+APT-ID: 1966
+Multi-Arch: same
+Source: cups-filters
+Source-Version: 1.28.15-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libcups2 (>= 2.3~b6), libdbus-1-3 (>= 1.9.14), libjpeg8 (>= 8c), libpng16-16 (>= 1.6.2-1), libtiff5 (>= 4.0.3)
+
+Package: policykit-1
+Architecture: amd64
+Version: 0.105-33
+APT-ID: 4929
+Multi-Arch: foreign
+Source: policykit-1
+Source-Version: 0.105-33
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: pkexec (= 0.105-33), polkitd (= 0.105-33)
+
+Package: libclutter-gst-3.0-0
+Architecture: amd64
+Version: 3.0.27-2ubuntu1
+APT-ID: 72294
+Multi-Arch: same
+Source: clutter-gst-3.0
+Source-Version: 3.0.27-2ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libclutter-1.0-0 (>= 1.20.0), libcogl20 (>= 1.17.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgstreamer-plugins-base1.0-0 (>= 1.6.0), libgstreamer1.0-0 (>= 1.4.0), libgudev-1.0-0 (>= 146), libx11-6
+
+Package: libcanberra0
+Architecture: amd64
+Version: 0.30-10ubuntu1
+APT-ID: 1847
+Multi-Arch: same
+Source: libcanberra
+Source-Version: 0.30-10ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libltdl7 (>= 2.4.6), libtdb1 (>= 1.2.7+git20101214), libvorbisfile3 (>= 1.1.2), sound-theme-freedesktop
+Suggests: libcanberra-gtk0, libcanberra-pulse
+
+Package: libnss-mdns
+Architecture: amd64
+Version: 0.15.1-1ubuntu1
+APT-ID: 3092
+Multi-Arch: same
+Source: nss-mdns
+Source-Version: 0.15.1-1ubuntu1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: base-files (>= 3.1.10), libc6 (>= 2.34)
+Suggests: avahi-autoipd | zeroconf
+Recommends: avahi-daemon (>= 0.6.16-1)
+
+Package: libtotem-plparser18
+Architecture: amd64
+Version: 3.26.6-1build1
+APT-ID: 3883
+Multi-Arch: same
+Source: totem-pl-parser
+Source-Version: 3.26.6-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libarchive13 (>= 3.0.4), libc6 (>= 2.33), libgcrypt20 (>= 1.9.0), libglib2.0-0 (>= 2.56.0), libxml2 (>= 2.7.4), libtotem-plparser-common
+
+Package: libgdbm6
+Architecture: amd64
+Version: 1.23-1
+APT-ID: 2332
+Multi-Arch: same
+Source: gdbm
+Source-Version: 1.23-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+Suggests: gdbm-l10n (= 1.23-1)
+
+Package: xdg-desktop-portal
+Architecture: amd64
+Version: 1.14.4-1ubuntu2~22.04.1
+APT-ID: 74548
+Multi-Arch: foreign
+Source: xdg-desktop-portal
+Source-Version: 1.14.4-1ubuntu2~22.04.1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: bubblewrap, default-dbus-session-bus | dbus-session-bus, fuse3, init-system-helpers (>= 1.52), libc6 (>= 2.34), libfuse3-3 (>= 3.2.3), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.70.0), libjson-glib-1.0-0 (>= 1.5.2), libpipewire-0.3-0 (>= 0.3.10), libsystemd0
+Replaces: flatpak (<< 0.10.4-1~)
+Breaks: flatpak (<< 0.10.4-1~)
+
+Package: python3-gi-cairo
+Architecture: amd64
+Version: 3.42.1-0ubuntu1
+APT-ID: 74322
+Source: pygobject
+Source-Version: 3.42.1-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-cairo (>= 1.11.1), python3-gi (= 3.42.1-0ubuntu1), python3 (<< 3.11), python3 (>= 3.10~), libc6 (>= 2.4), libcairo-gobject2 (>= 1.12.16), libcairo2 (>= 1.10.0), libglib2.0-0 (>= 2.56.0)
+
+Package: gir1.2-gck-1
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 672
+Multi-Arch: same
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgck-1-0 (= 3.40.0-4), gir1.2-glib-2.0 (>= 1.34)
+
+Package: libcolord-gtk1
+Architecture: amd64
+Version: 0.3.0-1
+APT-ID: 1924
+Multi-Arch: same
+Source: colord-gtk
+Source-Version: 0.3.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libcairo2 (>= 1.2.4), libcolord2 (>= 1.4.3), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.0.0)
+Recommends: colord
+
+Package: apport
+Architecture: all
+Version: 2.20.11-0ubuntu82.1
+APT-ID: 71706
+Source: apport
+Source-Version: 2.20.11-0ubuntu82.1
+Priority: optional
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3, python3-apport (>= 2.20.11-0ubuntu82.1), lsb-base (>= 3.0-6), python3-gi, gir1.2-glib-2.0 (>= 1.29.17)
+Suggests: apport-gtk | apport-kde, policykit-1
+Recommends: apport-symptoms, python3-systemd
+Conflicts: core-dump-handler
+Replaces: core-dump-handler, python-apport (<< 2.2-0ubuntu1)
+Breaks: python-apport (<< 2.2-0ubuntu1)
+Provides: core-dump-handler
+
+Package: libuv1
+Architecture: amd64
+Version: 1.43.0-1
+APT-ID: 3979
+Multi-Arch: same
+Source: libuv1
+Source-Version: 1.43.0-1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libpsl5
+Architecture: amd64
+Version: 0.21.0-1.2build2
+APT-ID: 3320
+Multi-Arch: same
+Source: libpsl
+Source-Version: 0.21.0-1.2build2
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libidn2-0 (>= 0.16), libc6 (>= 2.33), libunistring2 (>= 0.9.7)
+Recommends: publicsuffix (>= 20150507)
+
+Package: libdrm-intel1
+Architecture: amd64
+Version: 2.4.110-1ubuntu1
+APT-ID: 2094
+Multi-Arch: same
+Source: libdrm
+Source-Version: 2.4.110-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.17), libdrm2 (>= 2.4.108), libpciaccess0
+
+Package: libproxy1-plugin-gsettings
+Architecture: amd64
+Version: 0.4.17-2
+APT-ID: 3314
+Multi-Arch: same
+Source: libproxy
+Source-Version: 0.4.17-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libglib2.0-0 (>= 2.45.3), libproxy1v5 (= 0.4.17-2), libstdc++6 (>= 5.2), gsettings-desktop-schemas
+Enhances: libproxy1v5
+
+Package: dns-root-data
+Architecture: all
+Version: 2021011101
+APT-ID: 335
+Multi-Arch: foreign
+Source: dns-root-data
+Source-Version: 2021011101
+Priority: optional
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: netcat-openbsd
+Architecture: amd64
+Version: 1.218-4ubuntu1
+APT-ID: 4740
+Source: netcat-openbsd
+Source-Version: 1.218-4ubuntu1
+Priority: required
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.2.0), libc6 (>= 2.34)
+Replaces: netcat (<< 1.10-35)
+Breaks: netcat (<< 1.10-35)
+Provides: netcat
+
+Package: gir1.2-atspi-2.0
+Architecture: amd64
+Version: 2.44.0-3
+APT-ID: 639
+Multi-Arch: same
+Source: at-spi2-core
+Source-Version: 2.44.0-3
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gir1.2-freedesktop, gir1.2-glib-2.0, libatspi2.0-0 (>= 2.44.0-3)
+Replaces: gir1.0-gtk-2.0 (<< 2.22), gobject-introspection-repository
+
+Package: intel-microcode
+Architecture: amd64
+Version: 3.20220809.0ubuntu0.22.04.1
+APT-ID: 71906
+Source: intel-microcode
+Source-Version: 3.20220809.0ubuntu0.22.04.1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: iucode-tool (>= 1.0)
+Recommends: initramfs-tools (>= 0.113~)
+Conflicts: microcode.ctl (<< 0.18~0)
+
+Package: bsdextrautils
+Architecture: amd64
+Version: 2.37.2-4ubuntu3
+APT-ID: 146
+Multi-Arch: foreign
+Source: util-linux
+Source-Version: 2.37.2-4ubuntu3
+Priority: standard
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libsmartcols1 (>= 2.31.1), libtinfo6 (>= 6)
+Replaces: bsdmainutils (<< 12.1.3)
+Breaks: bsdmainutils (<< 12.1.3)
+
+Package: python3-zipp
+Architecture: all
+Version: 1.0.0-3
+APT-ID: 5546
+Source: python-zipp
+Source-Version: 1.0.0-3
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-more-itertools, python3:any
+
+Package: libxfixes3
+Architecture: amd64
+Version: 1:6.0.0-1
+APT-ID: 4204
+Multi-Arch: same
+Source: libxfixes
+Source-Version: 1:6.0.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0)
+
+Package: libayatana-indicator3-7
+Architecture: amd64
+Version: 0.9.1-1
+APT-ID: 1705
+Multi-Arch: same
+Source: libayatana-indicator
+Source-Version: 0.9.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libayatana-ido3-0.4-0 (>= 0.9.0), libc6 (>= 2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.4)
+
+Package: fonts-indic
+Architecture: all
+Version: 2:1.4
+APT-ID: 448
+Multi-Arch: foreign
+Source: fonts-indic
+Source-Version: 2:1.4
+Priority: optional
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+Depends: fonts-beng, fonts-deva, fonts-gujr, fonts-guru, fonts-knda, fonts-mlym, fonts-orya, fonts-pagul, fonts-taml, fonts-telu
+Replaces: ttf-indic-fonts
+Breaks: ttf-indic-fonts (<< 2:1.0)
+
+Package: libstdc++6
+Architecture: amd64
+Version: 12.1.0-2ubuntu1~22.04
+APT-ID: 72770
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12.1.0-2ubuntu1~22.04
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-12-base (= 12.1.0-2ubuntu1~22.04), libc6 (>= 2.34), libgcc-s1 (>= 4.2)
+Conflicts: scim (<< 1.4.2-1)
+Replaces: libstdc++6-12-dbg (<< 4.9.0-3)
+Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+
+Package: libxdmcp6
+Architecture: amd64
+Version: 1:1.1.3-0ubuntu5
+APT-ID: 4198
+Multi-Arch: same
+Source: libxdmcp
+Source-Version: 1:1.1.3-0ubuntu5
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libbsd0 (>= 0.2.0), libc6 (>= 2.4)
+
+Package: python3-paramiko
+Architecture: all
+Version: 2.9.3-0ubuntu1
+APT-ID: 5387
+Source: paramiko
+Source-Version: 2.9.3-0ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-bcrypt (>= 3.1.3), python3-cryptography (>= 2.5), python3-nacl (>= 1.0.1), python3-six, python3:any
+Suggests: python3-gssapi (>= 0.6.1), python3-invoke
+
+Package: python3-secretstorage
+Architecture: all
+Version: 3.3.1-1
+APT-ID: 5468
+Source: python-secretstorage
+Source-Version: 3.3.1-1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, python3-jeepney (>= 0.6), python3-cryptography (>= 2.0), python3:any
+Suggests: gnome-keyring (>= 2.30), python-secretstorage-doc
+
+Package: thunderbird-gnome-support
+Architecture: amd64
+Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+APT-ID: 74437
+Source: thunderbird
+Source-Version: 1:91.11.0+build2-0ubuntu0.22.04.1
+Priority: optional
+Section: mail
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: thunderbird (= 1:91.11.0+build2-0ubuntu0.22.04.1), libmessaging-menu0, libunity9, libnotify4 | libnotify1
+
+Package: libexif12
+Architecture: amd64
+Version: 0.6.24-1build1
+APT-ID: 2181
+Multi-Arch: same
+Source: libexif
+Source-Version: 0.6.24-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.29)
+
+Package: libbabeltrace1
+Architecture: amd64
+Version: 1.5.8-2build1
+APT-ID: 1711
+Multi-Arch: same
+Source: babeltrace
+Source-Version: 1.5.8-2build1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libdw1 (>= 0.126), libelf1 (>= 0.131), libglib2.0-0 (>= 2.30.0), libuuid1 (>= 2.16)
+Replaces: libbabeltrace-ctf1 (<< 1.5.3-2~)
+Breaks: libbabeltrace-ctf1 (<< 1.5.3-2~)
+Provides: libbabeltrace-ctf1 (= 1.5.8-2build1)
+
+Package: libu2f-udev
+Architecture: all
+Version: 1.1.10-3build2
+APT-ID: 3911
+Multi-Arch: foreign
+Source: libu2f-host
+Source-Version: 1.1.10-3build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: udev (>= 244)
+
+Package: libsource-highlight4v5
+Architecture: amd64
+Version: 3.1.9-4.1build2
+APT-ID: 3714
+Source: source-highlight
+Source-Version: 3.1.9-4.1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libsource-highlight-common, libboost-regex1.74.0-icu70, libc6 (>= 2.14), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11)
+Conflicts: libsource-highlight4
+Replaces: libsource-highlight4
+
+Package: p11-kit
+Architecture: amd64
+Version: 0.24.0-6build1
+APT-ID: 4839
+Source: p11-kit
+Source-Version: 0.24.0-6build1
+Priority: extra
+Section: misc
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: p11-kit-modules (>= 0.24.0-6build1), libc6 (>= 2.34), libp11-kit0 (>= 0.23.18.1), libtasn1-6 (>= 4.14)
+
+Package: libnet-smtp-ssl-perl
+Architecture: all
+Version: 1.04-1
+APT-ID: 3021
+Source: libnet-smtp-ssl-perl
+Source-Version: 1.04-1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libio-socket-ssl-perl, perl
+Recommends: libauthen-sasl-perl
+
+Package: libncurses6
+Architecture: amd64
+Version: 6.3-2
+APT-ID: 2999
+Multi-Arch: same
+Source: ncurses
+Source-Version: 6.3-2
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libtinfo6 (= 6.3-2), libc6 (>= 2.34)
+Recommends: libgpm2
+Breaks: cowdancer (<< 0.89~)
+
+Package: policykit-desktop-privileges
+Architecture: all
+Version: 0.21
+APT-ID: 4931
+Source: policykit-desktop-privileges
+Source-Version: 0.21
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: policykit-1
+Breaks: gnome-settings-daemon (<< 3.6.4-0ubuntu8)
+
+Package: fwupd
+Architecture: amd64
+Version: 1.7.5-3
+APT-ID: 568
+Multi-Arch: foreign
+Source: fwupd
+Source-Version: 1.7.5-3
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libfwupd2 (= 1.7.5-3), libfwupdplugin5 (= 1.7.5-3), libc6 (>= 2.34), libcurl3-gnutls (>= 7.63.0), libefiboot1 (>= 37), libflashrom1, libglib2.0-0 (>= 2.70.0), libgnutls30 (>= 3.7.3), libgudev-1.0-0 (>= 165), libgusb2 (>= 0.3.6), libjcat1 (>= 0.1.3), libjson-glib-1.0-0 (>= 1.5.2), libmbim-glib4 (>= 1.26.0), libmbim-proxy, libmm-glib0 (>= 1.10.0), libpolkit-gobject-1-0 (>= 0.99), libqmi-glib5 (>= 1.18.0), libqmi-proxy, libsmbios-c2, libsqlite3-0 (>= 3.6.1), libsystemd0, libtss2-esys-3.0.2-0 (>= 2.3.1), libxmlb2 (>= 0.3.2), shared-mime-info
+Suggests: gir1.2-fwupd-2.0
+Recommends: python3, bolt, dbus, secureboot-db, udisks2, fwupd-signed
+Conflicts: fwupdate-amd64-signed, fwupdate-arm64-signed, fwupdate-armhf-signed, fwupdate-i386-signed
+Replaces: fwupdate (<< 12-7), gir1.2-dfu-1.0 (<< 0.9.7-1), libdfu-dev (<< 0.9.7-1), libdfu1 (<< 0.9.7-1)
+Breaks: fwupdate (<< 12-7), gir1.2-dfu-1.0 (<< 0.9.7-1), libdfu-dev (<< 0.9.7-1), libdfu1 (<< 0.9.7-1)
+Provides: fwupdate
+
+Package: libmtp-runtime
+Architecture: amd64
+Version: 1.1.19-1build1
+APT-ID: 2980
+Source: libmtp
+Source-Version: 1.1.19-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libmtp-common, libmtp9 (= 1.1.19-1build1), libc6 (>= 2.34)
+Enhances: libmtp9
+
+Package: libxi6
+Architecture: amd64
+Version: 2:1.8-1build1
+APT-ID: 4210
+Multi-Arch: same
+Source: libxi
+Source-Version: 2:1.8-1build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: python3-systemd
+Architecture: amd64
+Version: 234-3ubuntu2
+APT-ID: 5497
+Source: python-systemd
+Source-Version: 234-3ubuntu2
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3 (<< 3.11), python3 (>= 3.10~), python3:any, libc6 (>= 2.17), libsystemd0 (>= 246)
+
+Package: ubuntu-minimal
+Architecture: amd64
+Version: 1.481
+APT-ID: 5889
+Source: ubuntu-meta
+Source-Version: 1.481
+Priority: required
+Section: metapackages
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: adduser, apt, apt-utils, console-setup, debconf, debconf-i18n, e2fsprogs, eject, init, iproute2, iputils-ping, isc-dhcp-client, kbd, kmod, less, locales, lsb-release, mawk, mount, netbase, netcat-openbsd, netplan.io, passwd, procps, python3, sensible-utils, sudo, tzdata, ubuntu-advantage-tools, ubuntu-keyring, udev, vim-tiny, whiptail
+Recommends: rsyslog, usrmerge
+
+Package: libdebconfclient0
+Architecture: amd64
+Version: 0.261ubuntu1
+APT-ID: 2041
+Multi-Arch: same
+Source: cdebconf
+Source-Version: 0.261ubuntu1
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+Depends: libc6 (>= 2.4)
+
+Package: iputils-tracepath
+Architecture: amd64
+Version: 3:20211215-1
+APT-ID: 1141
+Multi-Arch: foreign
+Source: iputils
+Source-Version: 3:20211215-1
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+Suggests: traceroute
+
+Package: libxt6
+Architecture: amd64
+Version: 1:1.2.1-1
+APT-ID: 4273
+Multi-Arch: same
+Source: libxt
+Source-Version: 1:1.2.1-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libice6 (>= 1:1.0.0), libsm6, libx11-6
+
+Package: libxv1
+Architecture: amd64
+Version: 2:1.0.11-1build2
+APT-ID: 4280
+Multi-Arch: same
+Source: libxv
+Source-Version: 2:1.0.11-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libx11-6 (>= 2:1.6.0), libxext6
+
+Package: libgail-common
+Architecture: amd64
+Version: 2.24.33-2ubuntu2
+APT-ID: 2287
+Multi-Arch: same
+Source: gtk+2.0
+Source-Version: 2.24.33-2ubuntu2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libatk1.0-0 (>= 1.32.0), libc6 (>= 2.4), libgail18 (= 2.24.33-2ubuntu2), libgdk-pixbuf-2.0-0 (>= 2.22.1), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.0), libpango-1.0-0 (>= 1.28.3), libx11-6
+
+Package: fonts-tlwg-typewriter-ttf
+Architecture: all
+Version: 1:0.7.3-1
+APT-ID: 534
+Multi-Arch: foreign
+Source: fonts-tlwg
+Source-Version: 1:0.7.3-1
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-tlwg-typewriter (>= 1:0.6.2-2)
+Replaces: fonts-tlwg-typewriter (<< 1:0.6.2-2)
+Breaks: fonts-tlwg-typewriter (<< 1:0.6.2-2)
+
+Package: foomatic-db-compressed-ppds
+Architecture: all
+Version: 20220223-0ubuntu1
+APT-ID: 548
+Multi-Arch: foreign
+Source: foomatic-db
+Source-Version: 20220223-0ubuntu1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, xz-utils
+Suggests: cups-filters, hplip, hplip-cups, openprinting-ppds, printer-driver-all
+Recommends: cups, cups-client, cups-filters | foomatic-filters, ghostscript
+Conflicts: foomatic-db, foomatic-db-hpijs
+Replaces: foomatic-db, foomatic-db-hpijs
+Breaks: foomatic-db
+Provides: foomatic-db
+
+Package: gnome-session-common
+Architecture: all
+Version: 42.0-1ubuntu2
+APT-ID: 803
+Source: gnome-session
+Source-Version: 42.0-1ubuntu2
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: gnome-session-bin (<< 3.37.0-2~)
+Breaks: eog (<< 3.36.0), evince (<< 3.30), evolution (<< 3.30.0), gnome-session-bin (<< 3.37.0-2~)
+
+Package: iso-codes
+Architecture: all
+Version: 4.9.0-1
+APT-ID: 1153
+Multi-Arch: foreign
+Source: iso-codes
+Source-Version: 4.9.0-1
+Priority: required
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Suggests: isoquery
+
+Package: liborc-0.4-0
+Architecture: amd64
+Version: 1:0.4.32-2
+APT-ID: 3145
+Multi-Arch: same
+Source: orc
+Source-Version: 1:0.4.32-2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14)
+
+Package: libparted2
+Architecture: amd64
+Version: 3.4-2build1
+APT-ID: 3206
+Multi-Arch: same
+Source: parted
+Source-Version: 3.4-2build1
+Priority: standard
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.34), libdevmapper1.02.1 (>= 2:1.02.97), libuuid1 (>= 2.16), dmidecode
+Suggests: parted, libparted-dev, libparted-i18n (= 3.4-2build1)
+Provides: libparted
+
+Package: libgsf-1-common
+Architecture: all
+Version: 1.14.47-1build2
+APT-ID: 2502
+Multi-Arch: foreign
+Source: libgsf
+Source-Version: 1.14.47-1build2
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Replaces: libgsf-1 (<= 1.12.3-4)
+
+Package: libwacom-bin
+Architecture: amd64
+Version: 2.2.0-1
+APT-ID: 4035
+Multi-Arch: foreign
+Source: libwacom
+Source-Version: 2.2.0-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libglib2.0-0 (>= 2.28.0), libgudev-1.0-0 (>= 146), libwacom9 (>= 2.0.0), python3:any
+
+Package: openssl
+Architecture: amd64
+Version: 3.0.2-0ubuntu1.6
+APT-ID: 74255
+Multi-Arch: foreign
+Source: openssl
+Source-Version: 3.0.2-0ubuntu1.6
+Priority: required
+Section: utils
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libssl3 (>= 3.0.2-0ubuntu1.2)
+Suggests: ca-certificates
+
+Package: update-notifier-common
+Architecture: all
+Version: 3.192.54
+APT-ID: 5919
+Source: update-notifier
+Source-Version: 3.192.54
+Priority: optional
+Section: gnome
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3:any, python3-apt, python3-dbus, python3-debian, python3-debconf | debconf (<< 1.5.64~), python3-distro-info, lsb-release, patch, update-manager-core (>= 1:17.04.2)
+Pre-Depends: dpkg (>= 1.15.7.2), apt (>= 1.1~)
+Suggests: policykit-1
+Recommends: libpam-modules (>= 1.0.1-9ubuntu3)
+Replaces: update-notifier (<< 0.75.1)
+
+Package: fonts-sarai
+Architecture: all
+Version: 1.0-3
+APT-ID: 492
+Multi-Arch: foreign
+Source: fonts-sarai
+Source-Version: 1.0-3
+Priority: optional
+Section: fonts
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Recommends: fonts-gargi
+
+Package: python3-debian
+Architecture: all
+Version: 0.1.43ubuntu1
+APT-ID: 5206
+Source: python-debian
+Source-Version: 0.1.43ubuntu1
+Priority: optional
+Section: python
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: python3-chardet, zstd, python3:any
+Suggests: gpgv
+Recommends: python3-apt
+
+Package: xserver-xorg-video-qxl
+Architecture: amd64
+Version: 0.1.5+git20200331-3
+APT-ID: 6059
+Source: xserver-xorg-video-qxl
+Source-Version: 0.1.5+git20200331-3
+Priority: optional
+Section: x11
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.14), libudev1 (>= 183), xorg-video-abi-25, xserver-xorg-core (>= 2:21.1.1)
+Provides: xorg-driver-video
+
+Package: libebackend-1.2-10
+Architecture: amd64
+Version: 3.44.4-0ubuntu1
+APT-ID: 72315
+Multi-Arch: same
+Source: evolution-data-server
+Source-Version: 3.44.4-0ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.7), libcamel-1.2-63 (>= 3.19.92), libdb5.3, libedataserver-1.2-26 (= 3.44.4-0ubuntu1), libglib2.0-0 (>= 2.40), libsoup2.4-1 (>= 2.42), libsqlite3-0 (>= 3.6.0)
+
+Package: e2fsprogs
+Architecture: amd64
+Version: 1.46.5-2ubuntu1.1
+APT-ID: 71791
+Multi-Arch: foreign
+Source: e2fsprogs
+Source-Version: 1.46.5-2ubuntu1.1
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: logsave
+Pre-Depends: libblkid1 (>= 2.36), libc6 (>= 2.34), libcom-err2 (>= 1.43.9), libext2fs2 (= 1.46.5-2ubuntu1.1), libss2 (>= 1.38), libuuid1 (>= 2.16)
+Suggests: gpart, parted, fuse2fs, e2fsck-static
+Recommends: e2fsprogs-l10n
+
+Package: libinput-bin
+Architecture: amd64
+Version: 1.20.0-1ubuntu0.1
+APT-ID: 72426
+Multi-Arch: foreign
+Source: libinput
+Source-Version: 1.20.0-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34), libevdev2 (>= 1.10.0), libudev1 (>= 183), libwacom9 (>= 2.0.0)
+
+Package: libhttp-daemon-perl
+Architecture: all
+Version: 6.13-1ubuntu0.1
+APT-ID: 72424
+Source: libhttp-daemon-perl
+Source-Version: 6.13-1ubuntu0.1
+Priority: optional
+Section: perl
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: perl:any, libhttp-date-perl, libhttp-message-perl, libio-socket-ip-perl, liblwp-mediatypes-perl, libsocket-perl
+
+Package: passwd
+Architecture: amd64
+Version: 1:4.8.1-2ubuntu2
+APT-ID: 4855
+Multi-Arch: foreign
+Source: shadow
+Source-Version: 1:4.8.1-2ubuntu2
+Priority: important
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpam0g (>= 0.99.7.1), libselinux1 (>= 3.1~), libsemanage2 (>= 2.0.3), libpam-modules
+Recommends: sensible-utils
+
+Package: mobile-broadband-provider-info
+Architecture: all
+Version: 20220315-1
+APT-ID: 4653
+Multi-Arch: foreign
+Source: mobile-broadband-provider-info
+Source-Version: 20220315-1
+Priority: extra
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+
+Package: libspectre1
+Architecture: amd64
+Version: 0.2.10-1
+APT-ID: 3721
+Multi-Arch: same
+Source: libspectre
+Source-Version: 0.2.10-1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33), libgs9 (>= 9.53.0~dfsg)
+
+Package: nftables
+Architecture: amd64
+Version: 1.0.2-1ubuntu3
+APT-ID: 74223
+Source: nftables
+Source-Version: 1.0.2-1ubuntu3
+Priority: standard
+Section: net
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libnftables1 (= 1.0.2-1ubuntu3), libc6 (>= 2.34), libedit2 (>= 3.1-20130611-0)
+Suggests: firewalld
+Recommends: netbase
+
+Package: libxcb-xfixes0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4173
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: gir1.2-gcr-3
+Architecture: amd64
+Version: 3.40.0-4
+APT-ID: 673
+Multi-Arch: same
+Source: gcr
+Source-Version: 3.40.0-4
+Priority: optional
+Section: introspection
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libgcr-base-3-1 (= 3.40.0-4), libgcr-ui-3-1 (= 3.40.0-4), gir1.2-gck-1 (= 3.40.0-4), gir1.2-glib-2.0 (>= 1.34), gir1.2-gtk-3.0 (>= 3.22.0)
+Provides: gir1.2-gcrui-3 (= 3.40.0-4)
+
+Package: upower
+Architecture: amd64
+Version: 0.99.17-1
+APT-ID: 5920
+Multi-Arch: foreign
+Source: upower
+Source-Version: 0.99.17-1
+Priority: optional
+Section: admin
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: dbus, udev, libc6 (>= 2.34), libglib2.0-0 (>= 2.56), libgudev-1.0-0 (>= 235), libimobiledevice6 (>= 1.3.0), libplist3 (>= 2.2.0), libupower-glib3 (>= 0.99.8)
+Recommends: policykit-1
+
+Package: aspell
+Architecture: amd64
+Version: 0.60.8-4build1
+APT-ID: 57
+Multi-Arch: foreign
+Source: aspell
+Source-Version: 0.60.8-4build1
+Priority: optional
+Section: text
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libaspell15 (= 0.60.8-4build1), libc6 (>= 2.34), libncursesw6 (>= 6), libstdc++6 (>= 5), libtinfo6 (>= 6), dictionaries-common
+Suggests: aspell-doc, spellutils
+Recommends: aspell-en | aspell-dictionary | aspell6a-dictionary
+Replaces: aspell-bin (<< 0.60.3-2)
+Breaks: aspell-bin (<< 0.60.3-2)
+Provides: aspell-bin
+
+Package: libpipewire-0.3-0
+Architecture: amd64
+Version: 0.3.48-1ubuntu1
+APT-ID: 3258
+Multi-Arch: same
+Source: pipewire
+Source-Version: 0.3.48-1ubuntu1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libspa-0.2-modules (= 0.3.48-1ubuntu1), libc6 (>= 2.34)
+Recommends: pipewire (= 0.3.48-1ubuntu1), libpipewire-0.3-common
+
+Package: libnspr4
+Architecture: amd64
+Version: 2:4.32-3build1
+APT-ID: 3089
+Multi-Arch: same
+Source: nspr
+Source-Version: 2:4.32-3build1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.34)
+
+Package: libgcc-s1
+Architecture: amd64
+Version: 12.1.0-2ubuntu1~22.04
+APT-ID: 72364
+Multi-Arch: same
+Source: gcc-12
+Source-Version: 12.1.0-2ubuntu1~22.04
+Priority: important
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: gcc-12-base (= 12.1.0-2ubuntu1~22.04), libc6 (>= 2.35)
+Replaces: libgcc1 (<< 1:10)
+Provides: libgcc1 (= 1:12.1.0-2ubuntu1~22.04)
+
+Package: libxcb-xv0
+Architecture: amd64
+Version: 1.14-3ubuntu3
+APT-ID: 4183
+Multi-Arch: same
+Source: libxcb
+Source-Version: 1.14-3ubuntu3
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.4), libxcb1
+
+Package: libevdev2
+Architecture: amd64
+Version: 1.12.1+dfsg-1
+APT-ID: 2166
+Multi-Arch: same
+Source: libevdev
+Source-Version: 1.12.1+dfsg-1
+Priority: extra
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy,n=jammy,l=Ubuntu,c=main,b=amd64
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
+Depends: libc6 (>= 2.33)
+
+Package: libgdk-pixbuf2.0-common
+Architecture: all
+Version: 2.42.8+dfsg-1ubuntu0.1
+APT-ID: 72372
+Multi-Arch: foreign
+Source: gdk-pixbuf
+Source-Version: 2.42.8+dfsg-1ubuntu0.1
+Priority: optional
+Section: libs
+Installed: yes
+APT-Release:
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=main,b=i386
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=amd64
+ v=22.04,o=Ubuntu,a=jammy-updates,n=jammy,l=Ubuntu,c=main,b=i386
+APT-Pin: 500
+APT-Candidate: yes
+APT-Automatic: yes
diff --git a/test/integration/framework b/test/integration/framework
new file mode 100644
index 0000000..1eec8ca
--- /dev/null
+++ b/test/integration/framework
@@ -0,0 +1,2303 @@
+#!/bin/sh -- # no runable script, just for vi
+
+EXIT_CODE=0
+
+while [ -n "$1" -a -z "$CHECK_ARGS" ]; do
+ if [ "$1" = "-q" ]; then
+ export MSGLEVEL=2
+ elif [ "$1" = "-qq" ]; then
+ export MSGLEVEL=1
+ elif [ "$1" = "-v" ]; then
+ export MSGLEVEL=4
+ elif [ "$1" = '--color=no' ]; then
+ export MSGCOLOR='NO'
+ elif [ "$1" = '--color=yes' ]; then
+ export MSGCOLOR='YES'
+ elif [ "$1" = '--color' ]; then
+ export MSGCOLOR="$(echo "$2" | tr 'a-z' 'A-Z')"
+ shift
+ elif [ "$1" = '--level' ]; then
+ export MSGLEVEL=$2
+ shift
+ else
+ echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
+ fi
+ shift
+done
+export MSGLEVEL="${MSGLEVEL:-3}"
+
+# we all like colorful messages
+if [ "${MSGCOLOR:-YES}" = 'YES' ]; then
+ if [ ! -t 1 ]; then # but check that we output to a terminal
+ export MSGCOLOR='NO'
+ fi
+fi
+
+if [ "$MSGCOLOR" != 'NO' ]; then
+ CERROR="\033[1;31m" # red
+ CWARNING="\033[1;33m" # yellow
+ CMSG="\033[1;32m" # green
+ CINFO="\033[1;96m" # light blue
+ CDEBUG="\033[1;94m" # blue
+ CNORMAL="\033[0;39m" # default system console color
+ CDONE="\033[1;32m" # green
+ CPASS="\033[1;32m" # green
+ CFAIL="\033[1;31m" # red
+ CCMD="\033[1;35m" # pink
+fi
+
+msgprintf() {
+ local START="$1"
+ local MIDDLE="$2"
+ local END="$3"
+ shift 3
+ if [ -n "$1" ]; then
+ printf "$START " "$1"
+ shift
+ while [ -n "$1" ]; do
+ printf "$MIDDLE " "$(echo "$1" | sed -e 's#^apt\([cfghks]\)#apt-\1#')"
+ shift
+ done
+ fi
+ printf "${END}"
+}
+msgdie() { msgprintf "${CERROR}E: %s" '%s' "${CNORMAL}\n" "$@" >&2; exit 1; }
+msgwarn() { msgprintf "${CWARNING}W: %s" '%s' "${CNORMAL}\n" "$@" >&2; }
+msgmsg() { msgprintf "${CMSG}%s" '%s' "${CNORMAL}\n" "$@"; }
+msginfo() { msgprintf "${CINFO}I: %s" '%s' "${CNORMAL}\n" "$@"; }
+msgdebug() { msgprintf "${CDEBUG}D: %s" '%s' "${CNORMAL}\n" "$@"; }
+msgdone() { msgprintf "${CDONE}DONE" '%s' "${CNORMAL}\n" "$@"; }
+msgnwarn() { msgprintf "${CWARNING}W: %s" '%s' "${CNORMAL}" "$@" >&2; }
+msgnmsg() { msgprintf "${CMSG}%s" '%s' "${CNORMAL}" "$@"; }
+msgninfo() { msgprintf "${CINFO}I: %s" '%s' "${CNORMAL}" "$@"; }
+msgndebug() { msgprintf "${CDEBUG}D: %s" '%s' "${CNORMAL}" "$@"; }
+msgtest() { msgprintf "${CINFO}%s" "${CCMD}%s${CINFO}" "…${CNORMAL} " "$@"; }
+msgpass() { printf "${CPASS}PASS${CNORMAL}\n"; }
+msgreportheader() {
+ if [ -n "$MSGTEST_MSG" ]; then
+ test "$1" != 'msgfailoutput' || echo
+ if [ -n "$MSGTEST_MSGMSG" ]; then
+ echo "$MSGTEST_MSGMSG"
+ fi
+ if [ -n "$MSGTEST_GRP" ] && [ "$MSGTEST_GRP" != 'NEXT' ] && [ "$MSGTEST_GRP" != "$MSGTEST_MSG" ]; then
+ echo "${CFAIL}Part of the test group: $MSGTEST_GRP"
+ fi
+ echo -n "$MSGTEST_MSG"
+ unset MSGTEST_MSG
+ fi
+}
+msgskip() {
+ msgreportheader 'msgskip'
+ if [ $# -gt 0 ]; then printf "${CWARNING}SKIP: $*${CNORMAL}\n" >&2;
+ else printf "${CWARNING}SKIP${CNORMAL}\n" >&2; fi
+}
+msgfail() {
+ msgreportheader 'msgfail'
+ if [ $# -gt 0 ] && [ -n "$1" ]; then printf "${CFAIL}FAIL: $*${CNORMAL}\n" >&2;
+ else printf "${CFAIL}FAIL${CNORMAL}\n" >&2; fi
+ if [ -n "$APT_DEBUG_TESTS" ]; then
+ runapt $SHELL
+ fi
+ EXIT_CODE=$((EXIT_CODE+1));
+}
+MSGGROUP_LEVEL=0
+msggroup() {
+ if [ -n "$1" ]; then
+ if [ $MSGGROUP_LEVEL = 0 ]; then
+ MSGTEST_GRP='NEXT'
+ fi
+ MSGGROUP_LEVEL=$((MSGGROUP_LEVEL+1));
+ else
+ MSGGROUP_LEVEL=$((MSGGROUP_LEVEL-1));
+ if [ $MSGGROUP_LEVEL = 0 ]; then
+ unset MSGTEST_GRP
+ fi
+ fi
+}
+
+# enable / disable Debugging
+if [ $MSGLEVEL -le 0 ]; then
+ msgdie() { true; }
+fi
+if [ $MSGLEVEL -le 1 ]; then
+ msgwarn() { true; }
+ msgnwarn() { true; }
+fi
+if [ $MSGLEVEL -le 2 ]; then
+ msgmsg() {
+ MSGTEST_MSGMSG="$(msgprintf "${CMSG}%s" '%s' "${CNORMAL}" "$@")"
+ }
+ msgnmsg() { true; }
+ msgtest() {
+ MSGTEST_MSG="$(msgprintf "${CINFO}%s" "${CCMD}%s${CINFO}" "…${CNORMAL} " "$@")"
+ if [ "$MSGTEST_GRP" = 'NEXT' ]; then
+ MSGTEST_GRP="$MSGTEST_MSG"
+ fi
+ }
+ msgpass() { printf " ${CPASS}P${CNORMAL}"; }
+fi
+if [ $MSGLEVEL -le 3 ]; then
+ msginfo() { true; }
+ msgninfo() { true; }
+fi
+if [ $MSGLEVEL -le 4 ]; then
+ msgdebug() { true; }
+ msgndebug() { true; }
+fi
+if [ $MSGLEVEL -le 1 ]; then
+ msgpass() { true; }
+fi
+msgdone() {
+ if [ "$1" = "debug" -a $MSGLEVEL -le 4 ] ||
+ [ "$1" = "info" -a $MSGLEVEL -le 3 ] ||
+ [ "$1" = "msg" -a $MSGLEVEL -le 2 ] ||
+ [ "$1" = "warn" -a $MSGLEVEL -le 1 ] ||
+ [ "$1" = "die" -a $MSGLEVEL -le 0 ]; then
+ true;
+ else
+ printf "${CDONE}DONE${CNORMAL}\n";
+ fi
+}
+getaptconfig() {
+ if [ -f ./aptconfig.conf ]; then
+ echo "$(readlink -f ./aptconfig.conf)"
+ elif [ -f ../aptconfig.conf ]; then
+ echo "$(readlink -f ../aptconfig.conf)"
+ elif [ -f ../../aptconfig.conf ]; then
+ echo "$(readlink -f ../../aptconfig.conf)"
+ elif [ -f "${TMPWORKINGDIRECTORY}/aptconfig.conf" ]; then
+ echo "$(readlink -f "${TMPWORKINGDIRECTORY}/aptconfig.conf")"
+ fi
+}
+runapt() {
+ msgdebug "Executing: ${CCMD}$*${CDEBUG} "
+ local CMD="$1"
+ shift
+ case "$CMD" in
+ sh|aptitude|*/*|command) ;;
+ *) CMD="${APTCMDLINEBINDIR}/$CMD";;
+ esac
+ if [ "$CMD" = 'aptitude' ]; then
+ MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" command "$CMD" "$@"
+ else
+ MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" "$CMD" "$@"
+ fi
+}
+runpython3() { runapt command python3 "$@"; }
+aptconfig() { runapt apt-config "$@"; }
+aptcache() { runapt apt-cache "$@"; }
+aptcdrom() { runapt apt-cdrom "$@"; }
+aptget() { runapt apt-get "$@"; }
+aptftparchive() { runapt "${APTFTPARCHIVEBINDIR}/apt-ftparchive" "$@"; }
+aptkey() { runapt apt-key "$@"; }
+aptmark() { runapt apt-mark "$@"; }
+aptsortpkgs() { runapt apt-sortpkgs "$@"; }
+apt() { runapt apt "$@"; }
+apthelper() { runapt "${APTHELPERBINDIR}/apt-helper" "$@"; }
+aptwebserver() { runapt "${APTTESTHELPERSBINDIR}/aptwebserver" "$@"; }
+aptitude() { runapt aptitude "$@"; }
+aptextracttemplates() { runapt apt-extracttemplates "$@"; }
+aptinternalsolver() { runapt "${APTINTERNALSOLVER}" "$@"; }
+aptdumpsolver() { runapt "${APTDUMPSOLVER}" "$@"; }
+aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; }
+
+dpkg() {
+ "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
+}
+dpkgquery() {
+ command dpkg-query --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@"
+}
+dpkg_version() {
+ command perl -MDpkg -E 'say $Dpkg::PROGVERSION'
+}
+dpkgcheckbuilddeps() {
+ command dpkg-checkbuilddeps --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@"
+}
+gdb() {
+ local CMD
+ case "$1" in
+ aptget) CMD="apt-get";;
+ aptcache) CMD="apt-cache";;
+ aptcdrom) CMD="apt-cdrom";;
+ aptconfig) CMD="apt-config";;
+ aptmark) CMD="apt-mark";;
+ apthelper) CMD="apt-helper";;
+ aptftparchive) CMD="apt-ftparchive";;
+ dpkg) shift; runapt "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" "$@"; return;;
+ *) CMD="$1";;
+ esac
+ shift
+ if [ "${CMD##*/}" = "$CMD" ]; then
+ CMD="${APTCMDLINEBINDIR}/${CMD}"
+ fi
+ runapt command gdb --quiet -ex "directory '$SOURCEDIRECTORY'" -ex run "$CMD" --args "$CMD" "$@"
+}
+
+valgrind() {
+ local CMD
+ case "$1" in
+ aptget) CMD="apt-get";;
+ aptcache) CMD="apt-cache";;
+ aptcdrom) CMD="apt-cdrom";;
+ aptconfig) CMD="apt-config";;
+ aptmark) CMD="apt-mark";;
+ apthelper) CMD="apt-helper";;
+ aptftparchive) CMD="apt-ftparchive";;
+ dpkg) shift; runapt "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" "$@"; return;;
+ *) CMD="$1";;
+ esac
+ shift
+ if [ "${CMD##*/}" = "$CMD" ]; then
+ CMD="${APTCMDLINEBINDIR}/${CMD}"
+ fi
+ runapt command valgrind "$CMD" "$@"
+}
+
+lastmodification() {
+ date -u -d "@$(stat -c '%Y' "${TMPWORKINGDIRECTORY}/$1")" -R
+}
+releasefiledate() {
+ grep "^${2:-Date}:" "$1" | cut -d' ' -f 2-
+}
+
+exitwithstatus() {
+ # error if we about to overflow, but ...
+ # "255 failures ought to be enough for everybody"
+ if [ $EXIT_CODE -gt 255 ]; then
+ msgdie "Total failure count $EXIT_CODE too big"
+ fi
+ exit $((EXIT_CODE <= 255 ? EXIT_CODE : 255));
+}
+
+shellsetedetector() {
+ local exit_status=$?
+ if [ "$exit_status" != '0' ]; then
+ printf >&2 "${CERROR}E: Looks like the testcases ended prematurely with exitcode: ${exit_status}${CNORMAL}\n"
+ if [ "$EXIT_CODE" = '0' ]; then
+ EXIT_CODE="$exit_status"
+ fi
+ fi
+}
+
+addtrap() {
+ if [ "$1" = 'prefix' ]; then
+ CURRENTTRAP="$2 $CURRENTTRAP"
+ else
+ CURRENTTRAP="$CURRENTTRAP $1"
+ fi
+ trap "shellsetedetector; $CURRENTTRAP exitwithstatus;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+}
+
+escape_shell() {
+ echo "$@" | sed -e "s#'#'\"'\"'#g"
+}
+
+find_project_binary_dir() {
+ if [ -z "$PROJECT_BINARY_DIR" ]; then
+ PROJECT_BINARY_DIR=
+ for dir in ${TESTDIRECTORY}/../../ ${TESTDIRECTORY}/../../*; do
+ test -e "$dir/CMakeCache.txt" || continue
+ if [ -z "$PROJECT_BINARY_DIR" ] ||
+ [ "$dir/CMakeCache.txt" -nt "$PROJECT_BINARY_DIR/CMakeCache.txt" ]; then
+ PROJECT_BINARY_DIR="$dir"
+ fi
+ done
+ if [ -z "$PROJECT_BINARY_DIR" ]; then
+ echo "Cannot find build directory, you might want to set PROJECT_BINARY_DIR" >&2
+ exit 1
+ fi
+ export PROJECT_BINARY_DIR
+ fi
+}
+_removetmpworkingdirectory() {
+ cd /
+ if [ -n "$TMPWORKINGDIRECTORY" -a -d "$TMPWORKINGDIRECTORY" ]; then
+ rm -rf "$TMPWORKINGDIRECTORY"
+ fi
+ TMPWORKINGDIRECTORY=''
+}
+setupenvironment() {
+ # cleanup the environment a bit
+ export LC_ALL=C
+ unset LANGUAGE COLUMNS NLSPATH
+ unset APT_CONFIG DPKG_ADMINDIR DPKG_COLORS
+ unset DEB_CHECK_COMMAND DEB_SIGN_KEYID DEB_BUILD_OPTIONS DEB_BUILD_PROFILES
+ unset DH_VERBOSE DH_QUIET DH_COMPAT DH_NO_ACT DH_OPTIONS DH_EXTRA_ADDONS
+ unset GREP_OPTIONS POSIXLY_CORRECT
+ unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy
+ export GCOV_ERROR_FILE=/dev/null
+
+ # Next check needs a gnu stat, let's figure that out early.
+ stat=stat
+ if command -v gnustat >/dev/null 2>&1; then
+ stat=gnustat
+ fi
+ # privilege dropping and testing doesn't work if /tmp isn't world-writeable (as e.g. with libpam-tmpdir)
+ if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$($stat --format '%a' "$TMPDIR")" != '1777' ]; then
+ unset TMPDIR
+ fi
+ if [ -z "$TMPWORKINGDIRECTORY" ]; then
+ addtrap '_removetmpworkingdirectory;'
+ TMPWORKINGDIRECTORY="$(mktemp -d)"
+ fi
+ if [ -n "$TMPDIR_ADD" ]; then
+ TMPWORKINGDIRECTORY="${TMPWORKINGDIRECTORY}/${TMPDIR_ADD}"
+ mkdir -p "$TMPWORKINGDIRECTORY"
+ unset TMPDIR_ADD
+ export TMPDIR="$TMPWORKINGDIRECTORY"
+ fi
+ msgninfo "Preparing environment for ${0##*/} in ${TMPWORKINGDIRECTORY}…"
+
+ # Setup coreutils on BSD systems
+ mkdir "${TMPWORKINGDIRECTORY}/bin"
+ for prefix in gnu g; do
+ for command in stat touch sed cp tr sha1sum sha256sum md5sum sha512sum grep date wc chmod head readlink tar expr base64; do
+ if command -v $prefix$command 2>/dev/null >/dev/null; then
+ [ -e "${TMPWORKINGDIRECTORY}/bin/$command" ] || ln -sf $(command -v $prefix$command) "${TMPWORKINGDIRECTORY}/bin/$command"
+ fi
+ done
+ done
+ export PATH="${TMPWORKINGDIRECTORY}/bin/:$PATH"
+
+ if [ -z "$TESTDIRECTORY" ]; then
+ TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
+ fi
+ cd "$TMPWORKINGDIRECTORY"
+
+ mkdir -m 700 'downloaded'
+ if [ "$(id -u)" = '0' ]; then
+ # relax permissions so that running as root with user switching works
+ umask 022
+ chmod 711 "$TMPWORKINGDIRECTORY"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/downloaded"
+ fi
+ mkdir -p 'rootdir/usr/bin' 'rootdir/var/cache' 'rootdir/var/lib' 'rootdir/var/log' 'rootdir/var/crash' 'rootdir/tmp'
+
+ _setupprojectenvironment
+
+ # create some files in /tmp and look at user/group to get what this means
+ TEST_DEFAULT_USER="$(id -un)"
+ touch "${TMPWORKINGDIRECTORY}/test-file"
+ TEST_DEFAULT_GROUP=$(stat --format '%G' "${TMPWORKINGDIRECTORY}/test-file")
+
+ if [ -r "${TESTDIRECTORY}/extra-environment" ]; then
+ . "${TESTDIRECTORY}/extra-environment"
+ fi
+
+ msgdone "info"
+}
+_setupprojectenvironment() {
+ # allow overriding the default BUILDDIR locations
+ SOURCEDIRECTORY="${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}"
+ BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"$(find_project_binary_dir; printf '%s' "$PROJECT_BINARY_DIR")"}"
+ LIBRARYPATH="${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}/apt-pkg"}"
+ METHODSDIR="${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/methods"}"
+ APTHELPERBINDIR="${APT_INTEGRATION_TESTS_LIBEXEC_DIR:-"${BUILDDIRECTORY}/cmdline"}"
+ APTTESTHELPERSBINDIR="${APT_INTEGRATION_TESTS_HELPERS_BIN_DIR:-"${BUILDDIRECTORY}/test/interactive-helper"}"
+ APTFTPARCHIVEBINDIR="${APT_INTEGRATION_TESTS_FTPARCHIVE_BIN_DIR:-"${BUILDDIRECTORY}/ftparchive"}"
+ APTCMDLINEBINDIR="${APT_INTEGRATION_TESTS_CMDLINE_BIN_DIR:-"${BUILDDIRECTORY}/cmdline"}"
+ APTINTERNALSOLVER="${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${APTCMDLINEBINDIR}/solvers/apt"}"
+ APTDUMPSOLVER="${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${APTCMDLINEBINDIR}/solvers/dump"}"
+ APTINTERNALPLANNER="${APT_INTEGRATION_TESTS_INTERNAL_PLANNER:-"${APTCMDLINEBINDIR}/planners/apt"}"
+ ARTIFACTSDIR="${APT_INTEGRATION_TESTS_ARTIFACTS_DIR:-"${BUILDDIRECTORY}/artifacts"}"
+ test -x "${APTCMDLINEBINDIR}/apt-get" || msgdie 'You need to build tree first'
+
+ echo "#x-apt-configure-index \"${SOURCEDIRECTORY}/doc/examples/configure-index\";" > aptconfig.conf
+ mkdir aptarchive keys
+ cd rootdir
+ mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
+ mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
+ mkdir -p usr/lib/apt/solvers usr/lib/apt/planners
+ touch var/lib/dpkg/available var/lib/dpkg/lock
+ echo '1' > var/lib/dpkg/info/format
+ ln -s "${METHODSDIR}" usr/lib/apt/methods
+ ln -s "${APTDUMPSOLVER}" usr/lib/apt/solvers/dump
+ ln -s "${APTDUMPSOLVER}" usr/lib/apt/planners/dump
+ ln -s "${APTINTERNALSOLVER}" usr/lib/apt/solvers/apt
+ ln -s "${APTINTERNALPLANNER}" usr/lib/apt/planners/apt
+ echo "Dir::Bin::Solvers \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/solvers\";" >> ../aptconfig.conf
+ echo "Dir::Bin::Planners \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/planners\";" >> ../aptconfig.conf
+ # use the autoremove from the BUILDDIRECTORY if its there, otherwise system
+ if [ -z "${APT_INTEGRATION_TESTS_SOURCE_DIR}" ]; then
+ ln -s "${SOURCEDIRECTORY}/debian/apt.conf.autoremove" etc/apt/apt.conf.d/01autoremove
+ else
+ ln -s /etc/apt/apt.conf.d/01autoremove etc/apt/apt.conf.d/01autoremove
+ fi
+ cd ..
+ local BASENAME="${0##*/}"
+ local PACKAGESFILE="Packages-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${PACKAGESFILE}" ]; then
+ cp "${TESTDIRECTORY}/${PACKAGESFILE}" aptarchive/Packages
+ fi
+ local SOURCESSFILE="Sources-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${SOURCESSFILE}" ]; then
+ cp "${TESTDIRECTORY}/${SOURCESSFILE}" aptarchive/Sources
+ fi
+ find "$TESTDIRECTORY" \( -name '*.pub' -o -name '*.sec' \) -exec cp '{}' keys/ \;
+ chmod 644 keys/*
+ ln -s "${TMPWORKINGDIRECTORY}/keys/joesixpack.pub" rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
+
+ echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc\";" >> aptconfig.conf
+ echo "Dir::State \"var/lib/apt\";" >> aptconfig.conf
+ echo "Dir::Cache \"var/cache/apt\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc/apt\";" >> aptconfig.conf
+ echo "Dir::Log \"var/log/apt\";" >> aptconfig.conf
+ echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf
+ echo "Dir::Bin::Methods \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods\";" >> aptconfig.conf
+ # either store apt-key were we can access it, even if we run it as a different user
+ #cp "${APTCMDLINEBINDIR}/apt-key" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/"
+ #chmod o+rx "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apt-key"
+ #echo "Dir::Bin::apt-key \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apt-key\";" >> aptconfig.conf
+ # destroys coverage reporting though, so we disable changing user for the calling gpgv
+ echo "Dir::Bin::apt-key \"${APTCMDLINEBINDIR}/apt-key\";" >> aptconfig.conf
+ if [ "$(id -u)" = '0' ]; then
+ echo 'Binary::gpgv::APT::Sandbox::User "root";' >> aptconfig.conf
+ # same for the solver executables
+ echo 'APT::Solver::RunAsUser "root";' >> aptconfig.conf
+ echo 'APT::Planner::RunAsUser "root";' >> aptconfig.conf
+ fi
+
+ cat > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
+#!/bin/sh
+set -e
+if [ -r '${TMPWORKINGDIRECTORY}/noopchroot.so' ]; then
+ if [ -n "\$LD_LIBRARY_PATH" ]; then
+ export LD_LIBRARY_PATH='${TMPWORKINGDIRECTORY}:'"\${LD_LIBRARY_PATH}"
+ else
+ export LD_LIBRARY_PATH='${TMPWORKINGDIRECTORY}'
+ fi
+ if [ -n "\$LD_PRELOAD" ]; then
+ export LD_PRELOAD="noopchroot.so \${LD_PRELOAD}"
+ else
+ export LD_PRELOAD="noopchroot.so"
+ fi
+fi
+EXEC='exec'
+EOF
+ cp "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
+ local DPKG_VERSION="$(command dpkg-query --showformat '${VERSION}' --show dpkg)"
+ if command dpkg --compare-versions "${DPKG_VERSION}" '<<' '1.21.0'; then
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
+dpkg_assert_call() {
+ while [ -n "\$1" ]; do
+ if [ "\${1#*--assert-}" != "\$1" ]; then return 0; fi
+ if [ "\$1" = '--' ]; then break; fi
+ shift
+ done
+ return 1
+}
+if dpkg_assert_call "\$@" && ! command dpkg-checkbuilddeps --admindir='${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg' -d 'dpkg' /dev/null >/dev/null 2>&1; then
+ EXEC=''
+ ORIGINAL="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status"
+ BACKUP="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status.apt-backup"
+ restoredpkgstatus() {
+ if [ -n "\$BACKUP" ]; then
+ if [ -e "\$BACKUP" ]; then
+ mv -f "\$BACKUP" "\$ORIGINAL"
+ else
+ rm -f "\$ORIGINAL"
+ fi
+ BACKUP=''
+ fi
+ }
+ trap "restoredpkgstatus;" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ if [ -e "\$ORIGINAL" ]; then
+ cp -a "\$ORIGINAL" "\$BACKUP"
+ fi
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" << EOS
+
+Package: dpkg
+Architecture: all
+Version: ${DPKG_VERSION}+fake
+Status: install ok installed
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 42
+Description: tells dpkg it supports what we need
+ Some versions of dpkg check its own version from the status file
+ to know if it supports multi-arch and stuff in --assert-*.
+
+EOS
+fi
+EOF
+ fi
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
+\$EXEC fakeroot '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
+ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
+ --force-not-root --force-bad-path "\$@"
+EOF
+ cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" <<EOF
+exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
+ --log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
+ --force-not-root --force-bad-path "\$@"
+EOF
+ chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
+ echo "Dir::Bin::dpkg \"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg\";" > rootdir/etc/apt/apt.conf.d/99dpkg
+
+ {
+ echo 'quiet "0";'
+ echo 'quiet::NoUpdate "true";'
+ echo 'quiet::NoStatistic "true";'
+ # too distracting for users, but helpful to detect changes
+ echo 'Acquire::Progress::Ignore::ShowErrorText "true";'
+ echo 'Acquire::Progress::Diffpercent "true";'
+ # in testcases, it can appear as if localhost has a rotation setup,
+ # hide this as we can't really deal with it properly
+ echo 'Acquire::Failure::ShowIP "false";'
+ # randomess and tests don't play well together
+ echo 'Acquire::IndexTargets::Randomized "false";'
+ # fakeroot can't fake everything, so disabled in production but good for tests
+ echo 'APT::Sandbox::Verify "true";'
+ } >> aptconfig.conf
+
+ cp "${TESTDIRECTORY}/apt.pem" "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
+ if [ "$(id -u)" = '0' ]; then
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
+ fi
+ echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https
+ echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary
+ export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=no
+ echo 'Acquire::Connect::AddrConfig "false";' > rootdir/etc/apt/apt.conf.d/connect-addrconfig
+ # Allow release files to be 10 hours in the future, rather than 10 seconds
+ echo 'Acquire::Max-FutureTime "'$((10 * 60 * 60))'";' > rootdir/etc/apt/apt.conf.d/future-time
+
+ echo 'APT::Machine-ID "912e43bd1c1d4ba481f9f8ccab25f9ee";' > rootdir/etc/apt/apt.conf.d/machine-id
+
+ configcompression '.' 'gz' #'bz2' 'lzma' 'xz'
+ confighashes 'SHA256' # these are tests, not security best-practices
+
+ # Make dpkg inherit testing path
+ echo 'DPkg::Path "";' >> aptconfig.conf
+ echo 'Dir::Bin::ischroot "/bin/false";' >> aptconfig.conf
+
+ # If gpgv supports --weak-digest, pass it to make sure we can disable SHA1
+ if aptkey verify --weak-digest SHA1 --help 2>/dev/null >/dev/null; then
+ echo 'Acquire::gpgv::Options { "--weak-digest"; "sha1"; };' > rootdir/etc/apt/apt.conf.d/no-sha1
+ fi
+
+ # most tests just need one signed Release file, not both
+ export APT_DONT_SIGN='Release.gpg'
+
+ # prefer our apt binaries over the system apt binaries
+ export PATH="${APTCMDLINEBINDIR}:${PATH}:/usr/sbin:/sbin"
+}
+
+getarchitecture() {
+ if [ "$1" = "native" -o -z "$1" ]; then
+ eval `aptconfig shell ARCH APT::Architecture`
+ if [ -n "$ARCH" ]; then
+ echo $ARCH
+ else
+ dpkg --print-architecture
+ fi
+ else
+ echo $1
+ fi
+}
+
+getarchitectures() {
+ aptconfig dump --no-empty --format '%v%n' APT::Architecture APT::Architectures | sort -u | tr '\n' ' '
+}
+
+getarchitecturesfromcommalist() {
+ echo "$1" | sed -e 's#,#\n#g' | sed -e "s/^native\$/$(getarchitecture 'native')/"
+}
+
+configarchitecture() {
+ {
+ echo "APT::Architecture \"$(getarchitecture $1)\";"
+ while [ -n "$1" ]; do
+ echo "APT::Architectures:: \"$(getarchitecture $1)\";"
+ shift
+ done
+ } >rootdir/etc/apt/apt.conf.d/01multiarch.conf
+ configdpkg
+}
+
+configdpkg() {
+ if [ ! -e rootdir/var/lib/dpkg/status ]; then
+ local BASENAME="${0##*/}"
+ local STATUSFILE="status-${BASENAME#*-}"
+ if [ -f "${TESTDIRECTORY}/${STATUSFILE}" ]; then
+ cp "${TESTDIRECTORY}/${STATUSFILE}" rootdir/var/lib/dpkg/status
+ # Add an empty line to the end if there is none
+ if tail -1 rootdir/var/lib/dpkg/status | grep -q .; then
+ echo >> rootdir/var/lib/dpkg/status
+ fi
+ fi
+ fi
+ rm -f rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ if dpkg --assert-multi-arch >/dev/null 2>&1 ; then
+ local ARCHS="$(getarchitectures)"
+ local DPKGARCH="$(dpkg --print-architecture)"
+ # this ensures that even if multi-arch isn't active in the view
+ # of apt, given that dpkg can't be told which arch is native
+ # the arch apt treats as native might be foreign for dpkg
+ for ARCH in ${ARCHS}; do
+ if [ "${ARCH}" != "${DPKGARCH}" ]; then
+ if ! dpkg --add-architecture ${ARCH} >rootdir/tmp/dpkgaddarch.output 2>&1; then
+ if grep -q 'pkg-config-dpkghook' rootdir/tmp/dpkgaddarch.output; then
+ msgwarn 'Ignoring failure of dpkg --add-architecture as it is likely due to pkg-config-dpkghook (see #824774)'
+ else
+ # old-style used e.g. in Ubuntu-P – and as it seems travis
+ echo "DPKG::options:: \"--foreign-architecture\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ echo "DPKG::options:: \"${ARCH}\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ fi
+ fi
+ fi
+ done
+ else
+ # test multiarch before dpkg is ready for it…
+ echo "DPKG::options:: \"--force-architecture\";" > rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ fi
+}
+
+configdpkgnoopchroot() {
+ # create a library to noop chroot() and rewrite maintainer script executions
+ # via execvp() as used by dpkg as we don't want our rootdir to be a fullblown
+ # chroot directory dpkg could chroot into to execute the maintainer scripts
+ msgtest 'Building library to preload to make maintainerscript work in' 'dpkg'
+ cat > noopchroot.c << EOF
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+
+static char * chrootdir = NULL;
+
+int chroot(const char *path) {
+ printf("WARNING: CHROOTing to %s was ignored!\n", path);
+ free(chrootdir);
+ chrootdir = strdup(path);
+ return 0;
+}
+int execvp(const char *file, char *const argv[]) {
+ static int (*func_execvp) (const char *, char * const []) = NULL;
+ if (func_execvp == NULL)
+ func_execvp = (int (*) (const char *, char * const [])) dlsym(RTLD_NEXT, "execvp");
+ if (chrootdir == NULL || strncmp(file, "/var/lib/dpkg/", strlen("/var/lib/dpkg/")) != 0)
+ return func_execvp(file, argv);
+ printf("REWRITE execvp call %s into %s\n", file, chrootdir);
+ char *newfile;
+ if (asprintf(&newfile, "%s%s", chrootdir, file) == -1) {
+ perror("asprintf");
+ return -1;
+ }
+ char const * const baseadmindir = "/var/lib/dpkg";
+ char *admindir;
+ if (asprintf(&admindir, "%s%s", chrootdir, baseadmindir) == -1) {
+ perror("asprintf");
+ return -1;
+ }
+ setenv("DPKG_ADMINDIR", admindir, 1);
+ return func_execvp(newfile, argv);
+}
+EOF
+ if cc -ldl 2>&1 | grep -q dl; then
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c
+ else
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl
+ fi
+}
+configcompression() {
+ if [ "$1" = 'ALL' ]; then
+ configcompression '.' $(aptconfig dump APT::Compressor --format '%t %v%n' | sed -n 's#^Extension \.\(.*\)$#\1#p')
+ return
+ fi
+ local CMD='apthelper cat-file -C'
+ while [ -n "$1" ]; do
+ case "$1" in
+ '.') printf ".\t.\tcat\n";;
+ 'gz') printf "gzip\tgz\t$CMD $1\n";;
+ 'bz2') printf "bzip2\tbz2\t$CMD $1\n";;
+ 'zst') printf "zstd\tzst\t$CMD $1\n";;
+ *) printf "$1\t$1\t$CMD $1\n";;
+ esac
+ shift
+ done > "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
+}
+confighashes() {
+ {
+ echo 'APT::FTPArchive {'
+ {
+ while [ -n "$1" ]; do
+ printf "$1" | tr 'a-z' 'A-Z'
+ printf "\t\"true\";\n"
+ shift
+ done
+ for h in 'MD5' 'SHA1' 'SHA256' 'SHA512'; do
+ printf "$h\t\"false\";\n"
+ done
+ } | awk '!x[$1]++'
+ echo '};'
+ } >> "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ftparchive-hashes.conf"
+}
+forcecompressor() {
+ COMPRESSOR="$1"
+ COMPRESS="$1"
+ COMPRESSOR_CMD="apthelper cat-file -C $1"
+ case $COMPRESSOR in
+ gzip) COMPRESS='gz';;
+ bzip2) COMPRESS='bz2';;
+ zstd) COMPRESS='zst';;
+ esac
+ local CONFFILE="${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
+ echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; };
+Dir::Bin::uncompressed \"/does/not/exist\";" > "$CONFFILE"
+ for COMP in $(aptconfig dump 'APT::Compressor' --format '%f%n' | cut -d':' -f 5 | uniq); do
+ if [ -z "$COMP" -o "$COMP" = '.' -o "$COMP" = "$COMPRESSOR" ]; then continue; fi
+ echo "Dir::Bin::${COMP} \"/does/not/exist\";" >> "$CONFFILE"
+ echo "APT::Compressor::${COMP}::Name \"${COMP}-disabled\";" >> "$CONFFILE"
+ done
+}
+
+_setupsimplenativepackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local RELEASE="${4:-unstable}"
+ local DEPENDENCIES="$5"
+ local DESCRIPTION="${6:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASE}
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ and used only by testcases and serve no other purpose…}"
+
+ local SECTION="${7:-others}"
+ local PRIORITY="${8:-optional}"
+ local FILE_TREE="$9"
+ local COMPRESS_TYPE="${10:-gzip}"
+ local DISTSECTION
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
+ DISTSECTION="main"
+ else
+ DISTSECTION="${SECTION%/*}"
+ fi
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+
+ mkdir -p "$BUILDDIR/debian/source"
+ echo "* most suckless software product ever" > "${BUILDDIR}/FEATURES"
+ echo "#!/bin/sh
+echo '$NAME says \"Hello!\"'" > "${BUILDDIR}/${NAME}"
+
+ echo "Copyleft by Joe Sixpack $(date -u +%Y)" > "${BUILDDIR}/debian/copyright"
+ echo "$NAME ($VERSION) $RELEASE; urgency=low
+
+ * Initial release
+
+ -- Joe Sixpack <joe@example.org> $(date -u -R)" > "${BUILDDIR}/debian/changelog"
+ {
+ echo "Source: $NAME
+Priority: $PRIORITY
+Maintainer: Joe Sixpack <joe@example.org>
+Standards-Version: 4.3.1
+Rules-Requires-Root: no"
+ if [ "$SECTION" != '<none>' ]; then
+ echo "Section: $SECTION"
+ fi
+ local BUILDDEPS="$(printf "%b\n" "$DEPENDENCIES" | grep '^Build-')"
+ test -z "$BUILDDEPS" || echo "$BUILDDEPS"
+ echo "
+Package: $NAME"
+
+ if [ "$ARCH" = 'all' ]; then
+ echo "Architecture: all"
+ else
+ echo "Architecture: any"
+ fi
+ local DEPS="$(printf "%b\n" "$DEPENDENCIES" | grep -v '^Build-')"
+ test -z "$DEPS" || echo "$DEPS"
+ printf "%b\n" "Description: $DESCRIPTION"
+ } > "${BUILDDIR}/debian/control"
+
+ echo '3.0 (native)' > "${BUILDDIR}/debian/source/format"
+}
+
+make_tiny_rules() {
+ local OUT="$1"
+ if command -v gmake >/dev/null 2>&1; then
+ [ -e ${TMPWORKINGDIRECTORY}/bin/make ] || ln -s $(command -v gmake) ${TMPWORKINGDIRECTORY}/bin/make
+ echo "#!${TMPWORKINGDIRECTORY}/bin/make -f" > "$OUT"
+ else
+ echo '#!/usr/bin/make -f' > "$OUT"
+ fi
+ echo '%:' >> "$OUT"
+ echo ' dh $@' >> "$OUT"
+}
+
+setupsimplenativepackage() {
+ _setupsimplenativepackage "$@"
+ local NAME="$1"
+ local VERSION="$3"
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+ test -e "${BUILDDIR}/debian/compat" || echo '10' > "${BUILDDIR}/debian/compat"
+ test -e "${BUILDDIR}/debian/rules" || make_tiny_rules "${BUILDDIR}/debian/rules"
+}
+
+buildsimplenativepackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local RELEASE="${4:-unstable}"
+ local DEPENDENCIES="$5"
+ local DESCRIPTION="$6"
+ local SECTION="${7:-others}"
+ local PRIORITY="${8:-optional}"
+ local FILE_TREE="$9"
+ local COMPRESS_TYPE="${10:-gzip}"
+ local DISTSECTION
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
+ DISTSECTION="main"
+ else
+ DISTSECTION="${SECTION%/*}"
+ fi
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
+ msgtest "Build source package in version ${VERSION} for ${RELEASE} in ${DISTSECTION}" "$NAME"
+ _setupsimplenativepackage "$@"
+ cd "${BUILDDIR}/.."
+ testsuccess --nomsg dpkg-source -b ${NAME}-${VERSION}
+ cd - >/dev/null
+ sed -n 's#^dpkg-source: info: building [^ ]\+ in ##p' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" \
+ | while read SRC; do
+ echo "pool/${SRC}" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist"
+# if expr match "${SRC}" '.*\.dsc' >/dev/null 2>&1; then
+# aptkey --keyring ./keys/joesixpack.pub --secret-keyring ./keys/joesixpack.sec --quiet --readonly \
+# adv --yes --default-key 'Joe Sixpack' \
+# --clearsign -o "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+# mv "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC"
+# fi
+ done
+
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ msgtest "Build binary package for ${RELEASE} in ${SECTION}" "$NAME"
+ rm -rf "${BUILDDIR}/debian/tmp"
+ mkdir -p "${BUILDDIR}/debian/tmp/DEBIAN" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin"
+ cp "${BUILDDIR}/debian/copyright" "${BUILDDIR}/debian/changelog" "${BUILDDIR}/FEATURES" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}"
+ cp "${BUILDDIR}/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin/${NAME}-${arch}"
+ if [ -n "$FILE_TREE" ]; then
+ cp -ar "$FILE_TREE" "${BUILDDIR}/debian/tmp"
+ fi
+
+ (cd "${BUILDDIR}"; dpkg-gencontrol -DArchitecture=$arch)
+ (cd "${BUILDDIR}/debian/tmp"; md5sum $(find usr/ -type f) > DEBIAN/md5sums)
+ local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log"
+ # ensure the right permissions as dpkg-deb insists
+ chmod 755 "${BUILDDIR}/debian/tmp/DEBIAN"
+ testsuccess --nomsg dpkg-deb -Z${COMPRESS_TYPE} --build "${BUILDDIR}/debian/tmp" "${BUILDDIR}/.."
+ echo "pool/${NAME}_${VERSION}_${arch}.deb" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist"
+ done
+
+ local NM
+ if [ "$(echo "$NAME" | cut -c 1-3)" = 'lib' ]; then
+ NM="$(echo "$NAME" | cut -c 1-4)"
+ else
+ NM="$(echo "$NAME" | cut -c 1)"
+ fi
+ local CHANGEPATH="${BUILDDIR}/../${DISTSECTION}/${NM}/${NAME}/${NAME}_${VERSION}"
+ mkdir -p "$CHANGEPATH"
+ cp "${BUILDDIR}/debian/changelog" "$CHANGEPATH"
+ rm -rf "${BUILDDIR}"
+ msgdone "info"
+}
+
+buildpackage() {
+ local BUILDDIR=$1
+ local RELEASE=$2
+ local SECTION=$3
+ local ARCH=$(getarchitecture $4)
+ local PKGNAME="$(echo "$BUILDDIR" | grep -o '[^/]*$')"
+ local BUILDLOG="$(readlink -f "${BUILDDIR}/../${PKGNAME}_${RELEASE}_${SECTION}.dpkg-bp.log")"
+ msgtest "Build package for ${RELEASE} in ${SECTION}" "$PKGNAME"
+ cd "$BUILDDIR"
+ if [ "$ARCH" = "all" ]; then
+ ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)"
+ fi
+ testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH -d
+ cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$BUILDLOG"
+ local PKGS="$(grep '^dpkg-deb: building package' "$BUILDLOG" | cut -d'/' -f 2 | sed -e "s#'\.##")"
+ local SRCS="$(grep '^dpkg-source: info: building' "$BUILDLOG" | grep -o '[a-z0-9._+~-]*$')"
+ cd - > /dev/null
+ for PKG in $PKGS; do
+ echo "pool/${PKG}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.pkglist"
+ done
+ for SRC in $SRCS; do
+ echo "pool/${SRC}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.srclist"
+ done
+}
+
+buildaptarchive() {
+ if [ -d incoming ]; then
+ buildaptarchivefromincoming "$@"
+ else
+ buildaptarchivefromfiles "$@"
+ fi
+}
+
+createaptftparchiveconfig() {
+ local COMPRESSORS="$(cut -d' ' -f 1 "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf" | tr '\n' ' ')"
+ local COMPRESSORS="${COMPRESSORS%* }"
+ local ARCHS="$(getarchitectures)"
+ cat > ftparchive.conf <<EOF
+Dir {
+ ArchiveDir "$(readlink -f .)";
+ CacheDir "$(readlink -f ..)";
+ FileListDir "$(readlink -f pool/)";
+};
+Default {
+ Packages::Compress "$COMPRESSORS";
+ Sources::Compress "$COMPRESSORS";
+ Contents::Compress "$COMPRESSORS";
+ Translation::Compress "$COMPRESSORS";
+ LongDescription "false";
+};
+TreeDefault {
+ Directory "pool/";
+ SrcDirectory "pool/";
+};
+EOF
+ for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do
+ cat <<EOF
+tree "dists/$DIST" {
+ Architectures "$ARCHS all source";
+ FileList "${DIST}.\$(SECTION).pkglist";
+ SourceFileList "${DIST}.\$(SECTION).srclist";
+ Sections "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')";
+};
+EOF
+ done >> ftparchive.conf
+}
+
+buildaptftparchivedirectorystructure() {
+ local DISTS="$(grep -i '^tree ' ftparchive.conf | cut -d'/' -f 2 | sed -e 's#".*##')"
+ for DIST in $DISTS; do
+ local SECTIONS="$(grep -i -A 5 "dists/$DIST" ftparchive.conf | grep -i 'Sections' | cut -d'"' -f 2)"
+ for SECTION in $SECTIONS; do
+ local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')"
+ for ARCH in $ARCHS; do
+ mkdir -p "dists/${DIST}/${SECTION}/binary-${ARCH}"
+ done
+ mkdir -p "dists/${DIST}/${SECTION}/source"
+ mkdir -p "dists/${DIST}/${SECTION}/i18n"
+ done
+ done
+}
+
+insertpackage() {
+ local RELEASES="$1"
+ local NAME="$2"
+ local ARCH="$3"
+ local VERSION="$4"
+ local DEPENDENCIES="$5"
+ local PRIORITY="${6:-optional}"
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASES}
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ and used only by testcases and serve no other purpose…}"
+ local SECTION="${8:-other}"
+
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
+ DISTSECTION="main"
+ else
+ DISTSECTION="${SECTION%/*}"
+ fi
+ local ARCHS=""
+ for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do
+ if [ "$RELEASE" = 'installed' ]; then
+ insertinstalledpackage "$2" "$3" "$4" "$5" "$6" "$7" "$8"
+ continue
+ fi
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ if [ "$arch" = 'none' ]; then
+ ARCHS="$(getarchitectures)"
+ else
+ ARCHS="$arch"
+ fi
+ for BUILDARCH in $ARCHS; do
+ local PPATH="aptarchive/dists/${RELEASE}/${DISTSECTION}/binary-${BUILDARCH}"
+ mkdir -p "$PPATH"
+ {
+ echo "Package: $NAME
+Priority: $PRIORITY
+Section: $SECTION
+Installed-Size: 42
+Size: 42"
+ if echo "$DEPENDENCIES" | grep -q SHA256:; then
+ :
+ else
+ echo "SHA256: 0000000000000000000000000000000000000000000000000000000000000000"
+ fi
+ echo "Maintainer: Joe Sixpack <joe@example.org>"
+ test "$arch" = 'none' || echo "Architecture: $arch"
+ echo "Version: $VERSION
+Filename: pool/${DISTSECTION}/${NAME}/${NAME}_${VERSION}_${arch}.deb"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES"
+ echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)"
+ echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)"
+ echo
+ } >> "${PPATH}/Packages"
+ done
+ done
+ mkdir -p "aptarchive/dists/${RELEASE}/${DISTSECTION}/source" "aptarchive/dists/${RELEASE}/${DISTSECTION}/i18n"
+ touch "aptarchive/dists/${RELEASE}/${DISTSECTION}/source/Sources"
+ echo "Package: $NAME
+Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)
+Description-en: $DESCRIPTION
+" >> "aptarchive/dists/${RELEASE}/${DISTSECTION}/i18n/Translation-en"
+ done
+}
+
+insertsource() {
+ local RELEASES="$1"
+ local NAME="$2"
+ local ARCH="$3"
+ local VERSION="$4"
+ local DEPENDENCIES="$5"
+ local BINARY="${6:-$NAME}"
+ local ARCHS=""
+ for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do
+ local SPATH="aptarchive/dists/${RELEASE}/main/source"
+ mkdir -p $SPATH
+ local FILE="${SPATH}/Sources"
+ local DSCFILE="${NAME}_${VERSION}.dsc"
+ local TARFILE="${NAME}_${VERSION}.tar.gz"
+ echo "Package: $NAME
+Binary: $BINARY
+Version: $VERSION
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: $ARCH" >> $FILE
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
+ echo "Files:
+ $(echo -n "$DSCFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
+ $(echo -n "$TARFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
+Checksums-Sha256:
+ $(echo -n "$DSCFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
+ $(echo -n "$TARFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
+" >> "$FILE"
+ done
+}
+
+insertinstalledpackage() {
+ local NAME="$1"
+ local ARCH="$2"
+ local VERSION="$3"
+ local DEPENDENCIES="$4"
+ local PRIORITY="${5:-optional}"
+ local STATUS="${6:-install ok installed}"
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/installed
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ and used only by testcases and serve no other purpose…}"
+ local SECTION="${8:-other}"
+
+ local FILE='rootdir/var/lib/dpkg/status'
+ local INFO='rootdir/var/lib/dpkg/info'
+ for arch in $(getarchitecturesfromcommalist "$ARCH"); do
+ echo "Package: $NAME
+Status: $STATUS
+Priority: $PRIORITY
+Section: $SECTION
+Installed-Size: 42
+Maintainer: Joe Sixpack <joe@example.org>
+Version: $VERSION" >> "$FILE"
+ test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
+ printf "%b\n" "Description: $DESCRIPTION" >> "$FILE"
+ echo >> "$FILE"
+ if [ "$(dpkgquery -W --showformat='${Multi-Arch}' "${NAME}:${arch}" 2>/dev/null)" = 'same' ]; then
+ echo -n > "${INFO}/${NAME}:${arch}.list"
+ echo -n > "${INFO}/${NAME}:${arch}.md5sums"
+ else
+ echo -n > "${INFO}/${NAME}.list"
+ echo -n > "${INFO}/${NAME}.md5sums"
+ fi
+ done
+}
+
+
+buildaptarchivefromincoming() {
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on incoming packages…"
+ cd aptarchive
+ [ -e pool ] || ln -s ../incoming pool
+ [ -e ftparchive.conf ] || createaptftparchiveconfig
+ [ -e dists ] || buildaptftparchivedirectorystructure
+ msgninfo "\tGenerate Packages, Sources and Contents files… "
+ testsuccess aptftparchive generate ftparchive.conf
+ cd - > /dev/null
+ msgdone "info"
+ generatereleasefiles "$@"
+}
+
+buildaptarchivefromfiles() {
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on prebuild files…"
+ local DIR='aptarchive'
+ if [ -d "${DIR}/dists" ]; then DIR="${DIR}/dists"; fi
+ find "$DIR" -name 'Packages' -o -name 'Sources' -o -name 'Translation-*' | while read line; do
+ msgninfo "\t${line} file… "
+ compressfile "$line" "$1"
+ msgdone "info"
+ done
+ generatereleasefiles "$@"
+}
+
+compressfile() {
+ while read compressor extension command; do
+ if [ "$compressor" = '.' ]; then
+ if [ -n "$2" ]; then
+ touch -d "$2" "$1"
+ fi
+ continue
+ fi
+ cat "$1" | $command > "${1}.${extension}"
+ if [ -n "$2" ]; then
+ touch -d "$2" "${1}.${extension}"
+ fi
+ done < "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
+}
+
+# can be overridden by testcases for their pleasure
+getcodenamefromsuite() {
+ case "$1" in
+ unstable) echo 'sid';;
+ *) echo -n "$1";;
+ esac
+}
+getreleaseversionfromsuite() { true; }
+getlabelfromsuite() { true; }
+getoriginfromsuite() { true; }
+getarchitecturesfromreleasefile() { echo "all $(getarchitectures)"; }
+getnotautomaticfromsuite() {
+ case "$1" in
+ experimental|experimental2) echo "yes";;
+ esac
+}
+getbutautomaticupgradesfromsuite() { true; }
+
+aptftparchiverelease() {
+ aptftparchive -qq release "$@" | sed -e '/0 Release$/ d' # remove the self reference
+}
+generatereleasefiles() {
+ # $1 is the Date header and $2 is the ValidUntil header to be set
+ # both should be given in notation date/touch can understand
+ local DATE="$1"
+ local VALIDUNTIL="$2"
+ if [ -e aptarchive/dists ]; then
+ msgninfo "\tGenerate Release files for dists… "
+ for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do
+ local ARCHITECTURES="$(getarchitecturesfromreleasefile "$dir")"
+ local SUITE="$(echo "$dir" | cut -d'/' -f 4)"
+ local CODENAME="$(getcodenamefromsuite $SUITE)"
+ local VERSION="$(getreleaseversionfromsuite $SUITE)"
+ local LABEL="$(getlabelfromsuite $SUITE)"
+ local ORIGIN="$(getoriginfromsuite $SUITE)"
+ local NOTAUTOMATIC="$(getnotautomaticfromsuite $SUITE)"
+ local BUTAUTOMATICUPGRADES="$(getbutautomaticupgradesfromsuite $SUITE)"
+ aptftparchiverelease "$dir" \
+ -o APT::FTPArchive::Release::Suite="${SUITE}" \
+ -o APT::FTPArchive::Release::Codename="${CODENAME}" \
+ -o APT::FTPArchive::Release::Architectures="${ARCHITECTURES}" \
+ -o APT::FTPArchive::Release::Label="${LABEL}" \
+ -o APT::FTPArchive::Release::Origin="${ORIGIN}" \
+ -o APT::FTPArchive::Release::Version="${VERSION}" \
+ -o APT::FTPArchive::Release::NotAutomatic="${NOTAUTOMATIC}" \
+ -o APT::FTPArchive::Release::ButAutomaticUpgrades="${BUTAUTOMATICUPGRADES}" \
+ > "$dir/Release"
+ done
+ else
+ msgninfo "\tGenerate Release files for flat… "
+ aptftparchiverelease ./aptarchive > aptarchive/Release
+ fi
+ if [ -n "$VALIDUNTIL" ]; then
+ sed -i "/^Date: / a\
+Valid-Until: $(date -u -d "$VALIDUNTIL" -R)" $(find ./aptarchive -name 'Release')
+ fi
+ if [ -n "$DATE" -a "$DATE" != "now" ]; then
+ for release in $(find ./aptarchive -name 'Release'); do
+ sed -i "s/^Date: .*$/Date: $(date -u -d "$DATE" -R)/" "$release"
+ touch -d "$DATE" "$release"
+ done
+ fi
+ msgdone "info"
+}
+
+setupdistsaptarchive() {
+ local APTARCHIVE="$(readlink -f ./aptarchive | sed 's# #%20#g')"
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list
+ rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list
+ for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do
+ SECTIONS=$(find "./aptarchive/dists/${DISTS}/" -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ')
+ msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… "
+ echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list"
+ echo "deb-src file:$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list"
+ msgdone "info"
+ done
+}
+
+setupflataptarchive() {
+ local APTARCHIVE="$(readlink -f ./aptarchive)"
+ local APTARCHIVEURI="$(readlink -f ./aptarchive | sed 's# #%20#g')"
+ if [ -f "${APTARCHIVE}/Packages" ]; then
+ msgninfo "\tadd deb sources.list line… "
+ echo "deb file://$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
+ msgdone 'info'
+ else
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
+ fi
+ if [ -f "${APTARCHIVE}/Sources" ]; then
+ msgninfo "\tadd deb-src sources.list line… "
+ echo "deb-src file:$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
+ msgdone 'info'
+ else
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
+ fi
+}
+
+setupaptarchive() {
+ local NOUPDATE=0
+ if [ "$1" = '--no-update' ]; then
+ NOUPDATE=1
+ shift
+ fi
+ buildaptarchive "$@"
+ if [ -e aptarchive/dists ]; then
+ setupdistsaptarchive
+ else
+ setupflataptarchive
+ fi
+ signreleasefiles 'Joe Sixpack'
+ if [ "1" != "$NOUPDATE" ]; then
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=true -o Debug::Acquire::gpgv=true
+ fi
+}
+
+killgpgagent() {
+ if [ -z "${TMPWORKINGDIRECTORY}" ]; then return; fi
+ local GPGHOME="${TMPWORKINGDIRECTORY}/signinghome"
+ if [ ! -e "${GPGHOME}" ]; then return; fi
+ # ensure the agent dies quickly as different versions have different suicide heuristics
+ GNUPGHOME="${GPGHOME}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true
+ rm -rf "$GPGHOME"
+}
+dosigning() {
+ local KEY="$1"
+ shift
+ local GPGHOME="${TMPWORKINGDIRECTORY}/signinghome"
+ if [ -n "$APT_TEST_SIGNINGHOME" ]; then
+ GPGHOME="$APT_TEST_SIGNINGHOME"
+ else
+ if [ ! -e "$GPGHOME" ]; then
+ mkdir -p --mode=700 "${GPGHOME}"
+ addtrap 'prefix' 'killgpgagent;'
+ fi
+ fi
+ testsuccess aptkey --quiet --keyring ${KEY}.pub --secret-keyring ${KEY}.sec --readonly \
+ --homedir "${GPGHOME}" adv --batch --yes --digest-algo "${APT_TESTS_DIGEST_ALGO:-SHA512}" \
+ "$@"
+}
+signreleasefiles() {
+ local SIGNERS="${1:-Joe Sixpack}"
+ local REPODIR="${2:-aptarchive}"
+ if [ -n "$1" ]; then shift; fi
+ if [ -n "$1" ]; then shift; fi
+ local KEY="keys/$(echo "$SIGNERS" | tr 'A-Z' 'a-z' | tr -d ' ,')"
+ msgninfo "\tSign archive with $SIGNERS key $KEY… "
+ local REXKEY='keys/rexexpired'
+ local SECEXPIREBAK="${REXKEY}.sec.bak"
+ local PUBEXPIREBAK="${REXKEY}.pub.bak"
+ local SIGUSERS=""
+ while [ -n "${SIGNERS%%,*}" ]; do
+ local SIGNER="${SIGNERS%%,*}"
+ if [ "${SIGNERS}" = "${SIGNER}" ]; then
+ SIGNERS=""
+ fi
+ SIGNERS="${SIGNERS#*,}"
+ # FIXME: This should be the full name, but we can't encode the space properly currently
+ SIGUSERS="${SIGUSERS} -u ${SIGNER#* }"
+ if [ "${SIGNER}" = 'Rex Expired' ]; then
+ # the key is expired, so gpg doesn't allow one to sign with and the --faked-system-time
+ # option doesn't exist anymore (and using faketime would add a new obscure dependency)
+ # therefore we 'temporary' make the key not expired and restore a backup after signing
+ cp "${REXKEY}.sec" "$SECEXPIREBAK"
+ cp "${REXKEY}.pub" "$PUBEXPIREBAK"
+ local SECUNEXPIRED="${REXKEY}.sec.unexpired"
+ local PUBUNEXPIRED="${REXKEY}.pub.unexpired"
+ if [ -f "$SECUNEXPIRED" ] && [ -f "$PUBUNEXPIRED" ]; then
+ cp "$SECUNEXPIRED" "${REXKEY}.sec"
+ cp "$PUBUNEXPIRED" "${REXKEY}.pub"
+ else
+ if ! printf "expire\n1w\nsave\n" | aptkey --quiet --keyring "${REXKEY}.pub" --secret-keyring "${REXKEY}.sec" \
+ --readonly adv --batch --yes --digest-algo "${APT_TESTS_DIGEST_ALGO:-SHA512}" \
+ --default-key "$SIGNER" --command-fd 0 --edit-key "${SIGNER}" >setexpire.gpg 2>&1; then
+ cat setexpire.gpg
+ exit 1
+ fi
+ cp "${REXKEY}.sec" "$SECUNEXPIRED"
+ cp "${REXKEY}.pub" "$PUBUNEXPIRED"
+ fi
+ fi
+ if [ ! -e "${KEY}.pub" ]; then
+ local K="keys/$(echo "$SIGNER" | tr 'A-Z' 'a-z' | tr -d ' ,')"
+ cat "${K}.pub" >> "${KEY}.new.pub"
+ cat "${K}.sec" >> "${KEY}.new.sec"
+ fi
+ done
+ if [ ! -e "${KEY}.pub" ]; then
+ mv "${KEY}.new.pub" "${KEY}.pub"
+ mv "${KEY}.new.sec" "${KEY}.sec"
+ fi
+ for RELEASE in $(find "${REPODIR}/" -name Release); do
+ # we might have set a specific date for the Release file, so copy it
+ local DATE="$(stat --format "%y" "${RELEASE}")"
+ if [ "$APT_DONT_SIGN" = 'Release.gpg' ]; then
+ rm -f "${RELEASE}.gpg"
+ else
+ dosigning "$KEY" "$@" $SIGUSERS --armor --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
+ touch -d "$DATE" "${RELEASE}.gpg"
+ fi
+ local INRELEASE="${RELEASE%/*}/InRelease"
+ if [ "$APT_DONT_SIGN" = 'InRelease' ]; then
+ rm -f "$INRELEASE"
+ else
+ dosigning "$KEY" "$@" $SIGUSERS --clearsign --output "$INRELEASE" "$RELEASE"
+ touch -d "$DATE" "${INRELEASE}"
+ fi
+ done
+ if [ -f "$SECEXPIREBAK" ] && [ -f "$PUBEXPIREBAK" ]; then
+ mv -f "$SECEXPIREBAK" "${REXKEY}.sec"
+ mv -f "$PUBEXPIREBAK" "${REXKEY}.pub"
+ fi
+ msgdone 'info'
+}
+
+redatereleasefiles() {
+ local DATE="$(date -u -d "$1" -R)"
+ for release in $(find aptarchive/ -name 'Release'); do
+ sed -i "s/^Date: .*$/Date: ${DATE}/" "$release"
+ touch -d "$DATE" "$release"
+ done
+ signreleasefiles "${2:-Joe Sixpack}"
+}
+
+webserverconfig() {
+ local WEBSERVER="${3:-http://localhost:${APTHTTPPORT}}"
+ local NOCHECK=false
+ if [ "$1" = '--no-check' ]; then
+ NOCHECK=true
+ shift
+ fi
+ local DOWNLOG="${TMPWORKINGDIRECTORY}/rootdir/tmp/download-testfile.log"
+ local STATUS="${TMPWORKINGDIRECTORY}/downloaded/webserverconfig.status"
+ rm -f "$STATUS" "$DOWNLOG"
+ local URI
+ if [ -n "$2" ]; then
+ msgtest "Set webserver config option '${1}' to" "$2"
+ URI="${WEBSERVER}/_config/set/$(apthelper quote-string "${1}" '/?#')/$(apthelper quote-string "${2}" '/?#')"
+ else
+ msgtest 'Clear webserver config option' "${1}"
+ URI="${WEBSERVER}/_config/clear/$(apthelper quote-string "${1}" '/?#')"
+ fi
+ if downloadfile "$URI" "$STATUS" > "$DOWNLOG"; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/webserverconfig.output"
+ cat "$DOWNLOG" "$STATUS" >"$OUTPUT" 2>&1 || true
+ msgfailoutput '' "$OUTPUT"
+ fi
+ $NOCHECK || testwebserverlaststatuscode '200'
+}
+
+rewritesourceslist() {
+ local APTARCHIVE="$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive" | sed 's# #%20#g')"
+ for LIST in $(find "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/" -name 'apt-test-*.list'); do
+ sed -i $LIST \
+ -e "s#file://$APTARCHIVE#${1}#" \
+ -e "s#file:$APTARCHIVE#${1}#" \
+ -e "s#copy://$APTARCHIVE#${1}#" \
+ -e "s#copy:$APTARCHIVE#${1}#" \
+ -e "s#http://[^@]*@\?localhost:${APTHTTPPORT}/\?#${1}#" \
+ -e "s#https://[^@]*@\?localhost:${APTHTTPSPORT}/\?#${1}#"
+ done
+}
+
+# wait for up to 10s for a pid file to appear to avoid possible race
+# when a helper is started and doesn't write the PID quick enough
+waitforpidfile() {
+ local PIDFILE="$1"
+ for i in $(seq 10); do
+ if test -s "$PIDFILE"; then
+ return 0
+ fi
+ sleep 1
+ done
+ msgdie "waiting for $PIDFILE failed"
+ return 1
+}
+
+changetowebserver() {
+ local REWRITE='yes'
+ if [ "$1" = '--no-rewrite' ]; then
+ REWRITE='no'
+ shift
+ fi
+ if test -x "${APTTESTHELPERSBINDIR}/aptwebserver"; then
+ cd aptarchive
+ local LOG="webserver.log"
+ if ! aptwebserver --port 0 -o aptwebserver::fork=1 -o aptwebserver::portfile='aptwebserver.port' -o aptwebserver::logfiles="$(readlink -f .)/$LOG" "$@" >$LOG 2>&1 ; then
+ cat "$LOG"
+ false
+ fi
+ waitforpidfile aptwebserver.pid
+ local PID="$(cat aptwebserver.pid)"
+ if [ -z "$PID" ]; then
+ msgdie 'Could not fork aptwebserver successfully'
+ fi
+ addtrap "kill $PID;"
+ waitforpidfile aptwebserver.port
+ APTHTTPPORT="$(cat aptwebserver.port)"
+ if [ -z "$APTHTTPPORT" ]; then
+ msgdie 'Could not get port for aptwebserver successfully'
+ fi
+ cd - > /dev/null
+ else
+ msgdie 'You have to build apt from source to have test/interactive-helper/aptwebserver available for tests requiring a webserver'
+ fi
+ if [ "$REWRITE" != 'no' ]; then
+ rewritesourceslist "http://localhost:${APTHTTPPORT}/"
+ fi
+}
+
+changetohttpswebserver() {
+ local REWRITE='yes'
+ if [ "$1" = '--no-rewrite' ]; then
+ REWRITE='no'
+ shift
+ fi
+ local stunnel4
+ if command -v stunnel4 >/dev/null 2>&1; then
+ stunnel4=stunnel4
+ elif command -v stunnel >/dev/null 2>&1; then
+ stunnel4=stunnel
+ else
+ msgdie 'You need to install stunnel4 for https testcases'
+ fi
+ if [ ! -e "${TMPWORKINGDIRECTORY}/aptarchive/aptwebserver.pid" ]; then
+ changetowebserver --no-rewrite "$@"
+ fi
+ echo "pid = ${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid
+cert = ${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem
+output = /dev/null
+
+[https]
+accept = 127.0.0.1:0
+connect = $APTHTTPPORT
+" > "${TMPWORKINGDIRECTORY}/stunnel.conf"
+ $stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
+ waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid"
+ local PID="$(cat "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid")"
+ if [ -z "$PID" ]; then
+ msgdie 'Could not fork $stunnel4 successfully'
+ fi
+ addtrap 'prefix' "kill ${PID};"
+ APTHTTPSPORT="$(lsof -i -n | awk "/^$stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)"
+ webserverconfig 'aptwebserver::port::https' "$APTHTTPSPORT" "https://localhost:${APTHTTPSPORT}"
+ if [ "$REWRITE" != 'no' ]; then
+ rewritesourceslist "https://localhost:${APTHTTPSPORT}/"
+ fi
+}
+
+changetocdrom() {
+ mkdir -p rootdir/media/cdrom/.disk
+ local CD="$(readlink -f rootdir/media/cdrom)"
+ cat > rootdir/etc/apt/apt.conf.d/00cdrom <<EOF
+acquire::cdrom::mount "${CD}";
+acquire::cdrom::"${CD}/"::mount "mv ${CD}-unmounted ${CD}";
+acquire::cdrom::"${CD}/"::umount "mv ${CD} ${CD}-unmounted";
+acquire::cdrom::autodetect 0;
+EOF
+ echo -n "$1" > "${CD}/.disk/info"
+ if [ ! -d aptarchive/dists ]; then
+ msgdie 'Flat file archive cdroms can not be created currently'
+ return 1
+ fi
+ mv aptarchive/dists "$CD"
+ ln -s "$(readlink -f ./incoming)" "$CD/pool"
+ find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list' -delete
+ # start with an unmounted disk
+ mv "${CD}" "${CD}-unmounted"
+ # we don't want the disk to be modifiable
+ addtrap 'prefix' "chmod -f -R +w '$(escape_shell "$PWD/rootdir/media/cdrom/dists/")' '$(escape_shell "$PWD/rootdir/media/cdrom-unmounted/dists/")' || true;"
+ chmod -R 555 rootdir/media/cdrom-unmounted/dists
+}
+
+downloadfile() {
+ local PROTO="${1%%:*}"
+ if ! apthelper -o Debug::Acquire::${PROTO}=1 -o Debug::pkgAcquire::Worker=1 \
+ download-file "$1" "$2" "$3" 2>&1 ; then
+ return 1
+ fi
+ # only if the file exists the download was successful
+ if [ -r "$2" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+cleanup_output() {
+ cat "$1" | sed \
+ -e '/gpgv: WARNING: This key is not suitable for signing in --compliance=gnupg mode/ d' \
+ -e '/^profiling:/ d' \
+ | sed -e '/\.\.\.profiling:/ {N;s#\.\.\.profiling:.*\n#...#g}' \
+ >"$2"
+}
+
+checkdiff() {
+ local TMPFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/checkdiff.1.tmp"
+ local TMPFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/checkdiff.2.tmp"
+ touch "$TMPFILE1" "$TMPFILE2"
+
+ cleanup_output "$1" "$TMPFILE1"
+ cleanup_output "$2" "$TMPFILE2"
+
+ local DIFFTEXT="$(command diff -u "$TMPFILE1" "$TMPFILE2" 2>&1 | sed -e '/^---/ d' -e '/^+++/ d' -e '/^@@/ d')"
+ if [ -n "$DIFFTEXT" ]; then
+ echo >&2
+ echo >&2 "$DIFFTEXT"
+ return 1
+ else
+ return 0
+ fi
+}
+
+testoutputequal() {
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testoutputequal.output"
+ local COMPAREFILE="$1"
+ shift
+ if "$@" 2>&1 | checkdiff "$COMPAREFILE" - >"$OUTPUT" 2>&1; then
+ msgpass
+ else
+ echo "=== content of file we compared with (${COMPAREFILE}) ===" >>"${OUTPUT}"
+ cat "$COMPAREFILE" >>"${OUTPUT}"
+ msgfailoutput '' "$OUTPUT" "$@"
+ fi
+}
+
+testfileequal() {
+ msggroup 'testfileequal'
+ local MSG='Test for correctness of file'
+ if [ "$1" = '--nomsg' ]; then
+ MSG=''
+ shift
+ fi
+ local FILE="$1"
+ shift
+ if [ -n "$MSG" ]; then
+ msgtest "$MSG" "$FILE"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfileequal.output"
+ if [ -z "$*" ]; then
+ testoutputequal "$FILE" echo -n ''
+ else
+ testoutputequal "$FILE" echo "$*"
+ fi
+ msggroup
+}
+
+testempty() {
+ msggroup 'testempty'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest "Test for no output of" "$*"
+ fi
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testempty.comparefile"
+ if "$@" >"$COMPAREFILE" 2>&1 && test ! -s "$COMPAREFILE"; then
+ msgpass
+ else
+ msgfailoutput '' "$COMPAREFILE" "$@"
+ fi
+ aptautotest 'testempty' "$@"
+ msggroup
+}
+testwarningempty() {
+ testwarning "$@"
+ testfailure grep -v '^W:' "${ROOTDIR}/tmp/testwarning.output"
+}
+testnotempty() {
+ msggroup 'testnotempty'
+ msgtest "Test for some output of" "$*"
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnotempty.comparefile"
+ if ("$@" >"$COMPAREFILE" 2>&1 || true) && test -s "$COMPAREFILE"; then
+ msgpass
+ else
+ msgfailoutput '' "$COMPAREFILE" "$@"
+ fi
+ aptautotest 'testnotempty' "$@"
+ msggroup
+}
+
+testequal() {
+ msggroup 'testequal'
+ local MSG='Test of equality of'
+ if [ "$1" = '--nomsg' ]; then
+ MSG=''
+ shift
+ fi
+
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.comparefile"
+ echo "$1" > "$COMPAREFILE"
+ shift
+
+ if [ -n "$MSG" ]; then
+ msgtest "$MSG" "$*"
+ fi
+ testoutputequal "$COMPAREFILE" "$@"
+ aptautotest 'testequal' "$@"
+ msggroup
+}
+
+testequalor2() {
+ msggroup 'testequalor2'
+ local COMPAREFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile1"
+ local COMPAREFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile2"
+ local COMPAREAGAINST="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.compareagainst"
+ echo "$1" > "$COMPAREFILE1"
+ echo "$2" > "$COMPAREFILE2"
+ shift 2
+ msgtest "Test for equality OR of" "$*"
+ "$@" >"$COMPAREAGAINST" 2>&1 || true
+ if checkdiff "$COMPAREFILE1" "$COMPAREAGAINST" >/dev/null 2>&1 || \
+ checkdiff "$COMPAREFILE2" "$COMPAREAGAINST" >/dev/null 2>&1
+ then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.output"
+ echo -n "\n${CINFO}Diff against OR 1${CNORMAL}" >"$OUTPUT" 2>&1
+ checkdiff "$COMPAREFILE1" "$COMPAREAGAINST" >"$OUTPUT" 2>&1 || true
+ echo -n "${CINFO}Diff against OR 2${CNORMAL}" >"$OUTPUT" 2>&1
+ checkdiff "$COMPAREFILE2" "$COMPAREAGAINST" >"$OUTPUT" 2>&1 || true
+ msgfailoutput '' "$OUTPUT"
+ fi
+ aptautotest 'testequalor2' "$@"
+ msggroup
+}
+
+testshowvirtual() {
+ msggroup 'testshowvirtual'
+ local VIRTUAL="N: Can't select versions from package '$1' as it is purely virtual"
+ local PACKAGE="$1"
+ shift
+ while [ -n "$1" ]; do
+ VIRTUAL="${VIRTUAL}
+N: Can't select versions from package '$1' as it is purely virtual"
+ PACKAGE="${PACKAGE} $1"
+ shift
+ done
+ msgtest "Test for virtual packages" "apt-cache show $PACKAGE"
+ VIRTUAL="${VIRTUAL}
+N: No packages found"
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testshowvirtual.comparefile"
+ local ARCH="$(getarchitecture 'native')"
+ echo "$VIRTUAL" | sed -e "s/:$ARCH//" -e 's/:all//' >"$COMPAREFILE"
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testshowvirtual.output"
+ testoutputequal "$COMPAREFILE" aptcache show "$PACKAGE"
+ msggroup
+}
+
+testnopackage() {
+ msggroup 'testnopackage'
+ msgtest "Test for non-existent packages" "apt-cache show $*"
+ local SHOWPKG="$(aptcache show "$@" 2>&1 | grep '^Package: ')"
+ if [ -n "$SHOWPKG" ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnopackage.output"
+ echo "$SHOWPKG" >"$OUTPUT"
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+testnosrcpackage() {
+ msggroup 'testnosrcpackage'
+ msgtest "Test for non-existent source packages" "apt-cache showsrc $*"
+ local SHOWPKG="$(aptcache showsrc "$@" 2>&1 | grep '^Package: ')"
+ if [ -n "$SHOWPKG" ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnosrcpackage.output"
+ echo "$SHOWPKG" >"$OUTPUT"
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+
+testdpkgstatus() {
+ msggroup 'testdpkgstatus'
+ local STATE="$1"
+ local NR="$2"
+ shift 2
+ msgtest "Test that $NR package(s) are in state $STATE with" "dpkg -l $*"
+ local PKGS="$(dpkg -l "$@" 2>/dev/null | grep "^${STATE}" | wc -l)"
+ if [ "$PKGS" != $NR ]; then
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnopackage.output"
+ echo "$PKGS" >"$OUTPUT"
+ dpkg -l "$@" | grep '^[a-z]' >"$OUTPUT" >&2 || true
+ msgfailoutput '' "$OUTPUT"
+ else
+ msgpass
+ fi
+ msggroup
+}
+
+testdpkginstalled() {
+ msggroup 'testdpkginstalled'
+ testdpkgstatus 'ii' "$#" "$@"
+ msggroup
+}
+
+testdpkgnotinstalled() {
+ msggroup 'testdpkgnotinstalled'
+ testdpkgstatus 'ii' '0' "$@"
+ msggroup
+}
+
+testmarkedauto() {
+ msggroup 'testmarkedauto'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedauto.comparefile"
+ if [ -n "$1" ]; then
+ msgtest 'Test for correctly marked as auto-installed' "$*"
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
+ else
+ msgtest 'Test for correctly marked as auto-installed' 'no package'
+ echo -n > "$COMPAREFILE"
+ fi
+ testoutputequal "$COMPAREFILE" aptmark showauto
+ msggroup
+}
+testmarkedmanual() {
+ msggroup 'testmarkedmanual'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedmanual.comparefile"
+ if [ -n "$1" ]; then
+ msgtest 'Test for correctly marked as manually installed' "$*"
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
+ else
+ msgtest 'Test for correctly marked as manually installed' 'no package'
+ echo -n > "$COMPAREFILE"
+ fi
+ testoutputequal "$COMPAREFILE" aptmark showmanual
+ msggroup
+}
+
+catfile() {
+ if [ "${1##*.}" = 'deb' ]; then
+ stat >&2 "$1" || true
+ file >&2 "$1" || true
+ else
+ cat >&2 "$1" || true
+ fi
+}
+msgfailoutput() {
+ msgreportheader 'msgfailoutput'
+ local MSG="$1"
+ local OUTPUT="$2"
+ shift 2
+ local CMD="$1"
+ if [ "$1" = 'grep' -o "$1" = 'tail' -o "$1" = 'head' ]; then
+ echo >&2
+ while [ -n "$2" ]; do shift; done
+ echo "#### Complete file: $1 ####"
+ catfile "$1"
+ echo "#### $CMD output ####"
+ elif [ "$1" = 'test' ]; then
+ echo >&2
+ # doesn't support ! or non-file flags
+ msgfailoutputstatfile() {
+ local FILEFLAGS='^-[bcdefgGhkLOprsStuwx]$'
+ if expr match "$1" "$FILEFLAGS" >/dev/null; then
+ echo "#### stat(2) of file: $2 ####"
+ stat "$2" || true
+ if test -d "$2"; then
+ echo "#### The directory contains: $2 ####"
+ ls >&2 "$2" || true
+ elif test -e "$2"; then
+ echo "#### Complete file: $2 ####"
+ catfile "$2"
+ fi
+ fi
+ }
+ msgfailoutputstatfile "$2" "$3"
+ while [ -n "$5" ] && [ "$4" = '-o' -o "$4" = '-a' ]; do
+ shift 3
+ msgfailoutputstatfile "$2" "$3"
+ done
+ echo '#### test output ####'
+ elif [ "$1" = 'cmp' ]; then
+ echo >&2
+ while [ -n "$2" ]; do
+ echo "#### Complete file: $2 ####"
+ catfile "$2"
+ shift
+ done
+ echo '#### cmp output ####'
+ elif [ "$1" = 'rm' ]; then
+ echo "#### Directory listing of: $(pwd) ####"
+ ls -l
+ fi
+ catfile "$OUTPUT"
+ if [ "$CMD" != 'echo' ] && tail -n 1 "$OUTPUT" | grep -q '(core dumped)$'; then
+ local COREDUMP="${TMPWORKINGDIRECTORY}/rootdir/tmp/core.dump"
+ local COREEXE=''
+ for CORENAME in 'core' 'core.pid'; do
+ if [ -s "$CORENAME" ]; then
+ cp -a ${CORENAME} "$COREDUMP"
+ elif [ -s "${TMPWORKINGDIRECTORY}/${CORENAME}" ]; then
+ cp -a "${TMPWORKINGDIRECTORY}/${CORENAME}" "$COREDUMP"
+ else
+ continue
+ fi
+ break
+ done
+ if [ -s "$COREDUMP" ]; then
+ true # found already as a file
+ elif dpkg-checkbuilddeps -d 'systemd-coredump' /dev/null >/dev/null 2>&1; then
+ COREEXE="$(coredumpctl -1 --no-legend list | sed -e 's#^.* \([^ ]\+\)$#\1#')"
+ coredumpctl -1 dump "$COREEXE" -o "$COREDUMP" 2>/dev/null >&2 || true
+ else
+ echo '### core dump not found ###'
+ cat /proc/sys/kernel/core_pattern
+ fi
+ if [ -s "$COREDUMP" ]; then
+ if [ -z "$COREEXE" ]; then
+ case "$CMD" in
+ apt) COREEXE="${APTCMDLINEBINDIR}/${CMD}";;
+ aptftparchive) COREEXE="${APTFTPARCHIVEBINDIR}/apt-ftparchive";;
+ apthelper) COREEXE="${APTHELPERBINDIR}/apt-helper";;
+ aptwebserver) COREEXE="${APTTESTHELPERSBINDIR}/aptwebserver";;
+ apt*) COREEXE="${APTCMDLINEBINDIR}/apt-${CMD##*apt}";;
+ *) COREEXE="${APTCMDLINEBINDIR}/${CMD}";;
+ esac
+ fi
+
+ if [ -d "${ARTIFACTSDIR}" ]; then
+ local ARTIFACT_COREDUMP="$(mktemp --suffix=.coredump -p "${ARTIFACTSDIR}" "${COREEXE##*/}-XXXXXX")"
+ cp -a "$COREDUMP" "$ARTIFACT_COREDUMP"
+ echo "#### coredump in $ARTIFACT_COREDUMP for $COREEXE ####"
+ fi
+ if [ -n "$COREEXE" -a -s "$COREEXE" ] && dpkg-checkbuilddeps -d 'gdb' /dev/null >/dev/null 2>&1; then
+ echo "#### gdb backtrace ####"
+ command gdb --batch -n -ex 'set pagination off' --ex 'thread apply all bt full' "$COREEXE" "$COREDUMP" || true
+ fi
+ fi
+ rm -f "$COREDUMP"
+ fi
+ msgfail "$MSG"
+}
+
+testsuccesswithglobalerror() {
+ local TYPE="$1"
+ local ERRORS="$2"
+ shift 2
+ msggroup "$TYPE"
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for successful execution of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/${TYPE}.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -E "^[${ERRORS}]: " "$OUTPUT" > "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" 2>&1; then
+ if [ "$IGNORE_PTY_NOT_MOUNTED" = '1' ]; then
+ if echo 'E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)' \
+ | cmp - "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" >/dev/null 2>&1; then
+ msgpass
+ elif echo 'E: Can not write log (Is /dev/pts mounted?) - posix_openpt (13: Permission denied)' \
+ | cmp - "${TMPWORKINGDIRECTORY}/rootdir/tmp/checkforwarnings.output" >/dev/null 2>&1; then
+ msgpass
+ else
+ msgfailoutput 'successful run, but output contains warnings/errors' "$OUTPUT" "$@"
+ fi
+ else
+ msgfailoutput 'successful run, but output contains warnings/errors' "$OUTPUT" "$@"
+ fi
+ elif [ "$TYPE" = 'testsuccesswithnotice' ]; then
+ if grep -q -E "^N: " "$OUTPUT"; then
+ msgpass
+ else
+ msgfailoutput 'successful run, but output had no notices' "$OUTPUT" "$@"
+ fi
+ else
+ msgpass
+ fi
+ else
+ msgpass
+ fi
+ else
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ fi
+ aptautotest "$TYPE" "$@"
+ msggroup
+}
+testsuccesswithnotice() {
+ testsuccesswithglobalerror 'testsuccesswithnotice' 'WE' "$@"
+}
+testsuccess() {
+ testsuccesswithglobalerror 'testsuccess' 'NWE' "$@"
+}
+testwarning() {
+ msggroup 'testwarning'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for successful execution with warnings of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -q -E '^E: ' "$OUTPUT"; then
+ msgfailoutput 'successful run, but output contains errors' "$OUTPUT" "$@"
+ elif ! grep -q -E '^W: ' "$OUTPUT"; then
+ msgfailoutput 'successful run, but output contains no warnings' "$OUTPUT" "$@"
+ else
+ msgpass
+ fi
+ else
+ msgpass
+ fi
+ else
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ fi
+ aptautotest 'testwarning' "$@"
+ msggroup
+}
+testfailure() {
+ msggroup 'testfailure'
+ if [ "$1" = '--nomsg' ]; then
+ shift
+ else
+ msgtest 'Test for failure in execution of' "$*"
+ fi
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
+ if "$@" >"${OUTPUT}" 2>&1; then
+ local EXITCODE=$?
+ msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
+ else
+ local EXITCODE=$?
+ if expr match "$1" '^apt.*' >/dev/null; then
+ if [ "$1" = 'aptkey' ]; then
+ if grep -q " Can't check signature:
+ BAD signature from
+ signature could not be verified" "$OUTPUT"; then
+ msgpass
+ else
+ msgfailoutput "run failed with exitcode ${EXITCODE}, but no signature error" "$OUTPUT" "$@"
+ fi
+ else
+ if grep -q -E ' runtime error: ' "$OUTPUT"; then
+ msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
+ elif grep -q -E '==ERROR' "$OUTPUT"; then
+ msgfailoutput 'compiler sanitizers reported errors' "$OUTPUT" "$@"
+ elif ! grep -q -E '^E: ' "$OUTPUT"; then
+ msgfailoutput "run failed with exitcode ${EXITCODE}, but with no errors" "$OUTPUT" "$@"
+ else
+ msgpass
+ fi
+ fi
+ else
+ msgpass
+ fi
+ fi
+ aptautotest 'testfailure' "$@"
+ msggroup
+}
+
+testreturnstateequal() {
+ local STATE="$1"
+ if [ "$STATE" = 'testsuccesswithglobalerror' ]; then
+ local STATE="$2"
+ local TYPE="$3"
+ shift 3
+ msggroup "${STATE}equal"
+ if [ "$1" != '--nomsg' ]; then
+ local CMP="$1"
+ shift
+ testsuccesswithglobalerror "$STATE" "$TYPE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ else
+ local CMP="$2"
+ shift 2
+ testsuccesswithglobalerror "$STATE" "$TYPE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ fi
+ else
+ msggroup "${STATE}equal"
+ if [ "$2" != '--nomsg' ]; then
+ local CMP="$2"
+ shift 2
+ "$STATE" "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ else
+ local CMP="$3"
+ shift 3
+ "$STATE" --nomsg "$@"
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/tmp/${STATE}.output" "$CMP"
+ fi
+ fi
+ msggroup
+}
+testsuccessequal() {
+ # we compare output, so we know perfectly well about N:
+ testreturnstateequal 'testsuccesswithglobalerror' 'testsuccess' 'WE' "$@"
+}
+testwarningequal() {
+ testreturnstateequal 'testwarning' "$@"
+}
+testfailureequal() {
+ testreturnstateequal 'testfailure' "$@"
+}
+
+testfailuremsg() {
+ msggroup 'testfailuremsg'
+ local CMP="$1"
+ shift
+ testfailure "$@"
+ msgtest 'Check that the output of the previous failed command has expected' 'failures and warnings'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailuremsg.comparefile"
+ grep '^\(W\|E\|N\):' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output" > "$COMPAREFILE" 2>&1 || true
+ testoutputequal "$COMPAREFILE" echo "$CMP"
+ msggroup
+}
+testwarningmsg() {
+ msggroup 'testwarningmsg'
+ local CMP="$1"
+ shift
+ testwarning "$@"
+ msgtest 'Check that the output of the previous warned command has expected' 'warnings'
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarningmsg.comparefile"
+ grep '^\(W\|E\|N\):' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output" > "$COMPAREFILE" 2>&1 || true
+ testoutputequal "$COMPAREFILE" echo "$CMP"
+ msggroup
+}
+
+testfilestats() {
+ msggroup 'testfilestats'
+ msgtest "Test that file $1 has $2 $3" "$4"
+ if [ "$4" "$3" "$(stat --format "$2" "$1")" ]; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfilestats.output"
+ {
+ ls -ld "$1" || true
+ echo -n "stat(1) reports for $2: "
+ stat --format "$2" "$1" || true
+ } >"$OUTPUT" 2>&1
+ msgfailoutput '' "$OUTPUT"
+ fi
+ msggroup
+}
+testaccessrights() {
+ msggroup 'testaccessrights'
+ testfilestats "$1" '%a' '=' "$2"
+ msggroup
+}
+
+testwebserverlaststatuscode() {
+ msggroup 'testwebserverlaststatuscode'
+ local DOWNLOG="${TMPWORKINGDIRECTORY}/rootdir/tmp/webserverstatus-testfile.log"
+ local STATUS="${TMPWORKINGDIRECTORY}/downloaded/webserverstatus-statusfile.log"
+ rm -f "$DOWNLOG" "$STATUS"
+ msgtest 'Test last status code from the webserver was' "$1"
+ if downloadfile "http://localhost:${APTHTTPPORT}/_config/find/aptwebserver::last-status-code" "$STATUS" > "$DOWNLOG" && [ "$(cat "$STATUS")" = "$1" ]; then
+ msgpass
+ else
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwebserverlaststatuscode.output"
+ {
+ if [ -n "$2" ]; then
+ shift
+ echo >&2 '#### Additionally provided output files contain:'
+ cat >&2 "$@"
+ fi
+ echo >&2 '#### Download log of the status code:'
+ cat >&2 "$DOWNLOG"
+ } >"$OUTPUT" 2>&1
+ msgfailoutput "Status was $(cat "$STATUS")" "$OUTPUT"
+ fi
+ msggroup
+}
+
+mapkeynametokeyid() {
+ while [ -n "$1" ]; do
+ case "$1" in
+ *Joe*|*Sixpack*|newarchive) echo '5A90D141DBAC8DAE';;
+ *Rex*|*Expired*) echo '4BC0A39C27CE74F9';;
+ *Marvin*|*Paranoid*) echo 'E8525D47528144E2';;
+ *Sebastian*|*Subkey*) echo '5B6896415D44C43E';;
+ oldarchive) echo 'FDD2DB85F68C85A3';;
+ *) echo 'UNKNOWN KEY';;
+ esac
+ shift
+ done
+}
+testaptkeys() {
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylist.output"
+ if ! aptkey list --with-colon 2>/dev/null | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then
+ echo -n > "$OUTPUT"
+ fi
+ testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")"
+}
+
+pause() {
+ echo "STOPPED execution. Press enter to continue"
+ local IGNORE
+ read IGNORE
+}
+
+logcurrentarchivedirectory() {
+ find "${TMPWORKINGDIRECTORY}/aptarchive/dists" -type f | while read line; do
+ stat --format '%U:%G:%a:%n' "$line"
+ done | sort > "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst"
+}
+listcurrentlistsdirectory() {
+ {
+ find rootdir/var/lib/apt/lists -maxdepth 1 -type d | while read line; do
+ stat --format '%U:%G:%a:%n' "$line"
+ done
+ find rootdir/var/lib/apt/lists -maxdepth 1 \! -type d | while read line; do
+ stat --format '%U:%G:%a:%s:%y:%n' "$line"
+ done
+ } | sort
+}
+forallsupportedcompressors() {
+ rm -f "${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
+ for COMP in $(aptconfig dump 'APT::Compressor' --format '%f%n' | cut -d':' -f 5 | uniq); do
+ if [ -z "$COMP" -o "$COMP" = '.' ]; then continue; fi
+ "$@" "$COMP"
+ done
+}
+
+breakfiles() {
+ while [ -n "$1" ]; do
+ mv -f "${1}" "${1}.bak"
+ testsuccess dd if=/dev/zero of="${1}" bs="$(stat -c %s "${1}.bak")" count=1
+ shift
+ done
+}
+unbreakfiles() {
+ while [ -n "$1" ]; do
+ mv -f "${1}.bak" "${1}"
+ shift
+ done
+}
+
+### convenience hacks ###
+mkdir() {
+ # creating some directories by hand is a tedious task, so make it look simple
+ local PARAMS="$*"
+ if [ "$PARAMS" != "${PARAMS#*rootdir/var/lib/apt/lists}" ]; then
+ # only the last directory created by mkdir is effected by the -m !
+ command mkdir -m 755 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt"
+ command mkdir -m 755 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists"
+ command mkdir -m 700 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
+ command mkdir -m 755 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/auxfiles"
+ touch "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/lock"
+ if [ "$(id -u)" = '0' ]; then
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/auxfiles"
+ fi
+ else
+ command mkdir "$@"
+ fi
+}
+
+### The following tests are run by most test methods automatically to check
+### general things about commands executed without writing the test every time.
+
+aptautotest() {
+ if [ $# -lt 3 ]; then return; fi
+ local TESTCALL="$1"
+ local CMD="$2"
+ local FIRSTOPT="$3"
+ shift 2
+ for i in "$@"; do
+ if ! expr match "$i" '^-' >/dev/null 2>&1; then
+ FIRSTOPT="$i"
+ break
+ fi
+ done
+ shift
+ local AUTOTEST="aptautotest_$(echo "${CMD##*/}_${FIRSTOPT}" | tr -d -c 'A-za-z0-9')"
+ if command -v $AUTOTEST >/dev/null; then
+ # save and restore the *.output files from other tests
+ # as we might otherwise override them in these automatic tests
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mkdir "${TMPWORKINGDIRECTORY}/rootdir/tmp"
+ $AUTOTEST "$TESTCALL" "$@"
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp-before" "${TMPWORKINGDIRECTORY}/rootdir/tmp"
+ fi
+}
+
+cdfind() {
+ ( cd /; find "$@" )
+}
+aptautotest_aptget_update() {
+ local TESTCALL="$1"
+ while [ -n "$2" ]; do
+ if [ "$2" = '--print-uris' ]; then return; fi # simulation mode
+ shift
+ done
+ if ! test -d "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists"; then return; fi
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
+ # all copied files are properly chmodded
+ local backupIFS="$IFS"
+ IFS="$(printf "\n\b")"
+ cdfind "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -type f ! -name 'lock' | while read file; do
+ testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+ done
+ IFS="$backupIFS"
+ if [ "$TESTCALL" = 'testsuccess' ]; then
+ # failure cases can retain partial files and such
+ testempty cdfind "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" -mindepth 1 ! \( -name 'lock' -o -name '*.FAILED' \)
+ fi
+ if [ -s "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst" ]; then
+ testfileequal "${TMPWORKINGDIRECTORY}/rootdir/var/log/aptgetupdate.before.lst" \
+ "$(cdfind "${TMPWORKINGDIRECTORY}/aptarchive/dists" -type f | while read line; do stat --format '%U:%G:%a:%n' "$line"; done | sort)"
+ fi
+}
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; }
+aptautotest_aptcdrom_add() { aptautotest_aptget_update "$@"; }
+
+testaptautotestnodpkgwarning() {
+ local TESTCALL="$1"
+ while [ -n "$2" ]; do
+ if expr match "$2" '^-[a-z]*s' >/dev/null 2>&1; then return; fi # simulation mode
+ if expr match "$2" '^-dy\?' >/dev/null 2>&1; then return; fi # download-only mode
+ shift
+ done
+ testfailure grep '^dpkg: warning:.*\(ignor\|unknown\).*' "${TMPWORKINGDIRECTORY}/rootdir/tmp-before/${TESTCALL}.output"
+}
+
+aptautotest_aptget_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_aptget_purge() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_install() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_remove() { testaptautotestnodpkgwarning "$@"; }
+aptautotest_apt_purge() { testaptautotestnodpkgwarning "$@"; }
+
+testaptmarknodefaultsections() {
+ testfailure grep '^Auto-Installed: 0$' "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/extended_states"
+}
+aptautotest_aptmark_auto() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptmark_manual() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptget_markauto() { testaptmarknodefaultsections "$@"; }
+aptautotest_aptget_markmanual() { testaptmarknodefaultsections "$@"; }
diff --git a/test/integration/header-compilation b/test/integration/header-compilation
new file mode 100755
index 0000000..33e0a5c
--- /dev/null
+++ b/test/integration/header-compilation
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+(for i in $TESTDIR/../../build/include/apt-pkg/*.h; do echo "#include \"$i\""; done) > include.h
+
+
+testone() {
+ local cxx=$1
+ shift
+
+ if type $cxx 2>&1 1>/dev/null; then
+ testsuccess $cxx -c -o /dev/null include.h
+ testsuccess $cxx -c -o /dev/null -std=c++98 include.h
+ testsuccess $cxx -c -o /dev/null -std=c++11 include.h
+ else
+ msgskip "Compile $cxx is not installed"
+ fi
+}
+
+testone clang++
+testone g++
+testone g++-4.8
diff --git a/test/integration/joesixpack.pub b/test/integration/joesixpack.pub
new file mode 100644
index 0000000..cad0561
--- /dev/null
+++ b/test/integration/joesixpack.pub
Binary files differ
diff --git a/test/integration/joesixpack.sec b/test/integration/joesixpack.sec
new file mode 100644
index 0000000..0dc5cd8
--- /dev/null
+++ b/test/integration/joesixpack.sec
Binary files differ
diff --git a/test/integration/keyrings/test-archive-keyring.pub b/test/integration/keyrings/test-archive-keyring.pub
new file mode 100644
index 0000000..3251740
--- /dev/null
+++ b/test/integration/keyrings/test-archive-keyring.pub
Binary files differ
diff --git a/test/integration/keyrings/test-archive-keyring.sec b/test/integration/keyrings/test-archive-keyring.sec
new file mode 100644
index 0000000..001f795
--- /dev/null
+++ b/test/integration/keyrings/test-archive-keyring.sec
Binary files differ
diff --git a/test/integration/keyrings/test-master-keyring.pub b/test/integration/keyrings/test-master-keyring.pub
new file mode 100644
index 0000000..9809d32
--- /dev/null
+++ b/test/integration/keyrings/test-master-keyring.pub
Binary files differ
diff --git a/test/integration/keyrings/test-master-keyring.sec b/test/integration/keyrings/test-master-keyring.sec
new file mode 100644
index 0000000..c5c5bfd
--- /dev/null
+++ b/test/integration/keyrings/test-master-keyring.sec
Binary files differ
diff --git a/test/integration/marvinparanoid.pub b/test/integration/marvinparanoid.pub
new file mode 100644
index 0000000..866dc14
--- /dev/null
+++ b/test/integration/marvinparanoid.pub
Binary files differ
diff --git a/test/integration/marvinparanoid.sec b/test/integration/marvinparanoid.sec
new file mode 100644
index 0000000..ace09f7
--- /dev/null
+++ b/test/integration/marvinparanoid.sec
Binary files differ
diff --git a/test/integration/rexexpired.pub b/test/integration/rexexpired.pub
new file mode 100644
index 0000000..2d2c81c
--- /dev/null
+++ b/test/integration/rexexpired.pub
Binary files differ
diff --git a/test/integration/rexexpired.sec b/test/integration/rexexpired.sec
new file mode 100644
index 0000000..c431fd9
--- /dev/null
+++ b/test/integration/rexexpired.sec
Binary files differ
diff --git a/test/integration/run-tests b/test/integration/run-tests
new file mode 100755
index 0000000..c1cc780
--- /dev/null
+++ b/test/integration/run-tests
@@ -0,0 +1,166 @@
+#!/bin/sh
+set -e
+
+TESTTORUN=''
+while [ -n "$1" ]; do
+ if [ "$1" = "-q" ]; then
+ export MSGLEVEL=2
+ elif [ "$1" = "-qq" ]; then
+ export MSGLEVEL=1
+ elif [ "$1" = "-v" ]; then
+ export MSGLEVEL=4
+ elif [ "$1" = '--color=no' ]; then
+ export MSGCOLOR='NO'
+ elif [ "$1" = '--color=yes' ]; then
+ export MSGCOLOR='YES'
+ elif [ "$1" = '--color' ]; then
+ export MSGCOLOR="$(echo "$2" | tr 'a-z' 'A-Z')"
+ shift
+ elif [ "$1" = '--level' ]; then
+ export MSGLEVEL=$2
+ shift
+ elif [ "$1" = '-j' ]; then
+ APT_TEST_JOBS=$2
+ shift
+ elif [ -x "$1" ]; then
+ TESTTORUN="$1"
+ else
+ echo >&2 "WARNING: Unknown parameter »$1« will be ignored"
+ fi
+ shift
+done
+export MSGLEVEL="${MSGLEVEL:-3}"
+
+if [ "${MSGCOLOR:-YES}" = 'YES' ]; then
+ if [ ! -t 1 ]; then # but check that we output to a terminal
+ export MSGCOLOR='NO'
+ fi
+fi
+if [ "$MSGCOLOR" != 'NO' ]; then
+ CTEST='\033[1;32m'
+ CHIGH='\033[1;35m'
+ CRESET='\033[0m'
+else
+ CTEST=''
+ CHIGH=''
+ CRESET=''
+fi
+
+if [ -n "$TESTTORUN" ]; then
+ # collecting the output of one test to have it together
+ OUTPUT="$(mktemp)"
+ CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP"
+ trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM
+ {
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${TESTTORUN##*/}"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf "${CTEST}Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}: "
+ else
+ printf "${CTEST}Run Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n"
+ fi
+ if ! "$TESTTORUN"; then
+ FAIL='yes'
+ if [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
+ else
+ echo >&2 "${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}"
+ fi
+ else
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf " "
+ fi
+ fi
+ if [ "$MSGLEVEL" -le 1 ]; then
+ :
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ echo
+ fi
+ } >"$OUTPUT" 2>&1
+ # without we end up getting stepped output 'randomly'
+ stty sane || true
+ cat >&2 "$OUTPUT"
+ stty sane || true
+ if [ "$FAIL" = 'yes' ]; then
+ exit 1
+ else
+ exit 0
+ fi
+fi
+
+FAIL=0
+PASS=0
+ALL=0
+FAILED_TESTS=""
+DIR="$(readlink -f "$(dirname "$0")")"
+cd "$DIR"
+TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)"
+if [ -n "$APT_TEST_JOBS" ]; then
+ if [ "$MSGCOLOR" != 'NO' ]; then
+ export MSGCOLOR='ALWAYS'
+ fi
+ parallel=parallel
+ if command -v moreutils-parallel >/dev/null 2>&1; then
+ parallel=moreutils-parallel
+ elif command -v parallel.moreutils >/dev/null 2>&1; then
+ parallel=parallel.moreutils
+ fi
+ exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
+fi
+
+APT_TEST_SIGNINGHOME="$(mktemp --directory --tmpdir 'apt-key-signinghome.XXXXXXXXXX')"
+removesigninghome() {
+ if [ -z "$APT_TEST_SIGNINGHOME" ]; then return; fi
+ GNUPGHOME="${APT_TEST_SIGNINGHOME}" gpgconf --kill gpg-agent >/dev/null 2>&1 || true
+ rm -rf -- "$APT_TEST_SIGNINGHOME"
+}
+trap "exit 1" 0 HUP INT ILL ABRT FPE SEGV PIPE TERM
+trap "removesigninghome" 0 QUIT
+export APT_TEST_SIGNINGHOME
+
+TOTAL="$(echo "$TESTLIST" | wc -l)"
+if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${CTEST}Running testcases${CRESET}: "
+fi
+for testcase in $TESTLIST; do
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf "${testcase##*/}"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}${testcase##*/}${CRESET}: "
+ else
+ printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}${testcase##*/}${CRESET}\n"
+ fi
+ if ! ${testcase}; then
+ FAIL=$((FAIL+1))
+ FAILED_TESTS="$FAILED_TESTS ${testcase##*/}"
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}\n"
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ printf >&2 "\n${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
+ else
+ echo >&2 "${CHIGH}Running ${testcase##*/} -> FAILED${CRESET}"
+ fi
+ else
+ PASS=$((PASS+1))
+ if [ "$MSGLEVEL" -le 1 ]; then
+ printf " "
+ fi
+ fi
+ ALL=$((ALL+1))
+ if [ "$MSGLEVEL" -le 1 ]; then
+ :
+ elif [ "$MSGLEVEL" -le 2 ]; then
+ echo
+ fi
+done
+
+echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed"
+if [ -n "$FAILED_TESTS" ]; then
+ echo >&2 "Failed tests: $FAILED_TESTS"
+else
+ echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
+fi
+# ensure we don't overflow
+exit $((FAIL <= 255 ? FAIL : 255))
diff --git a/test/integration/sebastiansubkey.master.sec b/test/integration/sebastiansubkey.master.sec
new file mode 100644
index 0000000..4d86fb9
--- /dev/null
+++ b/test/integration/sebastiansubkey.master.sec
Binary files differ
diff --git a/test/integration/sebastiansubkey.pub b/test/integration/sebastiansubkey.pub
new file mode 100644
index 0000000..c5f198c
--- /dev/null
+++ b/test/integration/sebastiansubkey.pub
Binary files differ
diff --git a/test/integration/sebastiansubkey.sec b/test/integration/sebastiansubkey.sec
new file mode 100644
index 0000000..fd40889
--- /dev/null
+++ b/test/integration/sebastiansubkey.sec
Binary files differ
diff --git a/test/integration/skip-acquire-same-repository-multiple-times b/test/integration/skip-acquire-same-repository-multiple-times
new file mode 100755
index 0000000..c8372bd
--- /dev/null
+++ b/test/integration/skip-acquire-same-repository-multiple-times
@@ -0,0 +1,85 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TESTFILE="$TESTDIR/framework"
+cp "$TESTFILE" aptarchive/foo
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+getcodenamefromsuite() { echo "jessie"; }
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+setupaptarchive --no-update
+ln -s "${APTARCHIVE}/dists/stable" "${APTARCHIVE}/dists/jessie"
+for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do
+ sed 's#stable#jessie#g' $FILE > $(echo "$FILE" | sed 's#stable#jessie#g')
+done
+
+# install a slowed down file: otherwise its to fast to reproduce combining
+NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
+OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+done
+IFS="$backupIFS"
+rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
+cat >"${NEWMETHODS}/file" <<EOF
+#!/bin/sh
+while read line; do
+ echo "\$line"
+ if [ -z "\$line" ]; then
+ sleep 0.5
+ fi
+done | '$OLDMETHODS/'"\${0##*/}"
+EOF
+chmod +x "${NEWMETHODS}/file"
+ln -s "${NEWMETHODS}/file" "${NEWMETHODS}/http"
+
+tworepos() {
+ msgtest "Downloading the same repository twice over $1" "$3"
+ testsuccess --nomsg aptget update -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ #cat download.log
+ aptget indextargets --format '$(FILENAME)' --no-release-info | sort > file.lst
+ testequal "$(find "$(readlink -f ./rootdir/var/lib/apt/lists)" -name '*_dists_*' \( ! -name '*InRelease' \) -type f | sort)" cat file.lst
+ testsuccess aptcache policy
+ testequal "foo:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 $1:$2 jessie/main all Packages
+ 500 $1:$2 stable/main all Packages" aptcache policy foo
+ testfailure aptcache show foo/unstable
+ testsuccess aptcache show foo/stable
+ testsuccess aptcache show foo/jessie
+}
+
+tworepos 'file' "$APTARCHIVE" 'no partial'
+testequal '14' grep -c '200%20URI%20Start' ./download.log
+testequal '14' grep -c '201%20URI%20Done' ./download.log
+testequal '8' grep -c '^ @ Queue: Action combined' ./download.log
+tworepos 'file' "$APTARCHIVE" 'hit'
+testequal '6' grep -c '200%20URI%20Start' ./download.log
+testequal '6' grep -c '201%20URI%20Done' ./download.log
+testequal '0' grep -c '^ @ Queue: Action combined' ./download.log
+rm -rf rootdir/var/lib/apt/lists
+
+changetowebserver
+
+tworepos 'http' "//localhost:${APTHTTPPORT}" 'no partial'
+testequal '12' grep -c '200%20URI%20Start' ./download.log
+testequal '12' grep -c '201%20URI%20Done' ./download.log
+testequal '8' grep -c '^ @ Queue: Action combined' ./download.log
+tworepos 'http' "//localhost:${APTHTTPPORT}" 'hit'
+testequal '2' grep -c '200%20URI%20Start' ./download.log
+testequal '4' grep -c '201%20URI%20Done' ./download.log
+testequal '0' grep -c '^ @ Queue: Action combined' ./download.log
+rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/skip-apt-download-progress b/test/integration/skip-apt-download-progress
new file mode 100755
index 0000000..13a18f7
--- /dev/null
+++ b/test/integration/skip-apt-download-progress
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# ensure downloading sends progress as a regression test for commit 9127d7ae
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+changetohttpswebserver
+
+assertprogress() {
+ testsuccess grep "dlstatus:1:0.0000:Retrieving file 1 of 1" "$1"
+ testsuccess grep -E "dlstatus:1:[1-9][0-9]{0,1}\.[0-9]{1,4}:Retrieving file 1 of 1" "$1"
+ testsuccess grep "dlstatus:1:100.0000:Retrieving file 1 of 1" "$1"
+}
+
+# we need to ensure the file is reasonable big so that apt has a chance to
+# actually report progress - but not too big to ensure its not delaying the
+# test too much
+TESTFILE=testfile.big
+testsuccess dd if=/dev/zero of=./aptarchive/$TESTFILE bs=1600k count=1
+
+OPT='-o APT::Status-Fd=3 -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1 -o Debug::Acquire::https=1'
+
+msgtest 'download progress works via' 'http'
+for i in 2 5 7 10 12 15; do
+ exec 3> apt-progress-http.log
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/$TESTFILE" ./downloaded/http-$TESTFILE $OPT -o Acquire::http::Dl-Limit=$((1600/i))
+ if [ "$(wc -l apt-progress-http.log | awk '{print $1}')" -ge 3 ]; then
+ break
+ fi
+done
+assertprogress apt-progress-http.log
+
+msgtest 'download progress works via' 'https'
+for i in 2 5 7 10 12 15; do
+ exec 3> apt-progress-https.log
+ testsuccess --nomsg apthelper download-file "https://localhost:${APTHTTPSPORT}/$TESTFILE" ./downloaded/https-$TESTFILE $OPT -o Acquire::https::Dl-Limit=$((1600/i))
+ if [ "$(wc -l apt-progress-https.log | awk '{print $1}')" -ge 3 ]; then
+ break
+ fi
+done
+assertprogress apt-progress-https.log
+
+# cleanup
+rm -f apt-progress*.log
diff --git a/test/integration/skip-apt-dropprivs b/test/integration/skip-apt-dropprivs
new file mode 100755
index 0000000..e0dd741
--- /dev/null
+++ b/test/integration/skip-apt-dropprivs
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+aptdropprivs() { runapt "${APTTESTHELPERSBINDIR}/aptdropprivs" "$@"; }
+
+testsuccess aptdropprivs -- /bin/true
+testsuccess aptdropprivs --user "$USER" -- /bin/true
+testsuccess aptdropprivs --user 'nobody' -- /bin/true
+testsuccess aptdropprivs --user '_apt' -- /bin/true
+
+IDBIN='/usr/bin/id'
+testsuccessequal "$("$IDBIN")" aptdropprivs --user "$USER" -- "$IDBIN"
+
+SUDOBIN='/usr/bin/sudo'
+testequal "sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?" aptdropprivs --user 'nobody' -- "$SUDOBIN" "$IDBIN"
+
+if [ "$(id -u)" = '0' ]; then
+ testsuccessequal '_apt' aptdropprivs --user '_apt' -- "$IDBIN" '-un'
+ testsuccess aptdropprivs --user '_apt' -- '/bin/sh' '-c' 'export'
+ cp rootdir/tmp/testsuccess.output apt.env
+ testsuccessequal "export HOME='/nonexistent'" grep '^export HOME' apt.env
+ testsuccessequal "export USER='_apt'
+export USERNAME='_apt'" grep '^export USER' apt.env
+ testsuccessequal "export LOGNAME='_apt'" grep '^export LOGNAME' apt.env
+ testsuccessequal "export SHELL='/bin/sh'" grep '^export SHELL=' apt.env
+fi
diff --git a/test/integration/skip-avoid-avoiding-breaks-predepends b/test/integration/skip-avoid-avoiding-breaks-predepends
new file mode 100755
index 0000000..0697ff4
--- /dev/null
+++ b/test/integration/skip-avoid-avoiding-breaks-predepends
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertinstalledpackage 'looping' 'native' '1'
+insertinstalledpackage 'loop1' 'native' '1' 'Depends: loop2 (= 1)'
+insertinstalledpackage 'loop2' 'native' '1' 'Depends: loop1 (= 1)'
+
+buildsimplenativepackage 'looping' 'native' '1.15.7.2' 'stable' 'Breaks: loop2 (<= 1)'
+buildsimplenativepackage 'loop1' 'native' '2' 'stable' 'Depends: loop2 (= 2)'
+buildsimplenativepackage 'loop2' 'native' '2' 'stable' 'Depends: loop1 (= 2)
+Pre-Depends: looping (>= 1.15)'
+
+setupaptarchive
+
+aptget dist-upgrade -y -o Debug::pkgOrderList=1 #-qq >/dev/null 2>&1
+testdpkginstalled looping loop1 loop2
diff --git a/test/integration/skip-bug-601016-description-translation b/test/integration/skip-bug-601016-description-translation
new file mode 100755
index 0000000..3f68ce2
--- /dev/null
+++ b/test/integration/skip-bug-601016-description-translation
@@ -0,0 +1,134 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+# we need a valid locale here, otherwise the language configuration
+# will be overridden by LC_ALL=C
+LOCALE="$(echo "$LANG" | cut -d'_' -f 1)"
+MD5Sum='Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c'
+
+PACKAGESTANZA='Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.7
+Filename: pool/main/a/apt/apt_0.8.7_i386.deb
+Size: 2140230
+MD5sum: 74769bfbcef9ebc4fa74f7a5271b9c08'
+
+PACKAGESTANZA2='Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: amd64
+Version: 0.8.7
+Filename: pool/main/a/apt/apt_0.8.7_amd64.deb
+Size: 2210342
+MD5sum: 4a869bfbdef9ebc9fa74f7a5271e8d1a'
+
+echo "$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+
+$PACKAGESTANZA2
+Description: Advanced front-end for dpkg
+$MD5Sum" > aptarchive/Packages
+
+echo "Package: apt
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum" > "aptarchive/${LOCALE}"
+
+# add our $LOCALE translation file explicitly to be picked up by apt-ftparchive
+echo "APT::FTPArchive::Release::Patterns:: \"en\";
+APT::FTPArchive::Release::Patterns:: \"${LOCALE}\";" > rootdir/etc/apt/apt.conf.d/ftparchivepattern
+
+NOLONGSTANZA="$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+"
+
+ENGLISHSTANZA="$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+"
+
+LOCALESTANZA="$PACKAGESTANZA
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum
+"
+LOCALESTANZA2="$PACKAGESTANZA2
+Description-${LOCALE}: Mächtige Oberfläche für dpkg
+ Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff
+ auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die
+ APT-Dselect-Methode. Beides sind einfache und sicherere Wege,
+ um Pakete zu installieren und Upgrades durchzuführen.
+$MD5Sum
+"
+
+testrun() {
+ echo "Acquire::Languages { \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ export LC_ALL=""
+ rm -rf rootdir/var/lib/apt/lists
+ setupaptarchive
+ testequal "$LOCALESTANZA" aptcache show apt -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA" aptcache show apt:i386 -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA2" aptcache show apt:amd64 -o Test=File-${LOCALE}
+ testequal "$NOLONGSTANZA" aptcache show apt -o Acquire::Languages="ww" -o Test=File-${LOCALE}
+ testequal "$LOCALESTANZA" aptcache show apt -o Acquire::Languages::="ww" -o Test=File-${LOCALE}
+ LC_ALL=C.UTF-8 testequal "$LOCALESTANZA" aptcache show apt -o Test=File-${LOCALE}
+ LC_ALL=C.UTF-8 testequal "$ENGLISHSTANZA" aptcache show apt -o Test=File-${LOCALE} -o Acquire::Languages="environment,${LOCALE}"
+ export LC_ALL=""
+ echo "Acquire::Languages { \"ww\"; \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ testequal "$LOCALESTANZA" aptcache show apt -o Test=File-ww-${LOCALE}
+ echo "Acquire::Languages { \"ww\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages
+ testequal "$ENGLISHSTANZA" aptcache show apt -o Test=File-ww
+}
+
+testrun
+
+echo "$PACKAGESTANZA
+Description: Advanced front-end for dpkg
+$MD5Sum
+
+$PACKAGESTANZA2
+Description: Advanced front-end for dpkg
+$MD5Sum" > aptarchive/Packages
+
+echo "Package: apt
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum" > aptarchive/en
+
+ENGLISHSTANZA="$PACKAGESTANZA
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum
+"
+ENGLISHSTANZA2="$PACKAGESTANZA2
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum
+"
+
+testrun
diff --git a/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch b/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch
new file mode 100755
index 0000000..9abaee1
--- /dev/null
+++ b/test/integration/skip-bug-711456-apt-cdrom-multiple-cds-multiarch
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64,i386' '0.8.15' 'stable' 'Depends: libtest'
+buildsimplenativepackage 'libtest' 'amd64,i386' '0.8.15' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libtest' 'amd64,i386' '1' 'unstable' 'Multi-Arch: same'
+
+# needed by the ftparchive.conf
+cd aptarchive
+ln -s ../incoming pool
+createaptftparchiveconfig
+cd - >/dev/null
+# create an amd64 cdrom
+sed -i 's#Architectures .*$#Architectures "amd64 source";#' aptarchive/ftparchive.conf
+setupaptarchive --no-update
+changetocdrom 'Debian APT Testdisk amd64 0.8.15'
+mv rootdir/media/cdrom rootdir/media/cdrom-amd64
+addtrap 'prefix' "chmod -R +w $PWD/rootdir/media/cdrom-amd64/dists/;"
+chmod -R -w rootdir/media/cdrom-amd64/dists
+ln -s $PWD/rootdir/media/cdrom-amd64 $PWD/rootdir/media/cdrom
+aptcdrom add -m -o quiet=1
+rm $PWD/rootdir/media/cdrom
+# do it again to create a i386 cdrom
+sed -i 's#Architectures .*$#Architectures "i386 source";#' aptarchive/ftparchive.conf
+setupaptarchive --no-update
+changetocdrom 'Debian APT Testdisk i386 0.8.15'
+mv rootdir/media/cdrom rootdir/media/cdrom-i386
+addtrap 'prefix' "chmod -R +w $PWD/rootdir/media/cdrom-i386/dists/;"
+chmod -R -w rootdir/media/cdrom-i386/dists
+ln -s $PWD/rootdir/media/cdrom-i386 $PWD/rootdir/media/cdrom
+aptcdrom add -m -o quiet=1
+
+# play with the cdroms
+testdpkgnotinstalled testing
+aptget install testing -t stable -y #> /dev/null 2>&1
+testdpkginstalled testing
+
+testdpkgnotinstalled testing:i386
+aptget install testing:i386 -t stable -y #> /dev/null 2>&1
+testdpkginstalled testing:i386
+
+aptget dist-upgrade -y
diff --git a/test/integration/skip-method-http-socks-client b/test/integration/skip-method-http-socks-client
new file mode 100755
index 0000000..b9e8393
--- /dev/null
+++ b/test/integration/skip-method-http-socks-client
@@ -0,0 +1,181 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+# We don't do a real proxy here, we just look how the implementation
+# reacts to certain responses from a "proxy" provided by socat
+# Checks HTTP, but requesting https instead will check HTTPS (curl) which
+# uses different error messages through – also: https://github.com/curl/curl/issues/944
+
+# FIXME: Not run automatically as it uses a hardcoded port (5555)
+
+msgtest 'Check that everything is installed' 'socat'
+if dpkg-checkbuilddeps -d 'socat' /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip "$(command dpkg -l socat)"
+ exit
+fi
+
+runclient() {
+ # this doesn't need to be an actually reachable webserver for this test
+ # in fact, its better if it isn't.
+ rm -f index.html
+ apthelper download-file "http://${2:-localhost:2903}/" index.html \
+ -o Acquire::http::Proxy="socks5h://${1}localhost:5555" \
+ -o Acquire::http::Timeout=2 -o Debug::Acquire::http=1 > client.output 2>&1 || true
+}
+runserver() {
+ socat -x tcp-listen:5555,reuseaddr \
+ system:"echo -n '$*' | xxd -r -p; echo 'HTTP/1.1 200 OK'; echo 'Content-Length: 5'; echo 'Connection: close'; echo; echo 'HTML'" \
+ > server.output 2>&1 &
+}
+PROXY="socks5h://localhost:5555"
+
+msgmsg 'SOCKS does not run'
+runclient
+testsuccess grep 'Could not connect to localhost:5555' client.output
+
+msgmsg 'SOCKS greets back with wrong version'
+runserver '04 00'
+runclient
+testsuccess grep 'greets back with wrong version: 4' client.output
+
+msgmsg 'SOCKS tries GSSAPI auth we have not advertised'
+runserver '05 01'
+runclient
+testsuccess grep 'greets back having not found a common authorization method: 1' client.output
+
+msgmsg 'SOCKS tries user&pass auth we have not advertised'
+runserver '05 02'
+runclient
+testsuccess grep 'pass auth, but we had not offered it' client.output
+
+msgmsg 'SOCKS user:pass wrong version'
+runserver '05 02' '05 00'
+runclient 'user:pass@'
+testsuccess grep 'auth status response with wrong version: 5' client.output
+
+msgmsg 'SOCKS user:pass wrong auth'
+runserver '05 02' '01 01'
+runclient 'user:pass@'
+testsuccess grep 'reported authorization failure: username or password incorrect? (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted no hostname'
+runserver '05 02' '01 00' '05 01 00 03 00 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (:8080) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted with hostname'
+runserver '05 02' '01 00' '05 01 00 03 09 68 6f 73 74 6c 6f 63 61 6c 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (hostlocal:8080) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'SOCKS user:pass request not granted ipv4'
+runserver '05 02' '01 00' '05 04 00 01 ac 10 fe 01 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (172.16.254.1:8080) due to: Host unreachable (4)' client.output
+
+msgmsg 'SOCKS user:pass request not granted ipv6'
+runserver '05 02' '01 00' '05 12 00 04 20 01 0d b8 ac 10 fe 00 00 00 00 00 00 00 00 00 1f 90'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (\[2001:0DB8:AC10:FE00:0000:0000:0000:0000\]:8080) due to: Unknown error (18)' client.output
+
+msgmsg 'SOCKS user:pass request granted ipv4'
+runserver '05 02' '01 00' '05 00 00 01 ac 10 fe 01 1f 90'
+runclient 'user:pass@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost (172.16.254.1:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS user:pass request granted ipv6'
+runserver '05 02' '01 00' '05 00 00 04 20 01 0d b8 ac 10 fe 00 00 00 00 00 00 00 00 00 1f 90'
+runclient 'user:pass@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost ([2001:0DB8:AC10:FE00:0000:0000:0000:0000]:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS no auth no hostname'
+runserver '05 00 05 00 00 03 00 1f 90'
+runclient
+testequal "http: SOCKS proxy $PROXY connection established to localhost (:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS no auth with hostname'
+runserver '05 00 05 00 00 03 09 68 6f 73 74 6c 6f 63 61 6c 1f 90'
+runclient
+testequal "http: SOCKS proxy $PROXY connection established to localhost (hostlocal:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'SOCKS user-only request granted ipv4'
+runserver '05 02' '01 00' '05 00 00 01 ac 10 fe 01 1f 90'
+runclient 'apt@'
+testequal "http: SOCKS proxy $PROXY connection established to localhost (172.16.254.1:8080)" head -n 1 client.output
+testfileequal index.html 'HTML'
+
+msgmsg 'tor: SOCKS user:pass request not granted'
+runserver '05 02' '01 00' '05 04 00 01 00 00 00 00 00 00'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (0.0.0.0:0) due to: Host unreachable (4)' client.output
+
+msgmsg 'tor: SOCKS user:pass request tll expired'
+runserver '05 02' '01 00' '05 06 00 01 00 00 00 00 00 00'
+runclient 'user:pass@'
+testsuccess grep 'could not connect to localhost (0.0.0.0:0) due to: TTL expired (6)' client.output
+
+msgmsg 'tor: SOCKS user:pass request service unreachable'
+runserver '05 02' '01 00' '05 06 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t.onion (0.0.0.0:0) due to: Host unreachable (6)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted onion'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t.onion (0.0.0.0:0) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted subdomain'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'ftp.vwakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to ftp.vwakviie2ienjx6t.onion (0.0.0.0:0) due to: general SOCKS server failure (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'wakviie2ienjx6t.onion'
+testsuccess grep 'could not connect to wakviie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too long'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'vwakviie2ienjx6t2.onion'
+testsuccess grep 'could not connect to vwakviie2ienjx6t2.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomain'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.akviie2ienjx6t.onion'
+testsuccess grep 'could not connect to a.akviie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomains'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.a.viie2ienjx6t.onion'
+testsuccess grep 'could not connect to a.a.viie2ienjx6t.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'l5satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67oro.onion'
+testsuccess grep 'could not connect to l5satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67oro.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too long'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'l5satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad2.onion'
+testsuccess grep 'could not connect to l5satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad2.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomain'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad.onion'
+testsuccess grep 'could not connect to a.satjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
+
+msgmsg 'tor: SOCKS user:pass request not granted too short subdomains'
+runserver '05 02' '01 00' '05 01 00 01 00 00 00 00 00 00'
+runclient 'user:pass@' 'a.a.tjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad.onion'
+testsuccess grep 'could not connect to a.a.tjgud6gucryazcyvyvhuxhr74u6ygigiuyixe3a6ysis67ororad.onion (0.0.0.0:0) due to: Invalid hostname: onion service name must be either 16 or 56 characters long (1)' client.output
diff --git a/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100644
index 0000000..c2c03c0
--- /dev/null
+++ b/test/integration/status-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,97 @@
+Package: libc-bin
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Filename: pool/main/e/eglibc/libc-bin_2.11.2-2_i386.deb
+Size: 703542
+MD5sum: f554ec34c092bb8e52e3d917bec7b46c
+SHA1: 4d5ba53b50937b1d50e3234e45335de5ea97b84b
+SHA256: 4f1e6430a730321209bb6b9cf89ba8a72c95f5c93f3e263a982251b3cc8beb14
+Description-de: Die »Embedded GNU C Library«: Binärdateien
+Homepage: http://www.eglibc.org
+Tag: devel::lang:c, devel::packaging, implemented-in::c, interface::commandline, role::program, scope::utility, special::auto-inst-parts, suite::gnu, works-with::text, works-with::unicode
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 9340
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: eglibc
+Version: 2.11.2-2
+Provides: glibc-2.11-1
+Depends: libc-bin (= 2.11.2-2), libgcc1
+Recommends: libc6-i686
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Conflicts: tzdata (<< 2007k-1), tzdata-etch
+Breaks: locales (<< 2.11), locales-all (<< 2.11), nscd (<< 2.11)
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_i386.deb
+Size: 3877166
+MD5sum: 3d8fe972a359ad362ac1957c2687e5c2
+SHA1: cd901f3265254e40ad198b935877f546eeaa8403
+SHA256: e1bc3da1e11f9b742d05f927362e2079482db4186ff45af9f937d284e112e7e5
+Description-de: Die »Embedded GNU C Library«: Laufzeitbibliotheken
+Homepage: http://www.eglibc.org
+Tag: devel::lang:c, devel::library, implemented-in::c, protocol::ipv6, role::shared-lib, suite::gnu
+
+Package: mawk
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 228
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Version: 1.3.3-15
+Provides: awk
+Pre-Depends: libc6 (>= 2.1)
+Filename: pool/main/m/mawk/mawk_1.3.3-15_i386.deb
+Size: 81430
+MD5sum: e0f9e9903a862a52b5f107d560c4d8e0
+SHA1: cca3b3ea3a57b9c3c136fb538a4fb06a99d1a33e
+SHA256: 7449b10ffb6a8636a249ad6866188cad0040a6a446fb4a3a71d81fd136297ee6
+Description-de: Eine Muster- und Textverarbeitungssprache
+Tag: devel::interpreter, implemented-in::c, interface::commandline, role::program, scope::utility, use::filtering, use::scanning, works-with::text
+
+Package: gcc-4.5-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.5
+Version: 4.5.0-8
+Filename: pool/main/g/gcc-4.5/gcc-4.5-base_4.5.0-8_i386.deb
+Size: 117894
+MD5sum: f5850c42681fcfee3429a1b43da68433
+SHA1: 0548343feba69c4c01d5dbf147393d8dc27605ac
+SHA256: 04b60f5fe24b7397e3be233051615ff9addb66d4581578f67fde76f5d7f69f7a
+Description: The GNU Compiler Collection (base package)
+Homepage: http://gcc.gnu.org/
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 148
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.5 (4.5.0-8)
+Version: 1:4.5.0-8
+Depends: gcc-4.5-base (= 4.5.0-8), libc6 (>= 2.2.4)
+Filename: pool/main/g/gcc-4.5/libgcc1_4.5.0-8_i386.deb
+Size: 52190
+MD5sum: beda956a1dcdeffed11072c2d0f3eb83
+SHA1: 7117ec43eec7982a030fcc9a12d4772de3fcdba0
+SHA256: 1d10bd532adce8683b475fcc60c22300f717ef19bf84dc5bf43b07e504f85dcb
+Description: GCC support library
+Homepage: http://gcc.gnu.org/
+
diff --git a/test/integration/status-bug-591882-conkeror b/test/integration/status-bug-591882-conkeror
new file mode 100644
index 0000000..f05ac81
--- /dev/null
+++ b/test/integration/status-bug-591882-conkeror
@@ -0,0 +1,1357 @@
+Package: conkeror
+Status: install ok installed
+Priority: extra
+Section: web
+Installed-Size: 1044
+Maintainer: Axel Beckert <abe@deuxchevaux.org>
+Architecture: all
+Version: 0.9~git080629-2
+Provides: www-browser
+Depends: xulrunner (>= 1.9~) | xulrunner-1.9
+Recommends: conkeror-spawn-process-helper
+Suggests: emacs | emacsen
+Description: keyboard focused web browser with Emacs look and feel
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 10032
+Maintainer: Michael Stone <mstone@debian.org>
+Architecture: i386
+Version: 6.10-6
+Replaces: textutils, shellutils, fileutils, stat, debianutils (<= 2.3.1), dpkg (<< 1.13.2)
+Provides: textutils, shellutils, fileutils
+Pre-Depends: libacl1 (>= 2.2.11-1), libc6 (>= 2.6.1-1), libselinux1 (>= 2.0.15)
+Conflicts: stat
+Description: The GNU core utilities
+
+Package: debconf-i18n
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1100
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Source: debconf
+Version: 1.5.24
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Description: full internationalization support for debconf
+
+Package: debconf
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1508
+Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 1.5.24
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libqt-perl, libnet-ldap-perl, perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Description: Debian configuration management system
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 272
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 2.30
+Pre-Depends: libc6 (>= 2.7-1)
+Description: Miscellaneous utilities specific to Debian
+
+Package: defoma
+Status: install ok installed
+Priority: optional
+Section: admin
+Installed-Size: 449
+Maintainer: Angus Lees <gus@debian.org>
+Architecture: all
+Version: 0.11.10-0.2
+Depends: file, perl (>= 5.6.0-16), whiptail | dialog
+Recommends: libft-perl
+Suggests: defoma-doc, dfontmgr, psfontmgr, x-ttcidfont-conf
+Conflicts: defoma-gs, defoma-ps, defoma-x, dfontmgr (<< 0.10.0), psfontmgr (<< 0.5.0), x-ttcidfont-conf (<< 5)
+Description: Debian Font Manager -- automatic font configuration framework
+Enhances: debhelper
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 7276
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.14.29
+Replaces: manpages-de (<= 0.4-3), manpages-pl (<= 20051117-1)
+Pre-Depends: libc6 (>= 2.7-1), coreutils (>= 5.93-1), lzma
+Suggests: apt
+Conflicts: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), dpkg-iasearch (<< 0.11), sysvinit (<< 2.82-1)
+Description: Debian package management system
+Origin: debian
+Bugs: debbugs://bugs.debian.org
+
+Package: file
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 136
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Version: 4.26-1
+Depends: libc6 (>= 2.7-1), libmagic1 (= 4.26-1), zlib1g (>= 1:1.1.4)
+Description: Determines file type using "magic" numbers
+
+Package: fontconfig-config
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 250
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: all
+Source: fontconfig
+Version: 2.6.0-3
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: debconf (>= 0.5) | debconf-2.0, ucf (>= 0.29), ttf-dejavu | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Description: generic font configuration library - configuration
+
+Package: fontconfig
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 384
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Version: 2.6.0-3
+Replaces: fontconfig-config (<< 2.5.93-1)
+Depends: libc6 (>= 2.7-1), libfontconfig1 (>= 2.4.0), fontconfig-config
+Suggests: defoma (>= 0.7.0)
+Description: generic font configuration library - support binaries
+
+Package: gcc-4.3-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 160
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3
+Version: 4.3.2-1.1
+Replaces: cpp-4.3 (<< 4.3.2)
+Description: The GNU Compiler Collection (base package)
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 48
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: acl
+Version: 2.2.47-2
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.7-1)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+
+Package: libatk1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 168
+Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: atk1.0
+Version: 1.22.0-1
+Depends: libc6 (>= 2.7-1), libglib2.0-0 (>= 2.16.0)
+Recommends: libatk1.0-data
+Description: The ATK accessibility toolkit
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 36
+Maintainer: Nathan Scott <nathans@debian.org>
+Architecture: i386
+Source: attr
+Version: 1:2.4.43-2
+Depends: libc6 (>= 2.7-1)
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 92
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: bzip2
+Version: 1.0.5-1
+Depends: libc6 (>= 2.7-1)
+Description: high-quality block-sorting file compressor library - runtime
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10756
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: i386
+Source: glibc
+Version: 2.7-18lenny4
+Provides: glibc-2.7-1
+Depends: libgcc1
+Suggests: locales, glibc-doc, libc6-i686
+Conflicts: libterm-readline-gnu-perl (<< 1.15-2), tzdata (<< 2007k-1), tzdata-etch
+Description: GNU C Library: Shared libraries
+
+Package: libcairo2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 844
+Maintainer: Dave Beckett <dajobe@debian.org>
+Architecture: i386
+Source: cairo
+Version: 1.6.4-7
+Replaces: libcairo0.5.1, libcairo0.6.0, libcairo0.9.0, libcairo1
+Provides: libcairo
+Depends: libc6 (>= 2.7-1), libdirectfb-1.0-0, libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libpixman-1-0 (>= 0.10.0), libpng12-0 (>= 1.2.13-4), libx11-6, libxcb-render-util0 (>= 0.2.1+git1), libxcb-render0, libxcb1, libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: libcairo1
+Description: The Cairo 2D vector graphics library
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 96
+Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+Architecture: i386
+Source: e2fsprogs
+Version: 1.41.3-1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.7-1)
+Description: common error description library
+
+Package: libcups2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 364
+Maintainer: Debian CUPS Maintainers <pkg-cups-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: cups
+Version: 1.3.8-1+lenny8
+Replaces: libcupsys2 (<< 1.3.7-6)
+Provides: libcupsys2
+Depends: libc6 (>= 2.7-1), libcomerr2 (>= 1.01), libgnutls26 (>= 2.4.0-0), libkrb53 (>= 1.6.dfsg.2), zlib1g (>= 1:1.1.4)
+Suggests: cups-common
+Conflicts: libcupsys2 (<< 1.3.7-6)
+Description: Common UNIX Printing System(tm) - libs
+
+Package: libdatrie0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: i386
+Source: libdatrie
+Version: 0.1.3-2
+Depends: libc6 (>= 2.7-1)
+Description: Double-array trie library
+
+Package: libdb4.6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1248
+Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: db4.6
+Version: 4.6.21-11
+Depends: libc6 (>= 2.7-1)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Description: Berkeley v4.6 Database Libraries [runtime]
+
+Package: libdirectfb-1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 2140
+Maintainer: Debian DirectFB Team <pkg-directfb-devel@lists.alioth.debian.org>
+Architecture: i386
+Source: directfb
+Version: 1.0.1-11
+Depends: libc6 (>= 2.7-1), libsysfs2, libts-0.0-0 (>= 1.0)
+Description: direct frame buffer graphics - shared libraries
+
+Package: libexpat1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 364
+Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+Architecture: i386
+Source: expat
+Version: 2.0.1-4+lenny3
+Depends: libc6 (>= 2.7-1)
+Conflicts: wink (<= 1.5.1060-4)
+Description: XML parsing C library - runtime library
+
+Package: libfontconfig1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Keith Packard <keithp@debian.org>
+Architecture: i386
+Source: fontconfig
+Version: 2.6.0-3
+Depends: libc6 (>= 2.7-1), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.3.5), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.6.0-3)
+Description: generic font configuration library - runtime
+
+Package: libfreetype6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 672
+Maintainer: Steve Langasek <vorlon@debian.org>
+Architecture: i386
+Source: freetype
+Version: 2.3.7-2+lenny1
+Replaces: freetype0, freetype1
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Suggests: libfreetype6-dev
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Description: FreeType 2 font engine, shared library files
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 88
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3 (4.3.2-1.1)
+Version: 1:4.3.2-1.1
+Depends: gcc-4.3-base (= 4.3.2-1.1), libc6 (>= 2.7-1)
+Description: GCC support library
+
+Package: libgcrypt11
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 508
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4.1-1
+Depends: libc6 (>= 2.7-1), libgpg-error0 (>= 1.4)
+Suggests: rng-tools
+Description: LGPL Crypto library - runtime library
+
+Package: libgdbm3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 80
+Maintainer: James Troup <james@nocrew.org>
+Architecture: i386
+Source: gdbm
+Version: 1.8.3-3
+Depends: libc6 (>= 2.3.6-6)
+Description: GNU dbm database routines (runtime version)
+
+Package: libglib2.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1732
+Maintainer: Loic Minier <lool@dooz.org>
+Architecture: i386
+Source: glib2.0
+Version: 2.16.6-3
+Depends: libc6 (>= 2.7-1), libpcre3 (>= 7.4), libselinux1 (>= 2.0.59)
+Recommends: libglib2.0-data
+Conflicts: libpango1.0-0 (<< 1.11)
+Description: The GLib library of C routines
+
+Package: libgnutls26
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1100
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: gnutls26
+Version: 2.4.2-6+lenny2
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.7-1), libgcrypt11 (>= 1.4.0), libgpg-error0 (>= 1.4), libtasn1-3 (>= 0.3.4), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Description: the GNU TLS library - runtime library
+
+Package: libgpg-error0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 196
+Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+Architecture: i386
+Source: libgpg-error
+Version: 1.4-2
+Depends: libc6 (>= 2.3.6-6)
+Description: library for common error values and messages in GnuPG components
+
+Package: libgtk2.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 5084
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: gtk+2.0
+Version: 2.12.12-1~lenny2
+Replaces: libgtk2.0-0png3
+Provides: gtk2.0-binver-2.10.0
+Depends: libgtk2.0-common, libatk1.0-0 (>= 1.20.0), libc6 (>= 2.7-1), libcairo2 (>= 1.6.4-6.1), libcomerr2 (>= 1.01), libcups2 (>= 1.3.8), libfontconfig1 (>= 2.4.0), libglib2.0-0 (>= 2.16.0), libgnutls26 (>= 2.4.0-0), libjpeg62, libkrb53 (>= 1.6.dfsg.2), libpango1.0-0 (>= 1.20.3), libpng12-0 (>= 1.2.13-4), libtiff4, libx11-6, libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3 (>= 1:4.0.1), libxi6, libxinerama1, libxrandr2, libxrender1, zlib1g (>= 1:1.1.4)
+Recommends: hicolor-icon-theme, libgtk2.0-bin
+Suggests: librsvg2-common
+Conflicts: celestia (<< 1.2.4-4), eog2 (<< 1.0.1-4), gcin (<< 1.3.4-2), gimp1.3 (<< 1.3.7-1.1), glabels (<< 2.1.3-3), gnome-panel2 (<< 2.0.4-1), gnome-themes (<< 2.6), gtk-im-libthai (<< 0.1.4-3), gtk-qt-engine (<< 1:0.8~svn-rev36-1), gtk2-engines (<< 1:2.8.2-2), gtk2-engines-cleanice (<< 2.4.0-1.1), gtk2-engines-crux (<< 2.6), gtk2-engines-gtk-qt (<< 1:0.7-2), gtk2-engines-highcontrast (<< 2.6), gtk2-engines-industrial (<< 0.2.32-5), gtk2-engines-lighthouseblue (<< 2.6), gtk2-engines-magicchicken (<< 1.1.1-7.1), gtk2-engines-metal (<< 2.2.0-2.1), gtk2-engines-mist (<< 2.6), gtk2-engines-pixbuf (<= 2.10), gtk2-engines-qtpixmap (<< 0.28-1.2), gtk2-engines-redmond95 (<< 2.2.0-2.1), gtk2-engines-smooth (<< 0.5.6-3), gtk2-engines-thinice (<< 2.6), gtk2-engines-ubuntulooks (<= 0.9.11-1), gtk2-engines-wonderland (<< 1.0-4), gtk2-engines-xfce (<< 2.4.0-1), gtk2.0-examples (<< 2.2.0), iiimf-client-gtk (<< 12.3.91-4), iiimgcf (<= 11.4.1870-7.3), imhangul (<< 0.9.13-5), libeel2-2.18, libgdkxft0, libginspx0 (<< 20050529-1.1), libgnomeui-0 (<= 2.14.1-3), libgtk2.0-0png3, librsvg2-common (<= 2.14.4-2), libwmf-dev (<< 0.2.8.4-5), libwmf0.2-7 (<< 0.2.8.4-5), libwxgtk2.6-0 (<< 2.6.3.2.2-1), metacity (<< 1:2.20.0-1), metatheme (<< 0.9.7-3), openoffice.org-core (<< 2.2.1-8), scim-bridge (<= 0.2.4-1), scim-bridge-client-gtk (<< 0.4.10-1.1), scim-gtk2-immodule (<< 1.4.4-8), swf-player (<< 0.3.6-2.3), tamil-gtk2im (<< 2.2-4.4), uim-gtk2.0 (<< 1:1.4.1-3), xfwm4 (<< 4.4.1-3)
+Description: The GTK+ graphical user interface library
+
+Package: libgtk2.0-common
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 15934
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: gtk+2.0
+Version: 2.12.12-1~lenny2
+Replaces: libgtk1.3-common, libgtk2.0-data
+Recommends: libgtk2.0-0
+Conflicts: libgtk1.3-common, libgtk2.0-data
+Description: Common files for the GTK+ graphical user interface library
+
+Package: libhunspell-1.2-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: hunspell
+Version: 1.2.6-1
+Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Recommends: myspell-en-us | myspell-dictionary | hunspell-dictionary
+Conflicts: openoffice.org-core (= 2.2.0~rc2-1)
+Description: spell checker and morphological analyzer (shared library)
+
+Package: libice6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 140
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libice
+Version: 2:1.0.4-1
+Depends: libc6 (>= 2.6-1), x11-common
+Description: X11 Inter-Client Exchange library
+
+Package: libjpeg62
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: Bill Allombert <ballombe@debian.org>
+Architecture: i386
+Source: libjpeg6b
+Version: 6b-14
+Depends: libc6 (>= 2.6.1-1)
+Description: The Independent JPEG Group's JPEG runtime library
+
+Package: libkeyutils1
+Status: install ok installed
+Priority: standard
+Section: misc
+Installed-Size: 56
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: keyutils
+Version: 1.2-9
+Depends: libc6 (>= 2.7-1)
+Description: Linux Key Management Utilities (library)
+
+Package: libkrb53
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1188
+Maintainer: Sam Hartman <hartmans@debian.org>
+Architecture: i386
+Source: krb5
+Version: 1.6.dfsg.4~beta1-5lenny4
+Depends: libc6 (>= 2.7-1), libcomerr2 (>= 1.34), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Description: MIT Kerberos runtime libraries
+
+Package: liblcms1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 260
+Maintainer: Oleksandr Moskalenko <malex@debian.org>
+Architecture: i386
+Source: lcms
+Version: 1.17.dfsg-1+lenny2
+Replaces: liblcms
+Provides: liblcms
+Depends: libc6 (>= 2.7-1)
+Suggests: liblcms-utils
+Conflicts: liblcms
+Description: Color management library
+
+Package: liblocale-gettext-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 104
+Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.05-4
+Depends: libc6 (>= 2.7-1)
+Pre-Depends: perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: Using libc functions for internationalization in Perl
+
+Package: libmagic1
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 2412
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: file
+Version: 4.26-1
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Suggests: file
+Description: File type determination library using "magic" numbers
+
+Package: libmozjs1d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 736
+Maintainer: Mike Hommey <glandium@debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.0.19-1
+Depends: libc6 (>= 2.7-1), libnspr4-0d (>= 1.8.0.10)
+Description: The Mozilla SpiderMonkey JavaScript library
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 584
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20081213-1
+Depends: libc6 (>= 2.7-1)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+
+Package: libnewt0.52
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 820
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.2-11.3+lenny1
+Replaces: libnewt-utf8, libnewt0, libnewt0.51
+Depends: libc6 (>= 2.7-1), libslang2 (>= 2.0.7-1)
+Recommends: libfribidi0
+Conflicts: libnewt0.51
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+
+Package: libnspr4-0d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 328
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nspr
+Version: 4.7.1-5
+Depends: libc6 (>= 2.7-1)
+Conflicts: libnspr4, libnspr4-dev (<= 4.7.1-1)
+Description: NetScape Portable Runtime Library
+
+Package: libnss3-1d
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 2292
+Maintainer: Maintainers of Mozilla-related packages <pkg-mozilla-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: nss
+Version: 3.12.3.1-0lenny1
+Depends: libc6 (>= 2.7-1), libnspr4-0d (>= 1.8.0.10), libsqlite3-0 (>= 3.5.9), dpkg (<< 1.14.8) | dpkg (>= 1.14.18)
+Conflicts: libnss3, libnss3-0d (>= 3.11.5), libnss3-dev (<= 3.12.0~rc3-1)
+Description: Network Security Service libraries
+
+Package: libpango1.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 780
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: i386
+Source: pango1.0
+Version: 1.20.5-5+lenny1
+Provides: pango1.0-modver-1.6.0
+Depends: libpango1.0-common (>= 1.20.5-5+lenny1), libc6 (>= 2.7-1), libcairo2 (>= 1.6.4-6.1), libdatrie0 (>= 0.1.2), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libglib2.0-0 (>= 2.16.0), libthai0 (>= 0.1.9), libx11-6, libxft2 (>> 2.1.1), libxrender1, zlib1g (>= 1:1.1.4)
+Conflicts: pango-libthai
+Description: Layout and rendering of internationalized text
+
+Package: libpango1.0-common
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 204
+Maintainer: Sebastien Bacher <seb128@debian.org>
+Architecture: all
+Source: pango1.0
+Version: 1.20.5-5+lenny1
+Replaces: libpango-common (<< 1.0.0), libpango0
+Depends: debconf | debconf-2.0, defoma (>= 0.11.1), fontconfig (>= 2.1.91)
+Recommends: x-ttcidfont-conf, libpango1.0-0
+Suggests: ttf-kochi-gothic, ttf-kochi-mincho, ttf-thryomanes, ttf-baekmuk, ttf-arphic-gbsn00lp, ttf-arphic-bsmi00lp, ttf-arphic-gkai00mp, ttf-arphic-bkai00mp
+Conflicts: pango-libthai (<< 0.1.6-2)
+Description: Modules and configuration files for the Pango
+
+Package: libpcre3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 356
+Maintainer: Mark Baker <mark@mnb.org.uk>
+Architecture: i386
+Source: pcre3
+Version: 7.6-2.1
+Depends: libc6 (>= 2.7-1)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+
+Package: libpixman-1-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 220
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: pixman
+Version: 0.10.0-2
+Depends: libc6 (>= 2.7-1)
+Description: pixel-manipulation library for X and cairo
+
+Package: libpng12-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 316
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libpng
+Version: 1.2.27-2+lenny3
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.7-1), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+
+Package: libpopt0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 192
+Maintainer: Paul Martin <pm@debian.org>
+Architecture: i386
+Source: popt
+Version: 1.14-4
+Replaces: popt
+Depends: libc6 (>= 2.7-1)
+Conflicts: libpopt-dev (<= 1.4-1), popt, rpm (<= 4.0.2-3)
+Description: lib for parsing cmdline parameters
+
+Package: libreadline5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 320
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: i386
+Source: readline5
+Version: 5.2-3.1
+Depends: readline-common, libc6 (>= 2.7-1), libncurses5 (>= 5.6+20071006-3)
+Description: GNU readline and history libraries, run-time libraries
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 148
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: i386
+Source: libselinux
+Version: 2.0.65-5
+Depends: libc6 (>= 2.7-1)
+Description: SELinux shared libraries
+
+Package: libslang2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1104
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: slang2
+Version: 2.1.3-3
+Depends: libc6 (>= 2.7-1)
+Recommends: libpng12-0
+Description: The S-Lang programming library - runtime version
+
+Package: libsm6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libsm
+Version: 2:1.0.3-2
+Depends: libc6 (>= 2.7-1), libice6 (>= 1:1.0.0), x11-common
+Description: X11 Session Management library
+
+Package: libsqlite3-0
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 468
+Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.hu>
+Architecture: i386
+Source: sqlite3
+Version: 3.5.9-6
+Depends: libc6 (>= 2.7-1)
+Description: SQLite 3 shared library
+
+Package: libstartup-notification0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ondřej Surý <ondrej@debian.org>
+Architecture: i386
+Source: startup-notification
+Version: 0.9-1
+Depends: libc6 (>= 2.3.6-6), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Description: library for program launch feedback (shared library)
+
+Package: libstdc++6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1168
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: i386
+Source: gcc-4.3
+Version: 4.3.2-1.1
+Depends: gcc-4.3-base (= 4.3.2-1.1), libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1)
+Conflicts: scim (<< 1.4.2-1)
+Description: The GNU Standard C++ Library v3
+
+Package: libsysfs2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 112
+Maintainer: Martin Pitt <mpitt@debian.org>
+Architecture: i386
+Source: sysfsutils
+Version: 2.1.0-5
+Depends: libc6 (>= 2.7-1)
+Description: interface library to sysfs
+
+Package: libtasn1-3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 164
+Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Architecture: i386
+Version: 1.4-1
+Depends: libc6 (>= 2.7-1)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Description: Manage ASN.1 structures (runtime)
+
+Package: libtext-charwidth-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 36
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libtext-charwidth-perl (0.04-5)
+Version: 0.04-5+b1
+Depends: libc6 (>= 2.7-1), perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: get display widths of characters on the terminal
+
+Package: libtext-iconv-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 44
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: i386
+Source: libtext-iconv-perl (1.7-1)
+Version: 1.7-1+b1
+Depends: libc6 (>= 2.7-1), perl-base (>= 5.10.0-9), perlapi-5.10.0
+Description: converts between character sets in Perl
+
+Package: libtext-wrapi18n-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 28
+Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Architecture: all
+Version: 0.06-6
+Depends: libtext-charwidth-perl
+Description: internationalized substitute of Text::Wrap
+
+Package: libthai-data
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 340
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: all
+Source: libthai
+Version: 0.1.9-4+lenny1
+Description: Data files for Thai language support library
+
+Package: libthai0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Architecture: i386
+Source: libthai
+Version: 0.1.9-4+lenny1
+Depends: libc6 (>= 2.7-1), libdatrie0 (>= 0.1.2), libthai-data
+Description: Thai language support library
+
+Package: libtiff4
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 456
+Maintainer: Jay Berkenbilt <qjb@debian.org>
+Architecture: i386
+Source: tiff
+Version: 3.8.2-11.2
+Depends: libc6 (>= 2.7-1), libjpeg62, zlib1g (>= 1:1.1.4)
+Description: Tag Image File Format (TIFF) library
+
+Package: libts-0.0-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 108
+Maintainer: Neil Williams <codehelp@debian.org>
+Architecture: i386
+Source: tslib
+Version: 1.0-4
+Replaces: libts0, tslib
+Provides: libts0, tslib
+Depends: libc6 (>= 2.7-1)
+Conflicts: libts0, tslib
+Description: touch screen library
+
+Package: libx11-6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1240
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libx11
+Version: 2:1.1.5-2
+Depends: libc6 (>= 2.7-1), libxcb-xlib0, libxcb1, libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Description: X11 client-side library
+
+Package: libx11-data
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 3108
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: libx11
+Version: 2:1.1.5-2
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Description: X11 client-side library
+
+Package: libxau6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxau
+Version: 1:1.0.3-3
+Depends: libc6 (>= 2.7-1)
+Description: X11 authorisation library
+
+Package: libxcb-render-util0
+Status: install ok installed
+Priority: extra
+Section: libs
+Installed-Size: 40
+Maintainer: Julien Danjou <acid@debian.org>
+Architecture: i386
+Source: xcb-util
+Version: 0.2.1+git1-1
+Depends: libc6 (>= 2.7-1), libxcb-render0, libxcb1
+Description: utility libraries for X C Binding -- render-util
+
+Package: libxcb-render0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxcb1
+Description: X C Binding, render extension
+
+Package: libxcb-xlib0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxcb1
+Description: X C Binding, Xlib/XCB interface library
+
+Package: libxcb1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 160
+Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Architecture: i386
+Source: libxcb
+Version: 1.1-1.2
+Depends: libc6 (>= 2.7-1), libxau6, libxdmcp6
+Description: X C Binding
+
+Package: libxcomposite1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcomposite
+Version: 1:0.4.0-3
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, libxfixes3 (>= 1:4.0.1)
+Description: X11 Composite extension library
+
+Package: libxcursor1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxcursor
+Version: 1:1.1.9-1
+Depends: libc6 (>= 2.6-1), libx11-6, libxfixes3 (>= 1:4.0.1), libxrender1
+Description: X cursor management library
+
+Package: libxdamage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdamage
+Version: 1:1.1.1-4
+Depends: libc6 (>= 2.7-1), libx11-6, libxfixes3 (>= 1:4.0.1)
+Description: X11 damaged region extension library
+
+Package: libxdmcp6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxdmcp
+Version: 1:1.0.2-3
+Depends: libc6 (>= 2.7-1)
+Description: X11 Display Manager Control Protocol library
+
+Package: libxext6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 184
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxext
+Version: 2:1.0.4-2
+Depends: libc6 (>= 2.7-1), libx11-6, libxau6, x11-common
+Description: X11 miscellaneous extension library
+
+Package: libxfixes3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxfixes
+Version: 1:4.0.3-2
+Depends: libc6 (>= 2.3.6-6), libx11-6
+Pre-Depends: x11-common (>= 1:7.0.0)
+Description: X11 miscellaneous 'fixes' extension library
+
+Package: libxft2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 132
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xft
+Version: 2.1.12-3
+Depends: libc6 (>= 2.7-1), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libx11-6, libxrender1, zlib1g (>= 1:1.1.4)
+Description: FreeType-based font drawing library for X
+
+Package: libxi6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxi
+Version: 2:1.1.4-1
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, x11-common
+Description: X11 Input extension library
+
+Package: libxinerama1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 60
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxinerama
+Version: 2:1.0.3-2
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6
+Description: X11 Xinerama extension library
+
+Package: libxrandr2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrandr
+Version: 2:1.2.3-1
+Depends: libc6 (>= 2.7-1), libx11-6, libxext6, libxrender1
+Description: X11 RandR extension library
+
+Package: libxrender1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxrender
+Version: 1:0.9.4-2
+Depends: libc6 (>= 2.7-1), libx11-6
+Description: X Rendering Extension client library
+
+Package: libxt6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 380
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: libxt
+Version: 1:1.0.5-3
+Depends: libc6 (>= 2.5-5), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Pre-Depends: x11-common (>= 1:7.0.0)
+Description: X11 toolkit intrinsics library
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 72
+Maintainer: Chris Lawrence <lawrencc@debian.org>
+Architecture: all
+Source: lsb
+Version: 3.2-20
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Description: Linux Standard Base 3.2 init script functionality
+
+Package: lzma
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 124
+Maintainer: Mohammed Adnène Trojette <adn+deb@diwi.org>
+Architecture: i386
+Version: 4.43-14
+Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.2.1)
+Description: Compression method of 7z format in 7-Zip program
+
+Package: ncurses-bin
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 480
+Maintainer: Daniel Baumann <daniel@debian.org>
+Architecture: i386
+Source: ncurses
+Version: 5.7+20081213-1
+Provides: tput
+Pre-Depends: libc6 (>= 2.7-1), libncurses5 (>= 5.6+20071006-3)
+Conflicts: ncurses, tput
+Description: terminal-related programs and man pages
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4316
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: i386
+Source: perl
+Version: 5.10.0-19lenny2
+Replaces: libclass-multimethods-perl (<< 1.70-4), libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<= 5.10.0-9), perl-modules (<< 5.10.0-12)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0
+Pre-Depends: libc6 (>= 2.7-1), dpkg (>= 1.14.20)
+Suggests: perl
+Conflicts: autoconf2.13 (<< 2.13-45), findimagedupes (<< 2.11-2), icheck (<< 0.9.7-6.1), libcflow-perl (<< 1:0.68-11.1), libclass-methodmaker-perl (<< 2.10-1), libclearsilver-perl (<< 0.10.4-1.1), libcrypt-openssl-bignum-perl (<< 0.04-1), libcrypt-openssl-dsa-perl (<< 0.13-3), libcrypt-openssl-random-perl (<< 0.04-1), libcrypt-openssl-rsa-perl (<< 0.25-1), libhamlib2-perl (<< 1.2.6.2-6), libqt-perl (<< 3.008-3), libscalar-list-utils-perl (<< 1:1.18-1), libsufary-perl (<< 2.1.1-8), libsys-cpu-perl (<< 0.40-2.1), libterm-size-perl (<< 0.2-4), libvideo-ivtv-perl (<< 0.13-6), libxsloader-perl (<< 0.08-1), megahal (<< 9.1.1a-5), razor (<< 1:2.84-6)
+Description: minimal Perl system
+
+Package: perl-modules
+Status: install ok installed
+Priority: standard
+Section: perl
+Installed-Size: 14520
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: all
+Source: perl
+Version: 5.10.0-19lenny2
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.0-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<= 1.38-2), libattribute-handlers-perl (<< 0.78.02-1), libcgi-pm-perl (<< 3.15-1), libcpanplus-perl (<< 0.83.09-1), libextutils-cbuilder-perl (<< 0.21-1), libextutils-parsexs-perl (<= 2.18), libfile-temp-perl (<< 0.18), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.07-1), liblocale-codes-perl (<< 2.06.1-1), liblocale-maketext-perl (<< 1.08-1), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.77-1), libmodule-build-perl (<< 0.2808.1-1), libmodule-corelist-perl (<< 2.13-1), libmodule-load-conditional-perl (<< 0.22-1), libmodule-load-perl (<< 0.12-1), libmodule-pluggable-perl (<< 3.6-1), libnet-perl (<= 1:1.19-3), libnet-ping-perl (<< 2.31-1), libparams-check-perl (<< 0.26-1), libpod-parser-perl (<< 1.32-1), libpod-simple-perl (<< 3.05-2), libtest-harness-perl (<< 2.56-1), libtest-simple-perl (<< 0.62-1), libversion-perl (<< 1:0.7400-2), podlators-perl (<< 2.2.0)
+Description: Core Perl modules
+Build-Essential: yes
+
+Package: perl
+Status: install ok installed
+Priority: standard
+Section: perl
+Installed-Size: 13524
+Maintainer: Brendan O'Dea <bod@debian.org>
+Architecture: i386
+Version: 5.10.0-19lenny2
+Replaces: libarchive-tar-perl (<= 1.38-2), libdigest-md5-perl, libdigest-sha-perl, libmime-base64-perl, libmodule-corelist-perl (<< 2.14-2), libstorable-perl, libtime-hires-perl, libtime-piece-perl, perl-base (<< 5.8.8-1), perl-doc (<< 5.8.0-1), perl-modules (<< 5.8.1-1)
+Provides: data-dumper, libdigest-md5-perl, libdigest-sha-perl, libmime-base64-perl, libstorable-perl, libtime-hires-perl, libtime-piece-perl, perl5
+Depends: perl-base (= 5.10.0-19lenny2), perl-modules (>= 5.10.0-19lenny2), libc6 (>= 2.7-1), libdb4.6, libgdbm3
+Recommends: netbase
+Suggests: perl-doc, libterm-readline-gnu-perl | libterm-readline-perl-perl
+Conflicts: libdigest-md5-perl (<< 3.07-1), libdigest-sha-perl (<< 5.45-1), libmime-base64-perl (<< 3.07-1), libstorable-perl (<< 2.15-1), libtime-hires-perl (<< 1.86-1), libtime-piece-perl (<< 1.12-1), perl-doc (<< 5.10.0-1)
+Description: Larry Wall's Practical Extraction and Report Language
+Build-Essential: yes
+
+Package: readline-common
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 136
+Maintainer: Matthias Klose <doko@debian.org>
+Architecture: all
+Source: readline5
+Version: 5.2-3.1
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Description: GNU readline and history libraries, common files
+
+Package: sed
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 628
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: i386
+Version: 4.1.5-6
+Replaces: ssed (<< 3.59)
+Pre-Depends: libc6 (>= 2.7-1)
+Description: The GNU sed stream editor
+
+Package: ttf-dejavu-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2488
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.25-3
+Replaces: ttf-dejavu (<< 2.20-1)
+Depends: defoma
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+
+Package: ttf-dejavu-extra
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 5504
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.25-3
+Replaces: ttf-dejavu (<< 2.20-1)
+Depends: defoma, ttf-dejavu-core
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+
+Package: ttf-dejavu
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 68
+Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Architecture: all
+Version: 2.25-3
+Depends: ttf-dejavu-core, ttf-dejavu-extra
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Metapackage to pull in ttf-dejavu-core and ttf-dejavu-extra
+Task: bulgarian-desktop, hungarian-desktop, kurdish-desktop, macedonian-desktop, romanian-desktop, ukrainian-desktop
+
+Package: ucf
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 256
+Maintainer: Manoj Srivastava <srivasta@debian.org>
+Architecture: all
+Version: 3.0016
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Description: Update Configuration File: preserve user changes to config files.
+
+Package: whiptail
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 96
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: i386
+Source: newt
+Version: 0.52.2-11.3+lenny1
+Replaces: newt0.10, newt0.21 (<< 0.21-4), whiptail-utf8
+Provides: whiptail-provider, whiptail-utf8
+Depends: libc6 (>= 2.7-1), libnewt0.52 (>= 0.52.2), libpopt0 (>= 1.14), libslang2 (>= 2.0.7-1)
+Conflicts: whiptail-provider
+Description: Displays user-friendly dialog boxes from shell scripts
+
+Package: x11-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 696
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: all
+Source: xorg
+Version: 1:7.3+20
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.3+11), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Description: X Window System (X.Org) infrastructure
+
+Package: xulrunner-1.9
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 17800
+Maintainer: Mike Hommey <glandium@debian.org>
+Architecture: i386
+Source: xulrunner
+Version: 1.9.0.19-1
+Replaces: xulrunner-1.9-common
+Depends: libatk1.0-0 (>= 1.20.0), libbz2-1.0, libc6 (>= 2.7-1), libcairo2 (>= 1.6.0), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libhunspell-1.2-0 (>= 1.2.4), libjpeg62, liblcms1 (>= 1.15-1), libmozjs1d (>= 1.9.0.15), libnspr4-0d (>> 4.7.1-1), libnss3-1d (>= 3.12.3), libpango1.0-0 (>= 1.20.3), libpng12-0 (>= 1.2.13-4), libreadline5 (>= 5.2), libsqlite3-0 (>= 3.5.9), libstartup-notification0 (>= 0.8-1), libstdc++6 (>= 4.1.1), libx11-6, libxrender1, libxt6, zlib1g (>= 1:1.1.4)
+Suggests: xulrunner-1.9-gnome-support
+Conflicts: j2re1.4, pango-graphite
+Description: XUL + XPCOM application runner
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 128
+Maintainer: Mark Brown <broonie@debian.org>
+Architecture: i386
+Source: zlib
+Version: 1:1.2.3.3.dfsg-12
+Provides: libz1
+Depends: libc6 (>= 2.7-1)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+
diff --git a/test/integration/status-bug-598669-install-postfix-gets-exim-heavy b/test/integration/status-bug-598669-install-postfix-gets-exim-heavy
new file mode 100644
index 0000000..fcf21dc
--- /dev/null
+++ b/test/integration/status-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,30 @@
+Package: exim4-daemon-light
+Status: install ok installed
+Priority: standard
+Section: mail
+Installed-Size: 952
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: i386
+Source: exim4
+Version: 4.72-1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/e/exim4/exim4-daemon-light_4.72-1_i386.deb
+Size: 459500
+MD5sum: f32ccafef44bed2efcd526cd6501307d
+Description: lightweight Exim MTA (v4) daemon
+
+Package: exim4
+Status: install ok installed
+Priority: standard
+Section: mail
+Installed-Size: 60
+Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: all
+Version: 4.72-1
+Depends: exim4-daemon-light | exim4-daemon-heavy
+Filename: pool/main/e/exim4/exim4_4.72-1_all.deb
+Size: 7738
+MD5sum: 2f473b82bbabac9718ff3e755eaf85c1
+Description: metapackage to ease Exim MTA (v4) installation
diff --git a/test/integration/status-bug-601961-install-info b/test/integration/status-bug-601961-install-info
new file mode 100644
index 0000000..c43cffa
--- /dev/null
+++ b/test/integration/status-bug-601961-install-info
@@ -0,0 +1,42 @@
+Package: dpkg
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 6432
+Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+Architecture: i386
+Version: 1.15.8.5
+Description: Debian package management system
+
+Package: findutils
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: utils
+Installed-Size: 1704
+Maintainer: Andreas Metzler <ametzler@debian.org>
+Architecture: i386
+Version: 4.4.2-1+b1
+Depends: dpkg (>= 1.15.4) | install-info, essentialpkg
+Description: utilities for finding files--find, xargs
+
+Package: install-info
+Status: install ok installed
+Priority: important
+Section: doc
+Installed-Size: 256
+Maintainer: Debian TeX maintainers <debian-tex-maint@lists.debian.org>
+Architecture: i386
+Version: 4.13a.dfsg.1-6
+Description: Manage installed documentation in info format
+
+Package: essentialpkg
+Status: install ok installed
+Priority: important
+Section: other
+Installed-Size: 256
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: i386
+Version: 4.13a.dfsg.1-6
+Description: ultra hypercool important package
diff --git a/test/integration/status-bug-605394-versioned-or-groups b/test/integration/status-bug-605394-versioned-or-groups
new file mode 100644
index 0000000..3ac9c30
--- /dev/null
+++ b/test/integration/status-bug-605394-versioned-or-groups
@@ -0,0 +1,34 @@
+Package: apache2-mpm-worker
+Status: install ok installed
+Priority: optional
+Section: httpd
+Installed-Size: 68
+Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
+Architecture: i386
+Source: apache2
+Version: 2.2.16-4
+Provides: apache2-mpm
+Conflicts: apache2-mpm
+Description: Apache HTTP Server - high speed threaded model
+
+Package: php5-cgi
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 14672
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: i386
+Source: php5
+Version: 5.3.3-3
+Description: server-side, HTML-embedded scripting language (CGI binary)
+
+Package: php5
+Status: install ok installed
+Priority: optional
+Section: php
+Installed-Size: 20
+Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
+Architecture: all
+Version: 5.3.3-3
+Depends: libapache2-mod-php5 (>= 5.3.3-3) | libapache2-mod-php5filter (>= 5.3.3-3) | php5-cgi (>= 5.3.3-3)
+Description: server-side, HTML-embedded scripting language (metapackage)
diff --git a/test/integration/status-bug-612557-garbage-upgrade b/test/integration/status-bug-612557-garbage-upgrade
new file mode 100644
index 0000000..7403d8c
--- /dev/null
+++ b/test/integration/status-bug-612557-garbage-upgrade
@@ -0,0 +1,34 @@
+Package: python-uno
+Status: install ok installed
+Priority: optional
+Section: python
+Installed-Size: 2032
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: Python-UNO bridge
+
+Package: openoffice.org-common
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 48356
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: all
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: office productivity suite -- arch-independent files
+
+Package: openoffice.org-emailmerge
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 1652
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: all
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Replaces: python-uno (<< 1:2.4.1-5)
+Pre-Depends: python-uno, openoffice.org-common
+Description: office productivity suite -- email mail merge
diff --git a/test/integration/status-bug-613420-new-garbage-dependency b/test/integration/status-bug-613420-new-garbage-dependency
new file mode 100644
index 0000000..166a393
--- /dev/null
+++ b/test/integration/status-bug-613420-new-garbage-dependency
@@ -0,0 +1,22 @@
+Package: openoffice.org-officebean
+Status: install ok installed
+Priority: optional
+Section: java
+Installed-Size: 1656
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Depends: openoffice.org-core (= 1:3.2.1-11+squeeze2)
+Description: office productivity suite -- Java bean
+
+Package: openoffice.org-core
+Status: install ok installed
+Priority: optional
+Section: editors
+Installed-Size: 121724
+Maintainer: Debian OpenOffice Team <debian-openoffice@lists.debian.org>
+Architecture: i386
+Source: openoffice.org
+Version: 1:3.2.1-11+squeeze2
+Description: office productivity suite -- arch-dependent files
diff --git a/test/integration/status-bug-723705-tagfile-truncates-fields b/test/integration/status-bug-723705-tagfile-truncates-fields
new file mode 100644
index 0000000..fe18506
--- /dev/null
+++ b/test/integration/status-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,62 @@
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10164
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: eglibc (2.17-92)
+Version: 2.17-92+b1
+Replaces: libc6-amd64
+Provides: glibc-2.17-1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Breaks: locales (<< 2.17), locales-all (<< 2.17), lsb-core (<= 3.2-27), nscd (<< 2.17)
+Conflicts: prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/x86_64-linux-gnu.conf 593ad12389ab2b6f952e7ede67b8fbbf
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+
+Package: libnewt0.52
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 820
+Maintainer: Alastair McKinstry <mckinstry@debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: newt
+Version: 0.52.15-3
+Recommends: libfribidi0
+Conffiles:
+ /etc/newt/palette.original d41d8cd98f00b204e9800998ecf8427e
+Description: Not Erik's Windowing Toolkit - text mode windowing with slang
+ Newt is a windowing toolkit for text mode built from the slang library.
+ It allows color text mode applications to easily use stackable windows,
+ push buttons, check boxes, radio buttons, lists, entry fields, labels,
+ and displayable text. Scrollbars are supported, and forms may be nested
+ to provide extra functionality. This package contains the shared library
+ for programs that have been built with newt.
+Homepage: https://fedorahosted.org/newt/
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 128
+Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+Architecture: amd64
+Multi-Arch: same
+Source: gcc-4.8 (4.8.1-10)
+Version: 1:4.8.1-10
+Breaks: gcc-4.1, gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+
diff --git a/test/integration/status-bug-lp1347721-dpkg-ordering b/test/integration/status-bug-lp1347721-dpkg-ordering
new file mode 100644
index 0000000..eaea10b
--- /dev/null
+++ b/test/integration/status-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,1942 @@
+Package: libustr-1.0-1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 261
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ustr
+Version: 1.0.4-3ubuntu2
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: Micro string library: shared library
+ ustr (Micro string library) is a string API for C. It has tiny overhead over
+ just plain strdup(), is much safer, is easier to use, is faster for many
+ operations, can be used with read-only or automatically allocated data. You
+ don't even need to link to the library to use it (so there are no
+ dependencies).
+ .
+ This package contains the shared library for ustr.
+Homepage: http://www.and.org/ustr/
+Original-Maintainer: Vaclav Ovsik <vaclav.ovsik@i.cz>
+
+Package: debconf
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 609
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 1.5.53ubuntu1
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1), debconf-i18n
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgtk2-perl (>= 1:1.130), libnet-ldap-perl, perl, libqtgui4-perl, libqtcore4-perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Conffiles:
+ /etc/debconf.conf 8c0619be413824f1fc7698cee0f23811
+ /etc/apt/apt.conf.d/70debconf 7e9d09d5801a42b4926b736b8eeabb73
+ /etc/bash_completion.d/debconf 8fa1862734fbe54d7178aaaa419f5a11
+Description: Debian configuration management system
+ Debconf is a configuration management system for debian packages. Packages
+ use Debconf to ask questions when they are installed.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+
+Package: iproute2
+Status: install ok installed
+Priority: important
+Section: net
+Installed-Size: 1184
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 3.14.0-1
+Replaces: iproute
+Provides: arpd
+Depends: libc6 (>= 2.14), libdb5.3
+Recommends: libatm1 (>= 2.4.1-17~), libxtables10
+Suggests: iproute2-doc
+Conflicts: arpd, iproute (<< 20130000-1)
+Conffiles:
+ /etc/iproute2/rt_realms 7137bdf40e8d58c87ac7e3bba503767f
+ /etc/iproute2/rt_protos 95ce0b4b5b79f5a8a45941fb418a904c
+ /etc/iproute2/rt_dsfield 4264d5c7c8298300185aa04e1a736934
+ /etc/iproute2/rt_scopes 6298b8df09e9bda23ea7da49021ca457
+ /etc/iproute2/ematch_map b91e7f9b26918449bade9573f8871d61
+ /etc/iproute2/group 3aea2c0e0dd75e13a5f8f48f2936915f
+ /etc/iproute2/rt_tables a1313318d6778fe6b8c680248ef5a463
+Description: networking and traffic control tools
+ The iproute2 suite is a collection of utilities for networking and
+ traffic control.
+ .
+ These tools communicate with the Linux kernel via the (rt)netlink
+ interface, providing advanced features not available through the
+ legacy net-tools commands 'ifconfig' and 'route'.
+Original-Maintainer: Debian iproute2 Maintainers <ah-iproute@debian.org>
+Homepage: http://www.linux-foundation.org/en/Net:Iproute2
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 6124
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 8.21-1ubuntu5
+Replaces: mktemp, timeout
+Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17), libselinux1 (>= 1.32)
+Conflicts: timeout
+Description: GNU core utilities
+ This package contains the basic file, shell and text manipulation
+ utilities which are expected to exist on every operating system.
+ .
+ Specifically, this package includes:
+ arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
+ csplit cut date dd df dir dircolors dirname du echo env expand expr
+ factor false flock fmt fold groups head hostid id install join link ln
+ logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od
+ paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon
+ sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test
+ timeout touch tr true truncate tsort tty uname unexpand uniq unlink
+ users vdir wc who whoami yes
+Homepage: http://gnu.org/software/coreutils
+Original-Maintainer: Michael Stone <mstone@debian.org>
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 273
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 4.4
+Replaces: manpages-pl (<< 1:0.5)
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.15)
+Description: Miscellaneous utilities specific to Debian
+ This package provides a number of small utilities which are used
+ primarily by the installation scripts of Debian packages, although
+ you may use them directly.
+ .
+ The specific utilities included are:
+ add-shell installkernel ischroot remove-shell run-parts savelog
+ tempfile which
+Original-Maintainer: Clint Adams <clint@debian.org>
+
+Package: initramfs-tools
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 365
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 0.103ubuntu4
+Provides: linux-initramfs-tool
+Depends: initramfs-tools-bin (>= 0.103ubuntu4), initramfs-tools-bin (<< 0.103ubuntu4.1~), klibc-utils (>= 2.0-1~), busybox-initramfs (>= 1:1.13.3-1ubuntu5), cpio, module-init-tools, udev (>= 147~-5), findutils (>= 4.2.24), util-linux (>> 2.15~rc1)
+Suggests: bash-completion
+Breaks: cryptsetup (<< 2:1.1.0-2.1), elilo (<< 3.12-3.1~), lilo (<< 22.8-8.2~), mountall (<< 2.0~), s390-tools (<< 1.8.3-2~)
+Conflicts: usplash (<< 0.5.50)
+Conffiles:
+ /etc/bash_completion.d/initramfs-tools 7eeb7184772f3658e7cf446945c096b1
+ /etc/initramfs-tools/update-initramfs.conf e2026d4603e7161efaccca519aeb1297
+ /etc/initramfs-tools/initramfs.conf 8801535d9bec98754eea6a172f956d42
+ /etc/kernel/postrm.d/initramfs-tools e22d1ab0d7a7a1b66ae6d71ea4f21938
+ /etc/kernel/postinst.d/initramfs-tools fe7713b9a74a10ed71d1e7dd93afc209
+Description: tools for generating an initramfs
+ This package contains tools to create and boot an initramfs for packaged 2.6
+ Linux kernel. The initramfs is a gzipped cpio archive. At boot time, the
+ kernel unpacks that archive into RAM, mounts and uses it as initial root file
+ system. The mounting of the real root file system occurs in early user space.
+ klibc provides utilities to setup root. Having the root on MD, LVM2, LUKS or
+ NFS is also supported.
+ Any boot loader with initrd support is able to load an initramfs archive.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: makedev
+Status: install ok installed
+Priority: extra
+Section: admin
+Installed-Size: 125
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 2.3.1-93ubuntu1
+Depends: base-passwd (>= 3.0.4)
+Conflicts: udev (<= 0.024-7)
+Description: creates device files in /dev
+ The MAKEDEV executable is used to create device files, often in /dev.
+ .
+ Device files are special files through which applications can interact
+ with hardware.
+ .
+ This package is not necessary for most modern Linux systems, where the udev
+ subsystem provides a more dynamic mechanism for device file management.
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libdbus-1-3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 398
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: dbus
+Version: 1.6.18-0ubuntu4
+Depends: libc6 (>= 2.10)
+Pre-Depends: multiarch-support
+Recommends: dbus
+Breaks: kde-window-manager (<< 4:4.4.5-9), kdebase-workspace-bin (<< 4:4.4.5-9)
+Description: simple interprocess messaging system (library)
+ D-Bus is a message bus, used for sending messages between applications.
+ Conceptually, it fits somewhere in between raw sockets and CORBA in
+ terms of complexity.
+ .
+ D-Bus supports broadcast messages, asynchronous messages (thus
+ decreasing latency), authentication, and more. It is designed to be
+ low-overhead; messages are sent using a binary protocol, not using
+ XML. D-Bus also supports a method call mapping for its messages, but
+ it is not required; this makes using the system quite simple.
+ .
+ It comes with several bindings, including GLib, Python, Qt and Java.
+ .
+ The daemon can be found in the dbus package.
+Homepage: http://dbus.freedesktop.org/
+Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+
+Package: module-init-tools
+Status: install ok installed
+Priority: extra
+Section: admin
+Installed-Size: 31
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: kmod
+Version: 16-2ubuntu3
+Depends: libkmod2, kmod
+Pre-Depends: dpkg (>= 1.15.7.2)
+Description: transitional dummy package (module-init-tools to kmod)
+ This dummy package is provided to support the transition from
+ module-init-tools to kmod and should be removed afterwards.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libuuid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 107
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Recommends: uuid-runtime
+Description: Universally Unique ID library
+ The libuuid library generates and parses 128-bit universally unique
+ ids (UUIDs). A UUID is an identifier that is unique across both
+ space and time, with respect to the space of all UUIDs. A UUID can
+ be used for multiple purposes, from tagging objects with an extremely
+ short lifetime, to reliably identifying very persistent objects
+ across a network.
+ .
+ See RFC 4122 for more information.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 82
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: lsb
+Version: 4.1+Debian11ubuntu6
+Description: Linux Standard Base 4.1 init script functionality
+ The Linux Standard Base (http://www.linuxbase.org/) is a standard
+ core system that third-party applications written for Linux can
+ depend upon.
+ .
+ This package only includes the init-functions shell library, which
+ may be used by other packages' initialization scripts for console
+ logging and other purposes.
+Homepage: http://www.linuxfoundation.org/collaborate/workgroups/lsb
+Original-Maintainer: Debian LSB Team <debian-lsb@lists.debian.org>
+
+Package: procps
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 637
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1:3.3.9-1ubuntu2
+Provides: watch
+Depends: libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libncursesw5 (>= 5.6+20070908), libprocps3, libtinfo5, lsb-base (>= 3.0-10), initscripts
+Recommends: psmisc
+Breaks: guymager (<= 0.5.9-1), open-vm-tools (<= 2011.12.20-562307-1), xmem (<= 1.20-27.1)
+Conflicts: pgrep (<< 3.3-5), w-bassman (<< 1.0-3)
+Conffiles:
+ /etc/sysctl.d/10-console-messages.conf 154f6f5c5810d10bb303fb6a8e907c6a
+ /etc/sysctl.d/README c20074b9b11a5202758c69d7bcb6996f
+ /etc/sysctl.d/10-magic-sysrq.conf b3059f2835f17c97265433fdfdee358f
+ /etc/sysctl.d/10-kernel-hardening.conf 5c1388f00011a287cdeba60208c674e1
+ /etc/sysctl.d/10-link-restrictions.conf 8568316f2baa8db06554dab91f93a161
+ /etc/sysctl.d/10-zeropage.conf 8d7193abcc4dfedaf519dd03016a5e59
+ /etc/sysctl.d/10-network-security.conf 4ac7258f5336e7eeaf448c05ab668d3c
+ /etc/sysctl.d/10-ptrace.conf 47f40494b2fc698e15549e0a4a79e81c
+ /etc/sysctl.d/10-ipv6-privacy.conf e9473d12b4a7069d6a3ca8b694511ddf
+ /etc/sysctl.conf 76c1d8285c578d5e827c3e07b9738112
+ /etc/init.d/procps 021482ebab1024f5ed76e650e5191e8f
+ /etc/init/procps.conf 96170a339d08797dc90d69b01d6bf610
+Description: /proc file system utilities
+ This package provides command line and full screen utilities for browsing
+ procfs, a "pseudo" file system dynamically generated by the kernel to
+ provide information about the status of entries in its process table
+ (such as whether the process is running, stopped, or a "zombie").
+ .
+ It contains free, kill, pkill, pgrep, pmap, ps, pwdx, skill, slabtop,
+ snice, sysctl, tload, top, uptime, vmstat, w, and watch.
+Homepage: http://gitorious.org/procps
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libpam0g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 219
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam0g-util
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.8), debconf (>= 0.5) | debconf-2.0
+Pre-Depends: multiarch-support
+Suggests: libpam-doc
+Description: Pluggable Authentication Modules library
+ Contains the shared library for Linux-PAM, a library that enables the
+ local system administrator to choose how applications authenticate users.
+ In other words, without rewriting or recompiling a PAM-aware application,
+ it is possible to switch between the authentication mechanism(s) it uses.
+ One may entirely upgrade the local authentication system without touching
+ the applications themselves.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: sensible-utils
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 110
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 0.0.9
+Replaces: debianutils (<= 2.32.3), manpages-pl (<= 20060617-3~)
+Description: Utilities for sensible alternative selection
+ This package provides a number of small utilities which are used
+ by programs to sensibly select and spawn an appropriate browser,
+ editor, or pager.
+ .
+ The specific utilities included are: sensible-browser sensible-editor
+ sensible-pager
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4780
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: perl
+Version: 5.18.2-2ubuntu1
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libsocket-perl, libxsloader-perl, perl (<< 5.10.1-12), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libsocket-perl, libxsloader-perl, perl5-base, perlapi-5.18.1, perlapi-5.18.2
+Pre-Depends: libc6 (>= 2.11), dpkg (>= 1.14.20)
+Suggests: perl
+Breaks: autoconf2.13 (<< 2.13-45), libcommon-sense-perl (<< 3.72-2~), libfile-spec-perl (<< 3.4000), libmarc-charset-perl (<< 1.2), libsocket-perl (<< 2.009), libxsloader-perl (<< 0.16)
+Conflicts: defoma (<< 0.11.12), doc-base (<< 0.10.3), libscalar-list-utils-perl, mono-gac (<< 2.10.8.1-3), safe-rm (<< 0.8), update-inetd (<< 4.41)
+Description: minimal Perl system
+ Perl is a scripting language used in many system scripts and utilities.
+ .
+ This package provides a Perl interpreter and the small subset of the
+ standard run-time library required to perform basic tasks. For a full
+ Perl installation, install "perl" (and its dependencies, "perl-modules"
+ and "perl-doc").
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+Homepage: http://dev.perl.org/perl5/
+
+Package: sysv-rc
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 221
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: file-rc
+Depends: debconf (>= 0.5) | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Breaks: initscripts (<< 2.86.ds1-63)
+Conflicts: file-rc
+Description: System-V-like runlevel change mechanism
+ This package provides support for the System-V like system
+ for booting, changing runlevels, and shutting down,
+ configured through symbolic links in /etc/rc?.d/.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libprocps3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 129
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: procps
+Version: 1:3.3.9-1ubuntu2
+Replaces: procps (<< 1:3.3.2-1)
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: library for accessing process information from /proc
+ The libprocps library is a way of accessing information out of the /proc
+ filesystem.
+ .
+ This package contains the shared libraries necessary to run programs
+ compilied with libprocps.
+Homepage: http://gitorious.org/procps
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libjson-c2
+Status: install ok installed
+Priority: extra
+Section: libs
+Installed-Size: 82
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: json-c
+Version: 0.11-4ubuntu1
+Depends: libc6 (>= 2.8)
+Pre-Depends: multiarch-support
+Description: JSON manipulation library - shared library
+ This library allows you to easily construct JSON objects in C,
+ output them as JSON formatted strings and parse JSON formatted
+ strings back into the C representation of JSON objects.
+Homepage: https://github.com/json-c/json-c/wiki
+Original-Maintainer: fabien boucher <fabien.dot.boucher@gmail.com>
+
+Package: libdrm2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 105
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libdrm
+Version: 2.4.53-1
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libsepol1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 322
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libsepol
+Version: 2.2-1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: SELinux library for manipulating binary security policies
+ Security-enhanced Linux is a patch of the Linux kernel and a number
+ of utilities with enhanced security functionality designed to add
+ mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement®, Role-based Access
+ Control, and Multi-level Security.
+ .
+ libsepol provides an API for the manipulation of SELinux binary policies.
+ It is used by checkpolicy (the policy compiler) and similar tools, as well
+ as by programs like load_policy that need to perform specific transformations
+ on binary policies such as customizing policy boolean settings.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: libpam-modules
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 764
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Pre-Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.15), libdb5.3, libpam0g (>= 1.1.3-2), libselinux1 (>= 2.1.9), debconf (>= 0.5) | debconf-2.0, libpam-modules-bin (= 1.1.8-1ubuntu2)
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Conffiles:
+ /etc/security/limits.conf 11c27ba00b7bd6a255f33126f75c5005
+ /etc/security/group.conf f1e26e8db6f7abd2d697d7dad3422c36
+ /etc/security/access.conf 13ec4d189f0ed9acf3433977a53d446b
+ /etc/security/pam_env.conf ddee4a931170dc21b4e0b9bb28e02a7b
+ /etc/security/namespace.init b46b23d64860d1557d2a8f44b231fd54
+ /etc/security/time.conf 06e05c6079e839c8833ac7c3abfde192
+ /etc/security/sepermit.conf d41c74654734a5c069a37bfc02f0a6d4
+ /etc/security/namespace.conf 6424c99a62ddf4b7d3ca713bb06ded89
+Description: Pluggable Authentication Modules for PAM
+ This package completes the set of modules for PAM. It includes the
+ pam_unix.so module as well as some specialty modules.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: tzdata
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1599
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 2014b-1
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Provides: tzdata-jessie
+Depends: debconf (>= 0.5) | debconf-2.0
+Description: time zone and daylight-saving time data
+ This package contains data required for the implementation of
+ standard local time for many representative locations around the
+ globe. It is updated periodically to reflect changes made by
+ political bodies to time zone boundaries, UTC offsets, and
+ daylight-saving rules.
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Homepage: http://www.iana.org/time-zones
+
+Package: libudev1
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 129
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: systemd
+Version: 204-10ubuntu1
+Depends: libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0)
+Pre-Depends: multiarch-support
+Description: libudev shared library
+ This library provides access to udev device information.
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+
+Package: ifupdown
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 229
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 0.7.48.1ubuntu1
+Replaces: netbase (<< 5.0)
+Depends: iproute2 | iproute (>= 20071016-1), libc6 (>= 2.7), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 4.1+Debian3), initscripts (>= 2.88dsf-25), adduser
+Recommends: isc-dhcp-client | dhcp-client
+Suggests: ppp, rdnssd, net-tools
+Breaks: dhcp3-client (<< 4.0), netbase (<< 5.0)
+Conffiles:
+ /etc/network/if-up.d/upstart dfbcde4fd4a3a2553930605e03e160ab
+ /etc/network/if-down.d/upstart 1a0205ddbc1446782a8d4d818e97d8a5
+ /etc/init/network-interface-container.conf 4daa570594afc50940f140a7731d20d1
+ /etc/init/networking.conf c50811e19bcd596d99b0467b40cfbb8b
+ /etc/init/network-interface.conf aae12345eba8e946579b06798b1752c1
+ /etc/init/network-interface-security.conf feb6b4b52fe24c44ff1bc68addf245d6
+ /etc/init.d/networking 2c8c3be8b90f99de7edf0f883ebe39f3
+ /etc/default/networking 35cd4a2713981c9239ce4532c1bfc1c7
+Description: high level tools to configure network interfaces
+ This package provides the tools ifup and ifdown which may be used to
+ configure (or, respectively, deconfigure) network interfaces based on
+ interface definitions in the file /etc/network/interfaces.
+Original-Maintainer: Andrew Shadura <andrewsh@debian.org>
+
+Package: libsemanage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 261
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libsemanage
+Version: 2.2-1ubuntu1
+Depends: libsemanage-common (= 2.2-1ubuntu1), libaudit1 (>= 1:2.2.1), libbz2-1.0, libc6 (>= 2.8), libselinux1 (>= 2.1.12), libsepol1 (>= 2.1.4), libustr-1.0-1 (>= 1.0.4)
+Pre-Depends: multiarch-support
+Description: SELinux policy management library
+ This package provides the shared libraries for SELinux policy management.
+ It uses libsepol for binary policy manipulation and libselinux for
+ interacting with the SELinux system. It also exec's helper programs
+ for loading policy and for checking whether the file_contexts
+ configuration is valid (load_policy and setfiles from
+ policycoreutils) presently, although this may change at least for the
+ bootstrapping case
+ .
+ Security-enhanced Linux is a patch of the Linux kernel and a
+ number of utilities with enhanced security functionality designed to
+ add mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement, Role-based Access
+ Control, and Multi-level Security.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: mountall
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 248
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.53
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth2 (>= 0.8.1-3), libudev1 (>= 183)
+Pre-Depends: dpkg (>= 1.15.7.2)
+Breaks: initscripts (<< 2.88dsf-24), policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Conffiles:
+ /etc/init/checkroot.sh.conf 3ea7f6ba450f431fd239e2b53a805216
+ /etc/init/mounted-dev.conf cf7bea42235e77168c996d774f059c44
+ /etc/init/mounted-tmp.conf 289fa57d726885147a41b2b1f3695a29
+ /etc/init/mountdevsubfs.sh.conf dd33cb414bca17d97140d7f8671207f2
+ /etc/init/mountall-net.conf feff70cd7006f6763e24263d381940f3
+ /etc/init/mountall-shell.conf aa05af89db3de044d1cd7f6971b46d9f
+ /etc/init/mountall.sh.conf ee258840aad52477434cc22e34efcc50
+ /etc/init/bootmisc.sh.conf d1a51c54dcfe6f3f5265246888ba4161
+ /etc/init/mountnfs.sh.conf 760a5b57cbd0d1e2c65ba6db9297a586
+ /etc/init/mounted-proc.conf 07198659bd06c1442a35882b2fae05fc
+ /etc/init/mountnfs-bootclean.sh.conf 0b6f3f9e9f8757efee57f6a4839d7dff
+ /etc/init/mountall.conf ac0fbaa98e705e52f59ca9e4d39751ad
+ /etc/init/mountall-bootclean.sh.conf d1899239aa60ea903f43a3ac58c5c238
+ /etc/init/mtab.sh.conf 27aece82dbe70232d734d1dadfe87518
+ /etc/init/mountkernfs.sh.conf 2e7449097b6cf88cba915edc1c339ec4
+ /etc/init/mounted-var.conf 02f90856c91a46e9cbed1c35b92fec6c
+ /etc/init/mountall-reboot.conf 43e3c229085a13005b0681a49b2bef51
+ /etc/init/checkroot-bootclean.sh.conf e02a473c76e4a2bfc1efb4c367495052
+ /etc/init/checkfs.sh.conf 2e928476ccb2ecefe9ee87e2f83d34da
+ /etc/init/mounted-debugfs.conf 462c8aab0d9d4e6e496b1e2be5910edc
+ /etc/init/mounted-run.conf a26db58c801e0f6ec8738a5838aa53ed
+ /etc/dbus-1/system.d/Mountall.Server.conf 91b1414af1257d2ef089f84a3e5c1ed1
+Description: filesystem mounting tool
+ mountall mounts filesystems when the underlying block devices are
+ ready, or when network interfaces come up, checking the filesystems
+ first.
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: kmod
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 285
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 16-2ubuntu3
+Replaces: module-init-tools (<< 4)
+Depends: libc6 (>= 2.17), libkmod2, sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 3.0-6)
+Breaks: module-init-tools (<< 4)
+Conffiles:
+ /etc/init/kmod.conf 2686532745c8b71d6d3df91c3a53aef3
+ /etc/modprobe.d/denylist-framebuffer.conf 097e2142ae3e4dd2911eda7844ce0c18
+ /etc/modprobe.d/denylist-rare-network.conf 8fb4b96124e461f53adceba9ca91f09a
+ /etc/modprobe.d/denylist.conf bc6754fa320733c6d239a4bb0148ffd7
+ /etc/modprobe.d/iwlwifi.conf f27bc645e93e20c8e532325d190ac8ee
+ /etc/modprobe.d/denylist-ath_pci.conf d1da9bb08c2b0f56f3be93fd0e37946b
+ /etc/modprobe.d/mlx4.conf b2a0bedb7461daeb0138270639581bbf
+ /etc/modprobe.d/denylist-firewire.conf 9cc07a17e8e64f9cd35ff59c29debe69
+ /etc/modprobe.d/denylist-watchdog.conf 55327f9270c8a6257a833c4d127a39e1
+ /etc/init.d/kmod e6d43abead3714ceb8aca68dd77e1dad
+ /etc/depmod.d/ubuntu.conf 7c8439ef36b12e5f226b5dbfa20b8c2d
+Description: tools for managing Linux kernel modules
+ This package contains a set of programs for loading, inserting, and
+ removing kernel modules for Linux.
+ It replaces module-init-tools.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libkmod2
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 138
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: kmod
+Version: 16-2ubuntu3
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: libkmod shared library
+ This library provides an API for insertion, removal, configuration and
+ listing of kernel modules.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: tar
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 760
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.27.1-2
+Replaces: cpio (<< 2.4.2-39)
+Pre-Depends: libacl1 (>= 2.2.51-8), libc6 (>= 2.17), libselinux1 (>= 1.32)
+Suggests: bzip2, ncompress, xz-utils, tar-scripts
+Breaks: dpkg-dev (<< 1.14.26)
+Conflicts: cpio (<= 2.4.2-38)
+Conffiles:
+ /etc/rmt 3c58b7cd13da1085eff0acc6a00f43c7
+Description: GNU version of the tar archiving utility
+ Tar is a program for packaging a set of files as a single archive in tar
+ format. The function it performs is conceptually similar to cpio, and to
+ things like PKZIP in the DOS world. It is heavily used by the Debian package
+ management system, and is useful for performing system backups and exchanging
+ sets of files with others.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: libmount1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 249
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Depends: libblkid1 (>= 2.17.2), libc6 (>= 2.8), libselinux1 (>= 1.32)
+Pre-Depends: multiarch-support
+Description: block device id library
+ The device mounting library, used by mount and mount helpers.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 170
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: zlib
+Version: 1:1.2.8.dfsg-1ubuntu1
+Provides: libz1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Breaks: libxml2 (<< 2.7.6.dfsg-2), texlive-binaries (<< 2009-12)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+ zlib is a library implementing the deflate compression method found
+ in gzip and PKZIP. This package includes the shared library.
+Homepage: http://zlib.net/
+Original-Maintainer: Mark Brown <broonie@debian.org>
+
+Package: adduser
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 644
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Version: 3.113+nmu3ubuntu3
+Replaces: manpages-it (<< 0.3.4-2), manpages-pl (<= 20051117-1)
+Depends: perl-base (>= 5.6.0), passwd (>= 1:4.0.12), debconf | debconf-2.0
+Suggests: liblocale-gettext-perl, perl-modules, ecryptfs-utils (>= 67-1)
+Conffiles:
+ /etc/deluser.conf 773fb95e98a27947de4a95abb3d3f2a2
+Description: add and remove users and groups
+ This package includes the 'adduser' and 'deluser' commands for creating
+ and removing users.
+ .
+ - 'adduser' creates new users and groups and adds existing users to
+ existing groups;
+ - 'deluser' removes users and groups and removes users from a given
+ group.
+ .
+ Adding users with 'adduser' is much easier than adding them manually.
+ Adduser will choose appropriate UID and GID values, create a home
+ directory, copy skeletal user configuration, and automate setting
+ initial values for the user's password, real name and so on.
+ .
+ Deluser can back up and remove users' home directories
+ and mail spool or all the files they own on the system.
+ .
+ A custom script can be executed after each of the commands.
+ .
+ Development mailing list:
+ http://lists.alioth.debian.org/mailman/listinfo/adduser-devel/
+Homepage: http://alioth.debian.org/projects/adduser/
+Original-Maintainer: Debian Adduser Developers <adduser-devel@lists.alioth.debian.org>
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 154
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: gcc-4.9 (4.9.0-1ubuntu3)
+Version: 1:4.9.0-1ubuntu3
+Depends: gcc-4.9-base (= 4.9.0-1ubuntu3), libc6 (>= 2.2.4)
+Pre-Depends: multiarch-support
+Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libdebconfclient0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 85
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: cdebconf
+Version: 0.190ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: Debian Configuration Management System (C-implementation library)
+ Debconf is a configuration management system for Debian packages. It is
+ used by some packages to prompt you for information before they are
+ installed. This is a reimplementation of the original debconf version
+ in C.
+ .
+ This is the libraries needed by libdebconfclient-dev and cdebconf.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: libklibc
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 133
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: klibc
+Version: 2.0.3-0ubuntu1
+Description: minimal libc subset for use with initramfs
+ klibc is intended to be a minimalistic libc subset for use with
+ initramfs. It is deliberately written for small size, minimal
+ entanglement, and portability, not speed. It is definitely a work in
+ progress, and a lot of things are still missing.
+Homepage: http://git.kernel.org/?p=libs/klibc/klibc.git;a=summary
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: libcgmanager0
+Status: install ok installed
+Priority: optional
+Section: admin
+Installed-Size: 152
+Maintainer: Serge Hallyn <serge.hallyn@ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: cgmanager
+Version: 0.25-0ubuntu4
+Depends: libc6 (>= 2.1.3), libdbus-1-3 (>= 1.0.2)
+Description: Central cgroup manager daemon (client library)
+ cgmanager provides a central cgroup manager daemon and a
+ per-namespace manager proxy, allowing users and programs
+ to administrate cgroups through D-Bus requests.
+ .
+ This package contains the shared library.
+Homepage: http://cgmanager.linuxcontainers.org/
+
+Package: mount
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 410
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.8), libmount1 (>= 2.20.1), libselinux1 (>= 2.0.15)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Description: Tools for mounting and manipulating filesystems
+ This package provides the mount(8), umount(8), swapon(8),
+ swapoff(8), and losetup(8) commands.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 292
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Depends: libtinfo5 (= 5.9+20140118-1ubuntu1), libc6 (>= 2.15)
+Pre-Depends: multiarch-support, libtinfo5 (>= 5.9-3)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared libraries necessary to run programs
+ compiled with ncurses.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libplymouth2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 298
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: plymouth
+Version: 0.8.8-0ubuntu17
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.8), libpng12-0 (>= 1.2.13-4)
+Pre-Depends: multiarch-support
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Description: graphical boot animation and logger - shared libraries
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+ .
+ This package contains the shared libraries.
+
+Package: gcc-4.9-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 213
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: gcc-4.9
+Version: 4.9.0-1ubuntu3
+Breaks: dehydra (<= 0.9.hg20110609-2), gcc-4.4-base (<< 4.4.7), gcj-4.4-base (<< 4.4.6-9~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.4-base (<< 4.4.6-3~), gnat-4.6 (<< 4.6.1-5~)
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: initramfs-tools-bin
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 119
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: i386
+Source: initramfs-tools
+Version: 0.103ubuntu4
+Depends: libc6 (>= 2.4), libudev1 (>= 183)
+Description: binaries used by initramfs-tools
+ This package contains binaries used inside the initramfs images generated
+ by initramfs-tools.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 55
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: attr
+Version: 1:2.4.47-1ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+ Contains the runtime environment required by programs that make use
+ of extended attributes.
+Homepage: http://savannah.nongnu.org/projects/attr/
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: klibc-utils
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 392
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: klibc
+Version: 2.0.3-0ubuntu1
+Depends: libklibc (= 2.0.3-0ubuntu1)
+Breaks: initramfs-tools (<< 0.103)
+Description: small utilities built with klibc for early boot
+ This package contains a collection of programs that are linked
+ against klibc. These duplicate some of the functionality of a
+ regular Linux toolset, but are typically much smaller than their
+ full-function counterparts. They are intended for inclusion in
+ initramfs images and embedded systems.
+Homepage: http://git.kernel.org/?p=libs/klibc/klibc.git;a=summary
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: e2fslibs
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 418
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libe2p2, libext2fs2
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: ext2/ext3/ext4 file system libraries
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package provides the ext2fs and e2p libraries, for userspace software
+ that directly accesses extended file systems. Programs that use libext2fs
+ include e2fsck, mke2fs, and tune2fs. Programs that use libe2p include
+ dumpe2fs, chattr, and lsattr.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: base-passwd
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 247
+Maintainer: Colin Watson <cjwatson@debian.org>
+Architecture: i386
+Multi-Arch: foreign
+Version: 3.5.33
+Replaces: base
+Depends: libc6 (>= 2.8), libdebconfclient0 (>= 0.145)
+Recommends: debconf (>= 0.5) | debconf-2.0
+Description: Debian base system master password and group files
+ These are the canonical master copies of the user database files
+ (/etc/passwd and /etc/group), containing the Debian-allocated user and
+ group IDs. The update-passwd tool is provided to keep the system databases
+ synchronized with these master files.
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 102
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: common error description library
+ libcomerr is an attempt to present a common error-handling mechanism to
+ manipulate the most common form of error code in a fashion that does not
+ have the problems identified with mechanisms commonly in use.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: plymouth
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 441
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Version: 0.8.8-0ubuntu17
+Depends: initramfs-tools, libplymouth2 (= 0.8.8-0ubuntu17), mountall (>= 2.0), upstart (>= 1.11-0ubuntu3), udev (>= 166-0ubuntu4), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), libc6 (>= 2.8), libdbus-1-3 (>= 1.1.1), libdrm2 (>= 2.4.25), libtinfo5
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Breaks: gdm (<< 3.0.4-0ubuntu11), kdm (<< 4:4.7.1-0ubuntu3), lightdm (<< 0.9.7-0ubuntu2), lubuntu-plymouth-theme (<= 0.4), lxdm (<< 0.4.1-0ubuntu2), ubuntustudio-plymouth-theme (<= 0.38), xubuntu-plymouth-theme (<< 10.04.4)
+Conflicts: usplash
+Conffiles:
+ /etc/init/plymouth-ready.conf f8542ccc586a5b63f5b76f68ac4f2f59
+ /etc/init/plymouth-shutdown.conf febc1a3763f8e15add963ede4e561a26
+ /etc/init/plymouth-stop.conf 03c8ba8289470d71e22fdbfa5859e122
+ /etc/init/plymouth.conf 859e01281230eb9a522c99875f4b8b69
+ /etc/init/plymouth-log.conf 65d2943a69f455dec3fed43fd7996d76
+ /etc/init/plymouth-splash.conf 63b63b446cc981dc4f2fa5772b4b3e93
+ /etc/init/plymouth-upstart-bridge.conf dd271be2c476aadd0cd34bc77d95a379
+Description: graphical boot animation and logger - main package
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+
+Package: upstart
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1621
+Maintainer: James Hunt <james.hunt@ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.12.1-0ubuntu4
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.15), libdbus-1-3 (>= 1.2.16), libjson-c2 (>= 0.10), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 1.32), libudev1 (>= 183), sysvinit-utils, initscripts, mountall, ifupdown (>= 0.6.10ubuntu5), libjson0 (>= 0.10-1.1ubuntu1), debianutils (>= 4)
+Suggests: python3, graphviz, bash-completion, upstart-monitor
+Breaks: friendly-recovery (<< 0.2.13), libc6 (<< 2.12.1-0ubuntu12)
+Conflicts: lxcguest, startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Conffiles:
+ /etc/logrotate.d/upstart 070767086a27883ec119e1dde779a856
+ /etc/cron.daily/upstart 761747ebd3d1677620d5af50c9900b13
+ /etc/dbus-1/system.d/Upstart.conf 64be74cddb0c74b7d98202b40389784c
+ /etc/bash_completion.d/upstart 080f7eee4a3f3e5f76197eaa581fb4da
+ /etc/X11/Xsession.d/99upstart d150fce36cf22f5504e4dbc89b4826e0
+ /etc/X11/Xsession.d/00upstart 46b4576b1f2ceffb2450a88d58786b95
+ /etc/init/tty5.conf 6d5794f72a1098b008e53e326a6bb5a0
+ /etc/init/rc-sysinit.conf a50c045d9390a6e6c43c18b19cd72fe5
+ /etc/init/rcS.conf 8533688686f75d7bcf20da5a0d36d94b
+ /etc/init/flush-early-job-log.conf 09e959647877c39f6490ad29b8a35a28
+ /etc/init/wait-for-state.conf 20b85b55c3f1e040fdbbf669afe4d2a1
+ /etc/init/shutdown.conf 559659602cefe7e8d3c1e76820f5ae5d
+ /etc/init/upstart-udev-bridge.conf 2c24bb70877476b5e7016ccf6de745a4
+ /etc/init/tty2.conf 0d9326fdda081ac96d92bbc57ff773e4
+ /etc/init/failsafe.conf 0b88eeccf6c8fd456e886aa7a76e3291
+ /etc/init/rc.conf 3ebc6ddcd00482cfb24ce09a14ded29f
+ /etc/init/upstart-file-bridge.conf 57ea7ed6cba1f1259ac87410c59237ca
+ /etc/init/console.conf 8d79b0205f2daffb473604ce53e1dc83
+ /etc/init/tty1.conf f42f2298f711147ecf177054294861a7
+ /etc/init/control-alt-delete.conf 16e6603524084b63b0f0ca04eb56757e
+ /etc/init/upstart-socket-bridge.conf 5f3eaca09ee1f03d5d0686ea99f8c051
+ /etc/init/tty4.conf 2c78cd865d848bb2674104905151dbe2
+ /etc/init/tty3.conf 6608f08adf00a282358a1eeb9bdcf78e
+ /etc/init/tty6.conf e8ad2f0411614f9c8dc9c4e364763549
+ /etc/init/container-detect.conf 6bae6257355ad7322e7263e567817465
+ /etc/upstart-xsessions ec9aa92a5c50938479d711daa9ee774a
+Description: event-based init daemon
+ upstart is a replacement for the /sbin/init daemon which handles
+ starting of tasks and services during boot, stopping them during
+ shutdown and supervising them while the system is running.
+Homepage: http://upstart.ubuntu.com/
+Orig-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: passwd
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2250
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: shadow
+Version: 1:4.1.5.1-1ubuntu9
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.8), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libsemanage1 (>= 2.0.3), libpam-modules, debianutils (>= 2.15.2)
+Conffiles:
+ /etc/default/useradd cc9f9a7713ab62a32cd38363d958f396
+ /etc/init/passwd.conf ea81baf06e4c358225ce22b786ad9e6a
+ /etc/cron.daily/passwd db990990933b6f56322725223f13c2bc
+ /etc/pam.d/chpasswd 9900720564cb4ee98b7da29e2d183cb2
+ /etc/pam.d/newusers 1454e29bfa9f2a10836563e76936cea5
+ /etc/pam.d/chfn 4d466e00a348ba426130664d795e8afa
+ /etc/pam.d/passwd eaf2ad85b5ccd06cceb19a3e75f40c63
+ /etc/pam.d/chsh a6e9b589e90009334ffd030d819290a6
+Description: change and administer password and group data
+ This package includes passwd, chsh, chfn, and many other programs to
+ maintain password and group data.
+ .
+ Shadow passwords are supported. See /usr/share/doc/passwd/README.Debian
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 75
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: acl
+Version: 2.2.52-1
+Depends: libattr1 (>= 1:2.4.46-8), libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+ This package contains the libacl.so dynamic library containing
+ the POSIX 1003.1e draft standard 17 functions for manipulating
+ access control lists.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://savannah.nongnu.org/projects/acl/
+
+Package: libslang2
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: slang2
+Version: 2.2.4-16ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Recommends: libpng12-0
+Description: S-Lang programming library - runtime version
+ S-Lang is a C programmer's library that includes routines for the rapid
+ development of sophisticated, user friendly, multi-platform applications.
+ .
+ This package contains only the shared library libslang.so.* and copyright
+ information. It is only necessary for programs that use this library (such
+ as jed and slrn). If you plan on doing development with S-Lang, you will
+ need the companion -dev package as well.
+Homepage: http://www.jedsoft.org/slang/
+Original-Maintainer: Alastair McKinstry <mckinstry@debian.org>
+
+Package: initscripts
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 219
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 4), lsb-base (>= 3.2-14), sysvinit-utils (>= 2.86.ds1-64), sysv-rc | file-rc, coreutils (>= 5.93), passwd, upstart, mountall (>= 2.28)
+Recommends: psmisc, e2fsprogs
+Breaks: aide (<< 0.15.1-5), atm-tools (<< 1:2.5.1-1.3), bootchart (<< 0.10~svn407-3.3), console-common (<< 0.7.86), cruft (<< 0.9.16), eepc-acpi-scripts (<< 1.1.12), fcheck (<< 2.7.59-16), hostapd (<< 1:0.7.3-3), hostname (<< 2.95ubuntu1~boot2), ifupdown (<< 0.6.8ubuntu27), libpam-mount (<< 2.13-1), ltsp-client-core (<< 5.2.16-1), mdadm (<< 3.2.2-1), nbd-client (<< 1:2.9.23-1), nfs-common (<< 1:1.2.5-3), portmap (<< 6.0.0-2), readahead-fedora (<< 2:1.5.6-3), resolvconf (<< 1.49), rpcbind (<< 0.2.0-7), rsyslog (<< 5.8.2-2), selinux-policy-default (<= 2:0.2.20100524-9), splashy (<< 0.3.13-5.1+b1), sysklogd (<< 1.5-6.2), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4), wpasupplicant (<< 0.7.3-4), xymon (<< 4.3.0~beta2.dfsg-9)
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Conffiles:
+ /etc/init.d/halt 6ae1b3b1b8198567a5e32116077f12a2
+ /etc/init.d/killprocs 5e404d35091fab6c4889302736ed4602
+ /etc/init.d/ondemand 63d57b1f5df759ddea8ef193094c118a
+ /etc/init.d/rc.local 18cd07959adfa8411ca17fe7c2ec3d96
+ /etc/init.d/reboot 1b9db1ef7bfd79b128ef85d5065721a6
+ /etc/init.d/sendsigs 8376da0c226dcc989f6829230b1d5b50
+ /etc/init.d/single dc13cb373c5c098a8fb95424701373e3
+ /etc/init.d/umountfs 07e4c8c8d9136f36745feb4776edc6f4
+ /etc/init.d/umountnfs.sh b369d5215733f79ee2bf58cc966c5931
+ /etc/init.d/umountroot 677b1eb8358469b50044663bfbee5699
+ /etc/init.d/urandom e6454386bfce38efb5987dd06cb3b21d
+ /etc/default/devpts fc857c5ac5fb84d80720ed4d1c624f6e
+ /etc/default/halt 18d9844cf8ca8608e2a559a4555e593a
+ /etc/default/rcS db3696fc6caa33a1d72b33fa3cec7c42
+Description: scripts for initializing and shutting down the system
+ The scripts in this package initialize a standard Debian
+ system at boot time and shut it down at halt or reboot time.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libblkid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 254
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: util-linux
+Version: 2.20.1-5.1ubuntu20
+Depends: libc6 (>= 2.7), libuuid1 (>= 2.16)
+Pre-Depends: multiarch-support
+Conffiles:
+ /etc/blkid.conf 7f4c49e01e0a23d2f4b20eeb32e95abb
+Description: block device id library
+ The blkid library which allows system programs like fsck and
+ mount to quickly and easily find block devices by filesystem UUID and
+ LABEL. This allows system administrators to avoid specifying
+ filesystems by hard-coded device names, but via a logical naming
+ system instead.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libss2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 110
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: e2fsprogs
+Version: 1.42.9-3ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: libcomerr2, libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: command-line interface parsing library
+ libss provides a simple command-line interface parser which will
+ accept input from the user, parse the command into an argv argument
+ vector, and then dispatch it to a handler function.
+ .
+ It was originally inspired by the Multics SubSystem library.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: libsemanage-common
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 56
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: libsemanage
+Version: 2.2-1ubuntu1
+Replaces: libsemanage1 (<= 2.0.41-1), libsemanage1-dev (<< 2.1.6-3~)
+Breaks: libsemanage1 (<= 2.0.41-1), libsemanage1-dev (<< 2.1.6-3~)
+Conffiles:
+ /etc/selinux/semanage.conf e69d42a4d98a93c3b8e201bdda367c55
+Description: Common files for SELinux policy management libraries
+ This package provides the common files used by the shared libraries
+ for SELinux policy management.
+ .
+ Security-enhanced Linux is a patch of the Linux kernel and a
+ number of utilities with enhanced security functionality designed to
+ add mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement, Role-based Access
+ Control, and Multi-level Security.
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+Homepage: http://userspace.selinuxproject.org/
+
+Package: libpam-modules-bin
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 212
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: pam
+Version: 1.1.8-1ubuntu2
+Replaces: libpam-modules (<< 1.1.3-8)
+Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.4), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32)
+Description: Pluggable Authentication Modules for PAM - helper binaries
+ This package contains helper binaries used by the standard set of PAM
+ modules in the libpam-modules package.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: findutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 668
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 4.4.2-8
+Pre-Depends: libc6 (>= 2.17)
+Suggests: mlocate | locate
+Description: utilities for finding files--find, xargs
+ GNU findutils provides utilities to find files meeting specified
+ criteria and perform various actions on the files which are found.
+ This package contains 'find' and 'xargs'; however, 'locate' has
+ been split off into a separate package.
+Original-Maintainer: Andreas Metzler <ametzler@debian.org>
+Homepage: http://savannah.gnu.org/projects/findutils/
+
+Package: e2fsprogs
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2424
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.42.9-3ubuntu1
+Replaces: hurd (<= 20040301-1), libblkid1 (<< 1.38+1.39-WIP-2005.12.10-2), libuuid1 (<< 1.38+1.39-WIP-2005.12.10-2)
+Pre-Depends: e2fslibs (= 1.42.9-3ubuntu1), libblkid1 (>= 2.17.2), libc6 (>= 2.11), libcomerr2 (>= 1.42~WIP-2011-10-05-1), libss2 (>= 1.34-1), libuuid1 (>= 2.16), util-linux (>= 2.15~rc1-1)
+Suggests: gpart, parted, e2fsck-static
+Conflicts: dump (<< 0.4b4-4), initscripts (<< 2.85-4), quota (<< 1.55-8.1), sysvinit (<< 2.85-4)
+Conffiles:
+ /etc/mke2fs.conf e2cdbf0620e93949af5857eb4739f949
+Description: ext2/ext3/ext4 file system utilities
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package contains programs for creating, checking, and maintaining
+ ext2/3/4-based file systems. It also includes the "badbocks" program,
+ which can be used to scan for bad blocks on a disk or other storage device.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: liblzma5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 316
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: xz-utils
+Version: 5.1.1alpha+20120614-2ubuntu2
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: XZ-format compression library
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.)
+Homepage: http://tukaani.org/xz/
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+
+Package: libnih1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 147
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libnih
+Version: 1.0.3-4ubuntu25
+Pre-Depends: multiarch-support, libc6 (>= 2.15~)
+Description: NIH Utility Library
+ libnih is a light-weight "standard library" of C functions to ease the
+ development of other libraries and applications, especially those
+ normally found in /lib.
+ .
+ This package contains the shared library.
+Homepage: https://launchpad.net/libnih
+Original-Maintainer: Scott James Remnant <scott@netsplit.com>
+
+Package: libaudit1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 143
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: audit
+Version: 1:2.3.2-2ubuntu1
+Depends: libaudit-common (= 1:2.3.2-2ubuntu1), libc6 (>= 2.8)
+Pre-Depends: multiarch-support
+Description: Dynamic library for security auditing
+ The audit-libs package contains the dynamic libraries needed for
+ applications to use the audit framework. It is used to monitor systems for
+ security related events.
+Homepage: http://people.redhat.com/sgrubb/audit/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libdb5.3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1788
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: db5.3
+Version: 5.3.28-3ubuntu3
+Depends: libc6 (>= 2.17)
+Pre-Depends: multiarch-support
+Description: Berkeley v5.3 Database Libraries [runtime]
+ This is the runtime package for programs that use the v5.3 Berkeley
+ database library.
+Homepage: http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Original-Maintainer: Debian Berkeley DB Group <pkg-db-devel@lists.alioth.debian.org>
+
+Package: insserv
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 182
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Version: 1.14.0-5ubuntu2
+Depends: libc6 (>= 2.7)
+Suggests: bootchart2
+Breaks: sysv-rc (<< 2.87dsf-3)
+Conffiles:
+ /etc/insserv.conf 3e9467113029a6356f57842085f3c849
+ /etc/bash_completion.d/insserv 32975fe14795d6fce1408d5fd22747fd
+Description: boot sequence organizer using LSB init.d script dependency information
+ The insserv program is used by the standard SysV-based init system. It
+ updates the order of symlinks in /etc/rc?.d/ based on dependencies
+ specified by LSB headers in the init.d scripts themselves.
+ .
+ These declared relations between scripts make it possible to optimize
+ the boot sequence for the currently installed set of packages, while
+ detecting and rejecting dependency loops.
+ .
+ Using insserv incorrectly can result in an unbootable system.
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Petter Reinholdtsen <pere@debian.org>
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 6327
+Origin: debian
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: i386
+Multi-Arch: foreign
+Version: 1.17.9ubuntu1
+Replaces: manpages-it (<< 2.80-4)
+Pre-Depends: libbz2-1.0, libc6 (>= 2.11), liblzma5 (>= 5.1.1alpha+20120614), libselinux1 (>= 2.1.0), zlib1g (>= 1:1.1.4), tar (>= 1.23)
+Suggests: apt
+Breaks: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.15.8), libdpkg-perl (<< 1.15.8)
+Conflicts: ada-reference-manual (<< 20021112web-4), asn1-mode (<< 2.7-7), bogosort (<< 0.4.2-3), cl-yacc (<< 0.3-3), cpp-4.1-doc (<< 4.1.2.nf2-4), cpp-4.2-doc (<< 4.2.4.nf1-4), gcc-4.1-doc (<< 4.1.2.nf2-4), gcc-4.2-doc (<< 4.2.4.nf1-4), gcj-4.1-doc (<< 4.1.2.nf2-4), gcj-4.2-doc (<< 4.2.4.nf1-4), gfortran-4.1-doc (<< 4.1.2.nf2-4), gfortran-4.2-doc (<< 4.2.4.nf1-4), ggz-docs (<< 0.0.14.1-2), glame (<< 2.0.1-6), gnat-4.1-doc (<< 4.1.2.nf2-4), gnat-4.2-doc (<< 4.2.4.nf1-4), gtalk (<< 0.99.10-16), libalogg-dev (<< 1.3.7-2), libgtk1.2-doc (<< 1.2.10-19), libnettle-dev (<< 2), liborbit-dev (<< 0.5.17-12), libreadline5-dev (<< 5.2-8), librep-doc (<< 0.90), mmucl (<< 1.5.2-3), nxml-mode (<< 20041004-9), r6rs-doc (<< 1.0-2), serveez-doc (<< 0.1.5-3), slat (<< 2.0-6), texlive-base-bin-doc (<< 2007.dfsg.2-9), ttcn-el (<< 0.6.9-2), ulog-acctd (<< 0.4.3-3), xconq-doc (<< 7.4.1-5), zenirc (<< 2.112.dfsg-1)
+Conffiles:
+ /etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
+ /etc/logrotate.d/dpkg 782ea5ae536f67ff51dc8c3e2eeb4cf9
+ /etc/dpkg/dpkg.cfg f4413ffb515f8f753624ae3bb365b81b
+ /etc/cron.daily/dpkg 2712ab0dc801324ea632a0f1f82cd38c
+Description: Debian package management system
+ This package provides the low-level infrastructure for handling the
+ installation and removal of Debian software packages.
+ .
+ For Debian package development tools, install dpkg-dev.
+Homepage: https://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: libpcre3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 595
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: pcre3
+Version: 1:8.31-5ubuntu1
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Breaks: approx (<< 4.4-1~), cduce (<< 0.5.3-2~), cmigrep (<< 1.5-7~), galax (<< 1.1-7~), libpcre-ocaml (<< 6.0.1~), liquidsoap (<< 0.9.2-3~), ocsigen (<< 1.3.3-1~)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+ This is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Mark Baker <mark@mnb.org.uk>
+
+Package: libncursesw5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 378
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Depends: libtinfo5 (= 5.9+20140118-1ubuntu1), libc6 (>= 2.15)
+Pre-Depends: multiarch-support
+Recommends: libgpm2
+Description: shared libraries for terminal handling (wide character support)
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared libraries necessary to run programs
+ compiled with ncursesw, which includes support for wide characters.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: busybox-initramfs
+Status: install ok installed
+Priority: optional
+Section: shells
+Installed-Size: 357
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Source: busybox
+Version: 1:1.22.0-5ubuntu1
+Depends: libc6 (>= 2.11)
+Description: Standalone shell setup for initramfs
+ BusyBox combines tiny versions of many common UNIX utilities into a single
+ small executable. It provides minimalist replacements for the most common
+ utilities you would usually find on your desktop system (i.e., ls, cp, mv,
+ mount, tar, etc.). The utilities in BusyBox generally have fewer options than
+ their full-featured GNU cousins; however, the options that are included
+ provide the expected functionality and behave very much like their GNU
+ counterparts.
+ .
+ busybox-initramfs provides a simple stand alone shell that provides
+ only the basic utilities needed for the initramfs.
+Homepage: http://www.busybox.net
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: bzip2
+Version: 1.0.6-5
+Depends: libc6 (>= 2.4)
+Pre-Depends: multiarch-support
+Description: high-quality block-sorting file compressor library - runtime
+ This package contains libbzip2 which is used by the bzip2 compressor.
+ .
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: libtinfo5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 433
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: ncurses
+Version: 5.9+20140118-1ubuntu1
+Replaces: libncurses5 (<< 5.9-3)
+Depends: libc6 (>= 2.15)
+Pre-Depends: multiarch-support
+Breaks: dialog (<< 1.2-20130523)
+Description: shared low-level terminfo library for terminal handling
+ The ncurses library routines are a terminal-independent method of
+ updating character screens with reasonable optimization.
+ .
+ This package contains the shared low-level terminfo library.
+Homepage: http://invisible-island.net/ncurses/
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: sysvinit-utils
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 232
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: sysvinit
+Version: 2.88dsf-41ubuntu6
+Replaces: last, sysvinit (<= 2.86.ds1-65)
+Depends: libc6 (>= 2.15), libselinux1 (>= 1.32), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: bootlogd, sash
+Breaks: upstart (<< 1.5-0ubuntu5)
+Conflicts: chkconfig (<< 11.0-79.1-2), last, sysvconfig
+Conffiles:
+ /etc/init/startpar-bridge.conf d220afa75514468471c42469967341d2
+Description: System-V-like utilities
+ This package contains the important System-V-like utilities.
+ .
+ Specifically, this package includes:
+ killall5, last, lastb, mesg, pidof, service, sulogin
+Homepage: http://savannah.nongnu.org/projects/sysvinit
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: multiarch-support
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 201
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: eglibc
+Version: 2.19-0ubuntu6
+Depends: libc6 (>= 2.13-5)
+Description: Transitional package to ensure multiarch compatibility
+ This is a transitional package used to ensure multiarch support is present
+ in ld.so before unpacking libraries to the multiarch directories. It can
+ be removed once nothing on the system depends on it.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libjson0
+Status: install ok installed
+Priority: extra
+Section: oldlibs
+Installed-Size: 29
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: json-c
+Version: 0.11-4ubuntu1
+Depends: libjson-c2
+Description: JSON manipulation library (transitional package)
+ This is a transition package that can be safely removed once no
+ package depend on it.
+Homepage: https://github.com/json-c/json-c/wiki
+Original-Maintainer: fabien boucher <fabien.dot.boucher@gmail.com>
+
+Package: libnih-dbus1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 65
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libnih
+Version: 1.0.3-4ubuntu25
+Depends: libnih1 (= 1.0.3-4ubuntu25), libc6 (>= 2.3.4), libdbus-1-3 (>= 1.2.16)
+Pre-Depends: multiarch-support
+Description: NIH D-Bus Bindings Library
+ libnih-dbus is a D-Bus bindings library that integrates with the main
+ loop provided by libnih.
+ .
+ This package contains the shared library.
+Homepage: https://launchpad.net/libnih
+Original-Maintainer: Scott James Remnant <scott@netsplit.com>
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 192
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libselinux
+Version: 2.2.2-1ubuntu1
+Depends: libc6 (>= 2.8), libpcre3
+Pre-Depends: multiarch-support
+Description: SELinux runtime shared libraries
+ This package provides the shared libraries for Security-enhanced
+ Linux that provides interfaces (e.g. library functions for the
+ SELinux kernel APIs like getcon(), other support functions like
+ getseuserbyname()) to SELinux-aware applications. Security-enhanced
+ Linux is a patch of the Linux kernel and a number of utilities with
+ enhanced security functionality designed to add mandatory access
+ controls to Linux. The Security-enhanced Linux kernel contains new
+ architectural components originally developed to improve the security
+ of the Flask operating system. These architectural components provide
+ general support for the enforcement of many kinds of mandatory access
+ control policies, including those based on the concepts of Type
+ Enforcement, Role-based Access Control, and Multi-level Security.
+ .
+ libselinux1 provides an API for SELinux applications to get and set
+ process and file security contexts and to obtain security policy
+ decisions. Required for any applications that use the SELinux
+ API. libselinux may use the shared libsepol to manipulate the binary
+ policy if necessary (e.g. to downgrade the policy format to an older
+ version supported by the kernel) when loading policy.
+Homepage: http://userspace.selinuxproject.org/
+Original-Maintainer: Debian SELinux maintainers <selinux-devel@lists.alioth.debian.org>
+
+Package: libaudit-common
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 44
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Multi-Arch: foreign
+Source: audit
+Version: 1:2.3.2-2ubuntu1
+Replaces: libaudit0, libaudit1 (<< 1:2.2.1-2)
+Breaks: libaudit0, libaudit1 (<< 1:2.2.1-2)
+Conffiles:
+ /etc/libaudit.conf cdc703f9d27f0d980271a9e95d0f18b2
+Description: Dynamic library for security auditing - common files
+ The audit-libs package contains the dynamic libraries needed for
+ applications to use the audit framework. It is used to monitor systems for
+ security related events.
+ .
+ This package contains the libaudit.conf configuration file and the associated
+ manpage.
+Homepage: http://people.redhat.com/sgrubb/audit/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 9254
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: eglibc
+Version: 2.19-0ubuntu6
+Replaces: libc6-i386, libc6-xen
+Provides: glibc-2.19-1, libc6-i686, libc6-xen
+Depends: libgcc1
+Suggests: glibc-doc, debconf | debconf-2.0, locales
+Breaks: hurd (<< 1:0.5.git20140203-1), nscd (<< 2.19)
+Conflicts: libc6-xen, prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/i686-linux-gnu.conf 1c63da36f33ec6647af1d8faff9b9795
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libpng12-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 308
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: same
+Source: libpng
+Version: 1.2.50-1ubuntu2
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Pre-Depends: multiarch-support
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+ libpng is a library implementing an interface for reading and writing
+ PNG (Portable Network Graphics) format files.
+ .
+ This package contains the runtime library files needed to run software
+ using libpng.
+Homepage: http://libpng.org/pub/png/libpng.html
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: udev
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 5119
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Source: systemd
+Version: 204-10ubuntu1
+Depends: libacl1 (>= 2.2.51-8), libblkid1 (>= 2.19.1), libc6 (>= 2.17), libcgmanager0, libdbus-1-3 (>= 1.0.2), libkmod2 (>= 5~), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libselinux1 (>= 2.0.65), libudev1 (= 204-10ubuntu1), sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16), lsb-base (>= 3.0-6), util-linux (>= 2.16), procps
+Pre-Depends: debconf (>= 1.4.69) | debconf-2.0
+Breaks: consolekit (<< 0.4.6-1)
+Conffiles:
+ /etc/udev/udev.conf ae415f84e2967eff580089fb08aa0a61
+ /etc/init.d/udev b1cab2570af69ccbf49a208799af6247
+ /etc/init.d/udev-finish 6eac2544228b88cbe8cede182082f46a
+ /etc/init/udev-fallback-graphics.conf b8bfe7164e10cd0e53494b243c5728b1
+ /etc/init/udevtrigger.conf 651ff2421dde80be7ce7ccbf7fa8cf18
+ /etc/init/udev-finish.conf 5c953c5b98ccfbb2a02985bfa2f80aed
+ /etc/init/udev.conf 41c0081f3a830e0902aaff76a53edf98
+ /etc/init/udevmonitor.conf b541dfb5aa4958e9a5336ecaec00ca15
+ /etc/modprobe.d/fbdev-denylist.conf 01cd03c88ce6821c03baf904f7dfcbd0
+ /etc/udev/rules.d/README 3b6de9f3f911176734c66903b4f8735c obsolete
+Description: /dev/ and hotplug management daemon
+ udev is a daemon which dynamically creates and removes device nodes from
+ /dev/, handles hotplug events and loads drivers at boot time.
+Homepage: http://www.freedesktop.org/wiki/Software/systemd
+Original-Maintainer: Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
+
+Package: util-linux
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1554
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.20.1-5.1ubuntu20
+Replaces: e2fsprogs, fdisk, fstrim, linux32, miscutils, schedutils, setterm, sparc-utils
+Provides: linux32, schedutils
+Depends: lsb-base (>= 3.0-6), tzdata (>= 2006c-2), dpkg (>= 1.15.4) | install-info, debconf (>= 0.5) | debconf-2.0, sysv-rc (>= 2.88dsf-24) | file-rc (>= 0.8.16)
+Pre-Depends: libblkid1 (>= 2.20.1), libc6 (>= 2.15), libncurses5 (>= 5.5-5~), libselinux1 (>= 1.32), libslang2 (>= 2.2.4), libtinfo5, libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: util-linux-locales, kbd | console-tools, dosfstools
+Conflicts: console-tools (<< 1:0.2.3-21), fdisk, fstrim, kbd (<< 1.05-3), linux32, schedutils, setterm
+Conffiles:
+ /etc/cron.weekly/fstrim 4de5cd1aac392609593296f0d81e7595
+ /etc/init/hwclock.conf 132aa3db7e5a8cf55168e4866052208a
+ /etc/init/hwclock-save.conf 4a002046525e338fc23e4418602865c9
+Description: Miscellaneous system utilities
+ This package contains a number of important utilities, most of which
+ are oriented towards maintenance of your system. Some of the more
+ important utilities included in this package allow you to partition
+ your hard disk, view kernel messages, and create new filesystems.
+Homepage: http://userweb.kernel.org/~kzak/util-linux/
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: cpio
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 312
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: i386
+Multi-Arch: foreign
+Version: 2.11+dfsg-2ubuntu1
+Replaces: cpio-mt
+Depends: libc6 (>= 2.17)
+Suggests: libarchive1
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Description: GNU cpio -- a program to manage archives of files
+ GNU cpio is a tool for creating and extracting archives, or copying
+ files from one place to another. It handles a number of cpio formats
+ as well as reading and writing tar files.
+Homepage: http://www.gnu.org/software/cpio/
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
diff --git a/test/integration/status-github-23-too-long-dependency-line b/test/integration/status-github-23-too-long-dependency-line
new file mode 100644
index 0000000..7378c99
--- /dev/null
+++ b/test/integration/status-github-23-too-long-dependency-line
@@ -0,0 +1,12 @@
+Package: network-manager-strongswan
+Status: install ok installed
+Priority: extra
+Section: net
+Installed-Size: 256
+Maintainer: Jean-Christophe Manciot <manciot.jeanchristophe@gmail.com>
+Architecture: amd64
+Version: 1.3.1-14
+Provides: network-manager-strongswan
+Depends: libart-2.0-2, libatk1.0-0, libavahi-client3, libavahi-common3, libavahi-glib1, libbonobo2-0, libbonoboui2-0, libc6, libcairo2, libcanberra0, libdatrie1, libdbus-1-3, libdbus-glib-1-2, libexpat1, libffi6, libfontconfig1, libfreetype6, libgail18, libgconf-2-4, libgcrypt20, libgdk-pixbuf2.0-0, libglib2.0-0, libglib2.0-0-dbg, libglib2.0-0-refdbg, libgmp10, libgnome-2-0, libgnomecanvas2-0, libgnome-keyring0, libgnomeui-0, libgnomevfs2-0, libgnutls30, libgpg-error0, libgraphite2-3, libgtk2.0-0, libharfbuzz0b, libhogweed4, libice6, libidn11, libltdl7, liblzma5, libnettle6, libnm-glib-vpn1, libnm-util2, libogg0, liborbit-2-0, libp11-kit0, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng12-0, libpopt0, libselinux1, libsm6, libsystemd0, libtasn1-6, libtdb1, libthai0, libuuid1, libvorbis0a, libvorbisfile3, libx11-6, libxau6, libxcb1, libxcb-render0, libxcb-shm0, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxml2, libxrandr2, libxrender1, zlib1g
+Description: This package provides an IKEv2 IPSec VPN plugin for strongswan
+Description-md5: 31abf1e375284c7ee36f25bf936125f1
diff --git a/test/integration/status-ubuntu-bug-614993 b/test/integration/status-ubuntu-bug-614993
new file mode 100644
index 0000000..1e95b51
--- /dev/null
+++ b/test/integration/status-ubuntu-bug-614993
@@ -0,0 +1,5894 @@
+Package: xserver-xorg-input-vmmouse
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 176
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:12.6.5-4ubuntu2
+Replaces: mdetect (<< 0.5.2.2), xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900), xserver-xorg-input-mouse, udev
+Description: X.Org X server -- VMMouse input driver to use with VMWare
+ This package provides the driver for the X11 vmmouse input device.
+ .
+ The VMMouse driver enables support for the special VMMouse protocol
+ that is provided by VMware virtual machines to give absolute pointer
+ positioning.
+ .
+ The vmmouse driver is capable of falling back to the standard "mouse"
+ driver if a VMware virtual machine is not detected. This allows for
+ dual-booting of an operating system from a virtual machine to real hardware
+ without having to edit xorg.conf every time.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-vmmouse driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libtext-wrapi18n-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 0.06-7
+Depends: libtext-charwidth-perl
+Description: internationalized substitute of Text::Wrap
+ This module is a substitution for Text::Wrap, supporting
+ multibyte characters such as UTF-8, EUC-JP, and GB2312, fullwidth
+ characters such as east Asian characters, combining characters
+ such as diacritical marks and Thai, and languages which don't
+ use whitespaces between words such as Chinese and Japanese.
+ .
+ It provides wrap().
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::WrapI18N
+
+Package: debconf
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 924
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Version: 1.5.28ubuntu4
+Replaces: debconf-tiny
+Provides: debconf-2.0
+Depends: debconf-i18n | debconf-english
+Pre-Depends: perl-base (>= 5.6.1-4)
+Recommends: apt-utils (>= 0.5.1)
+Suggests: debconf-doc, debconf-utils, whiptail | dialog | gnome-utils, libterm-readline-gnu-perl, libgnome2-perl, libnet-ldap-perl, perl
+Conflicts: apt (<< 0.3.12.1), cdebconf (<< 0.96), debconf-tiny, debconf-utils (<< 1.3.22), dialog (<< 0.9b-20020814-1), menu (<= 2.1.3-1), whiptail (<< 0.51.4-11), whiptail-utf8 (<= 0.50.17-13)
+Conffiles:
+ /etc/apt/apt.conf.d/70debconf 7e9d09d5801a42b4926b736b8eeabb73
+ /etc/bash_completion.d/debconf 8fa1862734fbe54d7178aaaa419f5a11
+ /etc/debconf.conf 8c0619be413824f1fc7698cee0f23811
+Description: Debian configuration management system
+ Debconf is a configuration management system for debian packages. Packages
+ use Debconf to ask questions when they are installed.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+Python-Version: 2.6, 3.1
+
+Package: xserver-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 172
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: xorg-server
+Version: 2:1.7.6-2ubuntu7
+Replaces: xserver-xorg-core (<< 2:1.5.2)
+Depends: x11-common, xkb-data, x11-xkb-utils
+Recommends: xfonts-base
+Description: common files used by various X servers
+ This package provides files necessary for all X.Org based X servers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: dash
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.5.5.1-3ubuntu2
+Depends: debianutils (>= 2.15), dpkg (>= 1.15.0)
+Pre-Depends: libc6 (>= 2.11)
+Description: POSIX-compliant shell
+ The Debian Almquist Shell (dash) is a POSIX-compliant shell derived
+ from ash.
+ .
+ Since it executes scripts faster than bash, and has fewer library
+ dependencies (making it more robust against software or hardware
+ failures), it is used as the default system shell on Debian systems.
+Homepage: http://gondor.apana.org.au/~herbert/dash/
+Original-Maintainer: Gerrit Pape <pape@smarden.org>
+
+Package: libmpfr1ldbl
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 656
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: mpfr
+Version: 2.4.2-3ubuntu1
+Replaces: libmpfr1
+Depends: libgmp3c2 (>= 4.2.dfsg-1), libc6 (>= 2.4)
+Conflicts: libgmp3 (<< 4.1.4-3), libmpfr1
+Description: multiple precision floating-point computation
+ MPFR provides a library for multiple-precision floating-point computation
+ with correct rounding. The computation is both efficient and has a
+ well-defined semantics. It copies the good ideas from the
+ ANSI/IEEE-754 standard for double-precision floating-point arithmetic
+ (53-bit mantissa).
+ .
+ The home page is http://www.mpfr.org/.
+Homepage: http://www.mpfr.org/
+Original-Maintainer: Laurent Fousse <laurent@komite.net>
+
+Package: libxdmcp6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxdmcp
+Version: 1:1.0.3-1
+Depends: libc6 (>= 2.4)
+Description: X11 Display Manager Control Protocol library
+ This package provides the main interface to the X11 display manager control
+ protocol library, which allows for remote logins to display managers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libgl1-mesa-dri
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 37216
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: xlibmesa-dri (<< 1:7.0.0)
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.15), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.3.1), libexpat1 (>= 1.95.8)
+Suggests: libglide3
+Breaks: libgl1-mesa-glx (<< 7.2), xserver-xorg-core (<< 2:1.5)
+Conflicts: xlibmesa-dri (<< 1:7.0.0)
+Description: A free implementation of the OpenGL API -- DRI modules
+ This version of Mesa provides GLX and DRI capabilities: it is capable of
+ both direct and indirect rendering. For direct rendering, it can use DRI
+ modules from the libgl1-mesa-dri package to accelerate drawing.
+ .
+ This package does not include the OpenGL library itself, only the DRI
+ modules for accelerating direct rendering.
+ .
+ For a complete description of Mesa, please look at the
+ libgl1-mesa-swx11 package.
+ .
+ The tdfx DRI module needs libglide3 to enable direct rendering.
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: coreutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 12992
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.4-2ubuntu2
+Replaces: mktemp
+Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.11), libselinux1 (>= 1.32)
+Description: The GNU core utilities
+ This package contains the essential basic system utilities.
+ .
+ Specifically, this package includes:
+ basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir
+ dircolors dirname du echo env expand expr factor false fmt fold groups head
+ hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp
+ mv nice nl nohup od paste pathchk pinky pr printenv printf ptx pwd readlink
+ rm rmdir sha1sum seq shred sleep sort split stat stty sum sync tac tail tee
+ test touch tr true tsort tty uname unexpand uniq unlink users vdir wc who
+ whoami yes
+Original-Maintainer: Michael Stone <mstone@debian.org>
+
+Package: libfreetype6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 796
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: freetype
+Version: 2.3.11-1ubuntu2
+Depends: libc6 (>= 2.4), zlib1g (>= 1:1.1.4)
+Conflicts: freetype, xpdf-reader (<< 1.00-4)
+Description: FreeType 2 font engine, shared library files
+ The FreeType project is a team of volunteers who develop free,
+ portable and high-quality software solutions for digital typography.
+ They specifically target embedded systems and focus on bringing small,
+ efficient and ubiquitous products.
+ .
+ The FreeType 2 library is their new software font engine. It has been
+ designed to provide the following important features:
+ * A universal and simple API to manage font files
+ * Support for several font formats through loadable modules
+ * High-quality anti-aliasing
+ * High portability & performance
+ .
+ Supported font formats include:
+ * TrueType files (.ttf) and collections (.ttc)
+ * Type 1 font files both in ASCII (.pfa) or binary (.pfb) format
+ * Type 1 Multiple Master fonts. The FreeType 2 API also provides
+ routines to manage design instances easily
+ * Type 1 CID-keyed fonts
+ * OpenType/CFF (.otf) fonts
+ * CFF/Type 2 fonts
+ * Adobe CEF fonts (.cef), used to embed fonts in SVG documents with
+ the Adobe SVG viewer plugin.
+ * Windows FNT/FON bitmap fonts
+ .
+ This package contains the files needed to run programs that use the
+ FreeType 2 library.
+ .
+ Home Page: http://www.freetype.org/
+ Authors: David Turner <david.turner@freetype.org>
+ Robert Wilhelm <robert.wilhelm@freetype.org>
+ Werner Lemberg <werner.lemberg@freetype.org>
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: debianutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 3.2.2
+Depends: sensible-utils
+Pre-Depends: libc6 (>= 2.7)
+Description: Miscellaneous utilities specific to Debian
+ This package provides a number of small utilities which are used
+ primarily by the installation scripts of Debian packages, although
+ you may use them directly.
+ .
+ The specific utilities included are: installkernel run-parts
+ savelog tempfile which.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libxmuu1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxmu
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.4), libx11-6
+Description: X11 miscellaneous micro-utility library
+ libXmuu provides a set of miscellaneous utility convenience functions for X
+ libraries to use. It is a lighter version of libXmu that does not depend
+ on libXt or libXext; for more information on libXmu, see libxmu6.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXmu
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: initramfs-tools
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 432
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: all
+Version: 0.92bubuntu78
+Provides: linux-initramfs-tool
+Depends: initramfs-tools-bin (= 0.92bubuntu78), klibc-utils (>= 1.5.9-1), busybox-initramfs (>= 1:1.13.3-1ubuntu5), cpio, module-init-tools, udev (>= 147~-5), findutils (>= 4.2.24), util-linux (>> 2.15~rc1)
+Breaks: mountall (<< 2.0~)
+Conflicts: usplash (<< 0.5.50)
+Conffiles:
+ /etc/initramfs-tools/initramfs.conf eec5dbb69cee0bc2894cbd36b36bb821
+ /etc/initramfs-tools/update-initramfs.conf 25099e2e0961298b2772355149f9810d
+Description: tools for generating an initramfs
+ This package contains tools to create and boot an initramfs for packaged 2.6
+ Linux kernel. The initramfs is a gzipped cpio archive. At boot time, the
+ kernel unpacks that archive into RAM, mounts and uses it as initial root file
+ system. The mounting of the real root file system occurs in early user space.
+ klibc provides utilities to setup root. Having the root on EVMS, MD, LVM2,
+ LUKS or NFS is also supported.
+ Any boot loader with initrd support is able to load an initramfs archive.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: makedev
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 2.3.1-89ubuntu1
+Depends: base-passwd (>= 3.0.4)
+Conflicts: udev (<= 0.024-7)
+Description: creates device files in /dev
+ The MAKEDEV executable is used to create device files, often in /dev.
+ .
+ Device files are special files through which applications can interact
+ with hardware.
+ .
+ This package is not necessary for most modern Linux systems, where the udev
+ subsystem provides a more dynamic mechanism for device file management.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: x11-xkb-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 524
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1
+Replaces: setxkbmap, xbase-clients (<= 1:7.2.ds2-3), xkbcomp, xkbevd, xkbprint, xkbutils
+Depends: libc6 (>= 2.7), libx11-6, libxaw7, libxkbfile1, libxmu6, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: setxkbmap, xkbcomp, xkbevd, xkbprint, xkbutils
+Description: X11 XKB utilities
+ xkbutils contains a number of client-side utilities for XKB, the X11
+ keyboard extension.
+ .
+ setxkbmap is a tool to query and change the current XKB map.
+ .
+ xkbbell generates a bell event through the keyboard.
+ .
+ xkbcomp is a tool to compile XKB definitions into map files the server
+ can use.
+ .
+ xkbevd is an experimental tool to listen for certain XKB events and execute
+ defined triggers when actions occur.
+ .
+ xkbprint is a tool to generate an image with the physical representation
+ of the keyboard as XKB sees it.
+ .
+ xkbvleds shows the changing status of keyboard LEDs.
+ .
+ xkbwatch shows the changing status of modifiers and LEDs.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: login
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2384
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: shadow
+Version: 1:4.1.4.2-1ubuntu2
+Replaces: manpages-de (<< 0.5-3), manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Pre-Depends: libc6 (>= 2.7), libpam0g (>= 0.99.7.1), libpam-runtime, libpam-modules
+Conflicts: amavisd-new (<< 2.3.3-8), backupninja (<< 0.9.3-5), echolot (<< 2.1.8-4), gnunet (<< 0.7.0c-2), python-4suite (<< 0.99cvs20060405-1)
+Conffiles:
+ /etc/pam.d/login 837d7e3c52c5570b4e48d751cae9f8b0
+ /etc/pam.d/su 7309fb874571fe5447321b43448a50b3
+ /etc/login.defs 182bb938192636c8b62e3d4349de6f72
+ /etc/securetty 0ae2cda1645723f062be3abaf4331747
+Description: system login tools
+ These tools are required to be able to login and use your system. The
+ login program invokes your user shell and enables command execution. The
+ newgrp program is used to change your effective group ID (useful for
+ workgroup type situations). The su program allows changing your effective
+ user ID (useful being able to execute commands as another user).
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: gpgv
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 444
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnupg
+Version: 1.4.10-2ubuntu1
+Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6, zlib1g (>= 1:1.1.4)
+Suggests: gnupg
+Description: GNU privacy guard - signature verification tool
+ GnuPG is GNU's tool for secure communication and data storage.
+ .
+ gpgv is a stripped-down version of gnupg which is only able to check
+ signatures. It is smaller than the full-blown gnupg and uses a
+ different (and simpler) way to check that the public keys used to
+ make the signature are trustworthy.
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: libgmp3c2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 668
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gmp
+Version: 2:4.3.2+dfsg-1ubuntu1
+Replaces: libgmp3
+Depends: libc6 (>= 2.7)
+Conflicts: libgmp2 (<< 2.0.2-10), libgmp3
+Description: Multiprecision arithmetic library
+ GNU MP is a programmer's library for arbitrary precision
+ arithmetic (ie, a bignum package). It can operate on signed
+ integer, rational, and floating point numeric types.
+ .
+ It has a rich set of functions, and the functions have a regular
+ interface.
+Homepage: http://gmplib.org/
+Original-Maintainer: Debian Scientific Computing Team <pkg-scicomp-devel@lists.alioth.debian.org>
+
+Package: libdbus-1-3
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 348
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: dbus
+Version: 1.2.16-2ubuntu4
+Depends: libc6 (>= 2.4)
+Recommends: dbus
+Conflicts: dbus (<< 0.60)
+Description: simple interprocess messaging system
+ D-Bus is a message bus, used for sending messages between applications.
+ Conceptually, it fits somewhere in between raw sockets and CORBA in
+ terms of complexity.
+ .
+ D-Bus supports broadcast messages, asynchronous messages (thus
+ decreasing latency), authentication, and more. It is designed to be
+ low-overhead; messages are sent using a binary protocol, not using
+ XML. D-Bus also supports a method call mapping for its messages, but
+ it is not required; this makes using the system quite simple.
+ .
+ It comes with several bindings, including GLib, Python, Qt and Java.
+ .
+ The daemon can be found in the dbus package.
+Homepage: http://dbus.freedesktop.org/
+Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
+
+Package: module-init-tools
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 376
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 3.11.1-2ubuntu1
+Depends: libc6 (>= 2.8), upstart-job
+Breaks: initramfs-tools (<< 0.92bubuntu23)
+Conffiles:
+ /etc/depmod.d/ubuntu.conf 7c8439ef36b12e5f226b5dbfa20b8c2d
+ /etc/modprobe.d/denylist-ath_pci.conf d1da9bb08c2b0f56f3be93fd0e37946b
+ /etc/modprobe.d/denylist-firewire.conf cb8a4c10a5dddd1d67092198b1ae415f
+ /etc/modprobe.d/denylist-framebuffer.conf b46c9509180b5a76145f08be46b1aff5
+ /etc/modprobe.d/denylist-watchdog.conf 55327f9270c8a6257a833c4d127a39e1
+ /etc/modprobe.d/denylist.conf bc6754fa320733c6d239a4bb0148ffd7
+ /etc/init/module-init-tools.conf 48db1b767c3148fd83eba59d12fc9a5e
+Description: tools for managing Linux kernel modules
+ This package contains a set of programs for loading, inserting, and
+ removing kernel modules for Linux (versions 2.5.48 and above).
+
+Package: libgdbm3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gdbm
+Version: 1.8.3-9
+Depends: libc6 (>= 2.2.5), dpkg (>= 1.15.4) | install-info
+Description: GNU dbm database routines (runtime version)
+ GNU dbm ('gdbm') is a library of database functions that use extendible
+ hashing and works similarly to the standard UNIX 'dbm' functions.
+ .
+ The basic use of 'gdbm' is to store key/data pairs in a data file, thus
+ providing a persistent version of the 'dictionary' Abstract Data Type
+ ('hash' to perl programmers).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://directory.fsf.org/project/gdbm/
+
+Package: xserver-xorg-video-v4l
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.2.0-4
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-v4l
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-v4l
+Description: X.Org X server -- Video 4 Linux display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the Video For Linux interface. It does not provide a graphics chip
+ driver, but instead registers a number of generic Xv adaptors which can be
+ used with any graphics chipset driver.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-v4l driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libgcrypt11
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 560
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.4.4-5ubuntu2
+Depends: libc6 (>= 2.4), libgpg-error0 (>= 1.6)
+Suggests: rng-tools
+Description: LGPL Crypto library - runtime library
+ libgcrypt contains cryptographic functions. Many important free
+ ciphers, hash algorithms and public key signing algorithms have been
+ implemented:
+ arcfour, blowfish, cast5, DSA, DSA2, des, 3DES, elgamal, MD5, rijndael,
+ RMD160, RSA, SEED, SHA1, SHA-384, SHA-512, twofish, tiger.
+Homepage: http://directory.fsf.org/project/libgcrypt/
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-sis
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 664
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.10.2-2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sis
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-sis
+Description: X.Org X server -- SiS display driver
+ This package provides the driver for all SiS and XGI Volari cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-sis driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxinerama1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxinerama
+Version: 2:1.1-2
+Depends: libc6 (>= 2.2.5), libx11-6, libxext6
+Description: X11 Xinerama extension library
+ libXinerama provides an X Window System client interface to the XINERAMA
+ extension to the X protocol.
+ .
+ The Xinerama (also known as panoramiX) extension allows for multiple screens
+ attached to a single display to be treated as belonging together, and to give
+ desktop applications a better idea of the monitor layout.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXinerama
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: lzma
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 172
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.43-14ubuntu2
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)
+Description: Compression method of 7z format in 7-Zip program
+ LZMA is a compression algorithm, based on the famous Lempel Ziv
+ compression method.
+ .
+ The main characteristics of the algorithm are very good compression,
+ fast decompression, use of lot of RAM for compression and low usage of
+ RAM for decompression.
+ .
+ LZMA provides high compression ratio and very fast decompression, so it
+ is very suitable for embedded applications. For example, it can be used
+ for ROM (firmware) compression.
+ .
+ This package provides a gzip-like interface for the lzma program.
+Homepage: http://www.7-zip.org/sdk.htm
+Original-Maintainer: Mohammed Adnène Trojette <adn+deb@diwi.org>
+
+Package: libuuid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: passwd, libc6 (>= 2.4)
+Recommends: uuid-runtime
+Description: Universally Unique ID library
+ The libuuid library generates and parses 128-bit universally unique
+ ids (UUIDs). A UUID is an identifier that is unique across both
+ space and time, with respect to the space of all UUIDs. A UUID can
+ be used for multiple purposes, from tagging objects with an extremely
+ short lifetime, to reliably identifying very persistent objects
+ across a network.
+ .
+ See RFC 4122 for more information.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libtasn1-3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.4-1
+Depends: libc6 (>= 2.4)
+Conflicts: libtasn1-2 (= 0.3.1-1)
+Description: Manage ASN.1 structures (runtime)
+ Manage ASN1 (Abstract Syntax Notation One) structures.
+ The main features of this library are:
+ * on-line ASN1 structure management that doesn't require any C code
+ file generation.
+ * off-line ASN1 structure management with C code file generation
+ containing an array.
+ * DER (Distinguish Encoding Rules) encoding
+ * no limits for INTEGER and ENUMERATED values
+ .
+ This package contains runtime libraries.
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Homepage: http://www.gnu.org/software/libtasn1/
+
+Package: lsb-base
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 84
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: lsb
+Version: 4.0-0ubuntu8
+Replaces: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Depends: sed, ncurses-bin
+Conflicts: lsb (<< 2.0-6), lsb-core (<< 2.0-6)
+Conffiles:
+ /etc/lsb-base-logging.sh 5126106e3af09b522cdbd5e4685942af
+Description: Linux Standard Base 4.0 init script functionality
+ The Linux Standard Base (http://www.linuxbase.org/) is a standard
+ core system that third-party applications written for Linux can
+ depend upon.
+ .
+ This package only includes the init-functions shell library, which
+ may be used by other packages' initialization scripts for console
+ logging and other purposes.
+Homepage: http://www.linux-foundation.org/en/LSB
+Original-Maintainer: Chris Lawrence <lawrencc@debian.org>
+
+Package: libcurl3-gnutls
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 440
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: curl
+Version: 7.19.7-1ubuntu1
+Replaces: libcurl4-gnutls
+Depends: libc6 (>= 2.7), libgcrypt11 (>= 1.4.2), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7dfsg~beta1), libidn11 (>= 1.13), libldap-2.4-2 (>= 2.4.7), zlib1g (>= 1:1.1.4), ca-certificates
+Conflicts: libcurl4-gnutls
+Description: Multi-protocol file transfer library (GnuTLS)
+ libcurl is designed to be a solid, usable, reliable and portable
+ multi-protocol file transfer library.
+ .
+ SSL support is provided by GnuTLS.
+ .
+ This is the shared version of libcurl.
+Homepage: http://curl.haxx.se
+Original-Maintainer: Domenico Andreoli <cavok@debian.org>
+
+Package: cpp-4.4
+Status: install ok installed
+Priority: optional
+Section: interpreters
+Installed-Size: 9828
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.11), libgmp3c2, libmpfr1ldbl
+Suggests: gcc-4.4-locales (>= 4.4.3-1)
+Description: The GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: procps
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 808
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:3.2.8-1ubuntu4
+Replaces: bsdutils (<< 2.9x-1), watch
+Provides: watch
+Depends: libc6 (>= 2.4), libncurses5 (>= 5.6+20071006-3), upstart-job, lsb-base (>= 3.0-10)
+Recommends: psmisc
+Conflicts: libproc-dev (<< 1:1.2.6-2), pgrep (<< 3.3-5), procps-nonfree, w-bassman (<< 1.0-3), watch
+Conffiles:
+ /etc/sysctl.d/10-console-messages.conf 154f6f5c5810d10bb303fb6a8e907c6a
+ /etc/sysctl.d/10-network-security.conf 4ac7258f5336e7eeaf448c05ab668d3c
+ /etc/sysctl.d/10-zeropage.conf 8d7193abcc4dfedaf519dd03016a5e59
+ /etc/sysctl.d/README c20074b9b11a5202758c69d7bcb6996f
+ /etc/sysctl.conf 86b831bbed0a49bc7361ed64d6c09435
+ /etc/init/procps.conf 72d5354efb1017283c440cf102b5d74a
+Description: /proc file system utilities
+ These are utilities to browse the /proc filesystem, which is not a real file
+ system but a way for the kernel to provide information about the status of
+ entries in its process table. (e.g. running, stopped or "zombie")
+ Both command line and full screen utilities are provided. Ncurses is needed
+ for the full screen utilities. More information can be found at procps
+ website http://procps.sf.net/
+ .
+ This package includes the following utilities: top, uptime, tload,
+ free, vmstat, watch, skill, pmap, pgrep, slabtop and pwdx.
+Original-Maintainer: Craig Small <csmall@debian.org>
+
+Package: libgssapi-krb5-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 312
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.7), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5-3 (= 1.8.1+dfsg-2), libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Description: MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime library for the MIT Kerberos
+ implementation of GSS-API used by applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: python-minimal
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: python
+Installed-Size: 120
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: python-defaults
+Version: 2.6.5-0ubuntu1
+Replaces: python (<= 2.4-1)
+Depends: python2.6-minimal (>= 2.6.5), dpkg (>= 1.13.20)
+Recommends: python
+Conflicts: python (<= 2.4-1), python-central (<< 0.5.5)
+Description: A minimal subset of the Python language (default version)
+ This package contains the interpreter and some essential modules. It's used
+ in the boot process for some basic tasks.
+ See /usr/share/doc/python2.6-minimal/README.Debian for a list of the modules
+ contained in this package.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: ncurses-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 488
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Replaces: ncurses-term
+Provides: ncurses-runtime
+Depends: libncurses5
+Conflicts: ncurses, ncurses-runtime
+Conffiles:
+ /etc/terminfo/README 9d086188afcd9479ae96ff55dd6c1573
+Description: basic terminal type definitions
+ This package contains terminfo data files to support the most common types of
+ terminal, including ansi, dumb, linux, rxvt, screen, sun, vt100, vt102, vt220,
+ vt52, and xterm.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libpam0g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 272
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam0g-util
+Depends: libc6 (>= 2.8), debconf (>= 0.5) | debconf-2.0
+Suggests: libpam-doc
+Description: Pluggable Authentication Modules library
+ Contains the C shared library for Linux-PAM, a suite of shared
+ libraries that enable the local system administrator to choose how
+ applications authenticate users. In other words, without rewriting
+ or recompiling a PAM-aware application, it is possible to switch
+ between the authentication mechanism(s) it uses. One may entirely
+ upgrade the local authentication system without touching the
+ applications themselves.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: libusb-0.1-4
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libusb
+Version: 2:0.1.12-14
+Replaces: libusb0
+Depends: libc6 (>= 2.4)
+Conflicts: libccid (<< 0.9.2-3), libusb0
+Description: userspace USB programming library
+ Library for programming USB applications without the knowledge
+ of Linux kernel internals.
+Original-Maintainer: Aurelien Jarno <aurel32@debian.org>
+Homepage: http://www.linux-usb.org/
+
+Package: libgpg-error0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 236
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libgpg-error
+Version: 1.6-1ubuntu2
+Depends: libc6 (>= 2.2.5)
+Description: library for common error values and messages in GnuPG components
+ Library that defines common error values for all GnuPG
+ components. Among these are GPG, GPGSM, GPGME, GPG-Agent, libgcrypt,
+ pinentry, SmartCard Daemon and possibly more in the future.
+Original-Maintainer: Jose Carlos Garcia Sogo <jsogo@debian.org>
+
+Package: ucf
+Status: install ok installed
+Priority: standard
+Section: utils
+Installed-Size: 260
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.0025
+Depends: debconf (>= 1.5.19), coreutils (>= 5.91)
+Conffiles:
+ /etc/ucf.conf 5565b8b26108c49ba575ba452cd69b3e
+Description: Update Configuration File: preserve user changes to config files.
+ Debian policy mandates that user changes to configuration files must be
+ preserved during package upgrades. The easy way to achieve this behavior
+ is to make the configuration file a 'conffile', in which case dpkg
+ handles the file specially during upgrades, prompting the user as
+ needed.
+ .
+ This is appropriate only if it is possible to distribute a default
+ version that will work for most installations, although some system
+ administrators may choose to modify it. This implies that the
+ default version will be part of the package distribution, and must
+ not be modified by the maintainer scripts during installation (or at
+ any other time).
+ .
+ This script attempts to provide conffile-like handling for files that
+ may not be labelled conffiles, and are not shipped in a Debian package,
+ but handled by the postinst instead. This script allows one to
+ maintain files in /etc, preserving user changes and in general
+ offering the same facilities while upgrading that dpkg normally
+ provides for 'conffiles'.
+ .
+ Additionally, this script provides facilities for transitioning a
+ file that had not been provided with conffile-like protection to come
+ under this schema, and attempts to minimize questions asked at
+ installation time. Indeed, the transitioning facility is better than the
+ one offered by dpkg while transitioning a file from a non-conffile to
+ conffile status.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: perl-modules
+Status: deinstall ok config-files
+Priority: standard
+Section: perl
+Installed-Size: 15848
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: perl
+Version: 5.10.1-8ubuntu2
+Config-Version: 5.10.1-8ubuntu2
+Replaces: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libversion-perl, podlators-perl
+Provides: libansicolor-perl, libarchive-tar-perl, libattribute-handlers-perl, libautodie-perl, libcgi-pm-perl, libcpanplus-perl, libextutils-cbuilder-perl, libextutils-parsexs-perl, libfile-temp-perl, libi18n-langtags-perl, libio-zlib-perl, liblocale-codes-perl, liblocale-maketext-perl, liblocale-maketext-simple-perl, libmath-bigint-perl, libmodule-build-perl, libmodule-corelist-perl, libmodule-load-conditional-perl, libmodule-load-perl, libmodule-pluggable-perl, libnet-perl, libnet-ping-perl, libparams-check-perl, libparent-perl, libparse-cpan-meta-perl, libpod-escapes-perl, libpod-parser-perl, libpod-simple-perl, libtest-harness-perl, libtest-simple-perl, libthread-queue-perl, libversion-perl, podlators-perl
+Depends: perl (>= 5.10.1-1)
+Conflicts: libansicolor-perl (<< 1.10-1), libarchive-tar-perl (<< 1.52), libattribute-handlers-perl (<< 0.85), libautodie-perl (<< 2.06.01), libcgi-pm-perl (<< 3.43), libcpanplus-perl (<< 0.88), libextutils-cbuilder-perl (<< 0.2602), libextutils-parsexs-perl (<< 2.2002), libfile-temp-perl (<< 0.22), libi18n-langtags-perl (<< 0.35-1), libio-zlib-perl (<< 1.09), liblocale-codes-perl (<< 2.07), liblocale-maketext-perl (<< 1.13), liblocale-maketext-simple-perl (<< 0.18-1), libmath-bigint-perl (<< 1.89), libmodule-build-perl (<< 0.340201), libmodule-corelist-perl (<< 2.18), libmodule-load-conditional-perl (<< 0.30), libmodule-load-perl (<< 0.16), libmodule-pluggable-perl (<< 3.9), libnet-perl (<= 1:1.19-3), libnet-ping-perl (<< 2.36), libparams-check-perl (<< 0.26-1), libparent-perl (<< 0.221), libparse-cpan-meta-perl (<< 1.39), libpod-escapes-perl (<< 1.04), libpod-parser-perl (<< 1.37), libpod-simple-perl (<< 3.07), libtest-harness-perl (<< 3.17), libtest-simple-perl (<< 0.92), libthread-queue-perl (<< 2.11), libversion-perl (<< 1:0.7700), podlators-perl (<= 2.2.2-1)
+Conffiles:
+ /etc/perl/Net/libnet.cfg fb2946cae573b8ed3d654a180d458733
+Description: Core Perl modules
+ Architecture independent Perl modules. These modules are part of Perl and
+ required if the `perl' package is installed.
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+
+Package: bsdutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 208
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux (2.17.2-0ubuntu1)
+Version: 1:2.17.2-0ubuntu1
+Depends: libc6 (>= 2.7)
+Recommends: bsdmainutils
+Description: Basic utilities from 4.4BSD-Lite
+ This package contains the bare minimum number of BSD utilities needed
+ to boot a Debian system: logger, renice, script, scriptreplay, and wall.
+ The remaining standard BSD utilities are provided by bsdmainutils.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: xserver-xorg-video-apm
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 216
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-apm
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-apm
+Description: X.Org X server -- APM display driver
+ This package provides the driver for the Alliance Pro Motion family
+ of video cards; specifically, the 6420, 6422, AT24, AT25, and AT3D
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-apm driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: sensible-utils
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 0.0.1ubuntu3
+Replaces: debianutils (<= 2.32.3)
+Description: Utilities for sensible alternative selection
+ This package provides a number of small utilities which are used
+ by programs to sensibly select and spawn an appropriate browser,
+ editor, or pager.
+ .
+ The specific utilities included are: select-editor sensible-browser
+ sensible-editor sensible-pager
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: xserver-xorg-video-voodoo
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-voodoo
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-voodoo
+Description: X.Org X server -- Voodoo display driver
+ This package provides the driver for 3dfx Voodoo1 and Voodoo2 chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-voodoo driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxkbfile1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 204
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxkbfile
+Version: 1:1.0.6-1
+Depends: libc6 (>= 2.7), libx11-6
+Description: X11 keyboard file manipulation library
+ libxkbfile provides an interface to read and manipulate description files for
+ XKB, the X11 keyboard configuration extension.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libxkbfile
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: dpkg-dev
+Status: deinstall ok config-files
+Priority: optional
+Section: utils
+Installed-Size: 2068
+Origin: debian
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: all
+Source: dpkg
+Version: 1.15.5.6ubuntu4
+Config-Version: 1.15.5.6ubuntu4
+Replaces: manpages-pl (<= 20051117-1)
+Depends: dpkg (>= 1.15.4), perl5, perl-modules, bzip2, lzma, xz-utils, patch (>= 2.2-1), make, binutils, libtimedate-perl, base-files (>= 5.0.0)
+Recommends: gcc | c-compiler, build-essential, fakeroot, gnupg, gpgv
+Suggests: debian-keyring, debian-maintainers
+Conflicts: devscripts (<< 2.10.26), dpkg-cross (<< 2.0.0)
+Conffiles:
+ /etc/dpkg/shlibs.default 1a2b9d0a869e2aa885ae3621c557fb95
+ /etc/dpkg/shlibs.override 84b1e69080569cc5c613a50887af5200
+Description: Debian package development tools
+ This package provides the development tools (including dpkg-source)
+ required to unpack, build and upload Debian source packages.
+ .
+ Most Debian source packages will require additional tools to build;
+ for example, most packages need make and the C compiler gcc.
+Homepage: http://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: xserver-xorg-video-s3virge
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.10.4-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3virge
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-s3virge
+Description: X.Org X server -- S3 ViRGE display driver
+ This package provides the driver for the S3 ViRGE and Trio3D family
+ of chipsets. It does not support Trio64 or S3 96x cards; support for
+ these can be found in the xserver-xorg-video-s3 package. Support for
+ S3 Savage chipsets can be found in xserver-xorg-video-savage.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-s3virge driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libssl0.9.8
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 2332
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: openssl
+Version: 0.9.8k-7ubuntu8
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4), debconf (>= 0.5) | debconf-2.0
+Conflicts: libssl, libssl096-dev (<< 0.9.6-2), openssl (<< 0.9.6-2), ssleay (<< 0.9.2b)
+Description: SSL shared libraries
+ libssl and libcrypto shared libraries needed by programs like
+ apache-ssl, telnet-ssl and openssh.
+ .
+ It is part of the OpenSSL implementation of SSL.
+Original-Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
+
+Package: bzip2
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.0.5-4
+Replaces: libbz2 (<< 0.9.5d-3)
+Depends: libbz2-1.0 (= 1.0.5-4), libc6 (>= 2.4)
+Suggests: bzip2-doc
+Description: high-quality block-sorting file compressor - utilities
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: vim-common
+Status: install ok installed
+Priority: important
+Section: editors
+Installed-Size: 380
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: vim
+Version: 2:7.2.330-1ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: vim | vim-gnome | vim-gtk | vim-lesstif | vim-nox | vim-tiny
+Conffiles:
+ /etc/vim/vimrc e8793640eb83ade46e2d452bcf62e7e3
+Description: Vi IMproved - Common files
+ Vim is an almost compatible version of the UNIX editor Vi.
+ .
+ Many new features have been added: multi level undo, syntax
+ highlighting, command line history, on-line help, filename
+ completion, block operations, folding, Unicode support, etc.
+ .
+ This package contains files shared by all non GUI-enabled vim
+ variants (vim and vim-tiny currently) available in Debian.
+ Examples of such shared files are: manpages, common executables
+ like xxd, and configuration files.
+Homepage: http://www.vim.org/
+Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+
+Package: openssl
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 844
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.9.8k-7ubuntu8
+Depends: libc6 (>= 2.7), libssl0.9.8 (>= 0.9.8k-1), zlib1g (>= 1:1.1.4)
+Suggests: ca-certificates, openssl-doc
+Conflicts: ssleay (<< 0.9.2b)
+Conffiles:
+ /etc/ssl/openssl.cnf 0b1cf9a835b829131d630b7c2fe55f3c
+Description: Secure Socket Layer (SSL) binary and related cryptographic tools
+ This package contains the openssl binary and related tools.
+ .
+ It is part of the OpenSSL implementation of SSL.
+ .
+ You need it to perform certain cryptographic actions like:
+ - Creation of RSA, DH and DSA key parameters;
+ - Creation of X.509 certificates, CSRs and CRLs;
+ - Calculation of message digests;
+ - Encryption and decryption with ciphers;
+ - SSL/TLS client and server tests;
+ - Handling of S/MIME signed or encrypted mail.
+Original-Maintainer: Debian OpenSSL Team <pkg-openssl-devel@lists.alioth.debian.org>
+
+Package: ncurses-bin
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 520
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Provides: tput
+Pre-Depends: libc6 (>= 2.4), libncurses5 (>= 5.6+20071006-3)
+Conflicts: ncurses, tput
+Description: terminal-related programs and man pages
+ This package contains the programs used for manipulating the terminfo
+ database and individual terminfo entries, as well as some programs for
+ resetting terminals and such.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: perl-base
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 4900
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: perl
+Version: 5.10.1-8ubuntu2
+Replaces: libperl5.8 (<< 5.8.0-20), libscalar-list-utils-perl, libxsloader-perl, perl (<= 5.10.0-9), perl-modules (<< 5.10.1-1)
+Provides: libscalar-list-utils-perl, libxsloader-perl, perl5-base, perlapi-5.10.0, perlapi-5.10.1
+Pre-Depends: libc6 (>= 2.11), dpkg (>= 1.14.20)
+Suggests: perl
+Breaks: doc-base (<< 0.8.16)
+Conflicts: autoconf2.13 (<< 2.13-45), libscalar-list-utils-perl (<< 1:1.18-1), libxsloader-perl (<< 0.08-1), safe-rm (<< 0.8)
+Description: minimal Perl system
+ Perl is a scripting language used in many system scripts and utilities.
+ .
+ This package provides a Perl interpreter and the small subset of the
+ standard run-time library required to perform basic tasks. For a full
+ Perl installation, install "perl" (and its dependencies, "perl-modules"
+ and "perl-doc").
+Original-Maintainer: Niko Tyni <ntyni@debian.org>
+
+Package: sysv-rc
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 288
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: file-rc
+Depends: debconf | debconf-2.0, sysvinit-utils (>= 2.86.ds1-62), insserv (>> 1.12.0-10)
+Recommends: lsb-base (>= 3.2-14)
+Suggests: sysv-rc-conf, bum
+Breaks: initscripts (<< 2.86.ds1-63)
+Conflicts: file-rc
+Description: System-V-like runlevel change mechanism
+ This package provides support for the System-V like system
+ for booting, shutting down and changing runlevels,
+ configured through symbolic links in /etc/rc?.d/.
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: apt
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 5488
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.7.25.3ubuntu7
+Replaces: libapt-pkg-dev (<< 0.3.7), libapt-pkg-doc (<< 0.3.7)
+Provides: libapt-pkg-libc6.10-6-4.8
+Depends: libc6 (>= 2.8), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0)
+Recommends: ubuntu-keyring
+Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
+Conffiles:
+ /etc/apt/apt.conf.d/01autoremove 6154750d39a78704b5bbf6fafd65ada7
+ /etc/apt/apt.conf.d/01ubuntu 078b96538a377743bee0f554eb5b2fc6
+ /etc/logrotate.d/apt 179f2ed4f85cbaca12fa3d69c2a4a1c3
+ /etc/cron.daily/apt 3528ddf873535d4c268d83e73e85dc79
+Description: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+ .
+ APT features complete installation ordering, multiple source capability
+ and several other unique features, see the Users Guide in apt-doc.
+Original-Maintainer: APT Development Team <deity@lists.debian.org>
+
+Package: xserver-xorg-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 4872
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg-server
+Version: 2:1.7.6-2ubuntu7
+Replaces: xserver-common (<< 7), xserver-xfree86 (<< 1:7.0.0), xserver-xorg (<< 6.8.2-38)
+Provides: xserver
+Depends: xserver-common (>= 2:1.7.6-2ubuntu7), xserver-xorg, udev (>= 149), libc6 (>= 2.7), libdrm2 (>= 2.3.1), libgcrypt11 (>= 1.4.2), libpciaccess0 (>= 0.10.7), libpixman-1-0 (>= 0.15.16), libudev0 (>= 147), libxau6, libxdmcp6, libxfont1 (>= 1:1.2.9)
+Recommends: libgl1-mesa-dri (>= 7.1~rc1)
+Suggests: xfonts-100dpi | xfonts-75dpi, xfonts-scalable
+Conflicts: xserver-common (<< 7), xserver-xfree86 (<< 1:7.0.0), xserver-xorg (<< 6.8.2-38), xserver-xorg-input, xserver-xorg-input-2, xserver-xorg-input-2.1, xserver-xorg-input-4, xserver-xorg-input-wacom (<< 0.7.8), xserver-xorg-video, xserver-xorg-video-1.0, xserver-xorg-video-1.9, xserver-xorg-video-2, xserver-xorg-video-4, xserver-xorg-video-5
+Description: Xorg X server - core server
+ The Xorg X server is an X server for several architectures and operating
+ systems, which is derived from the XFree86 4.x series of X servers.
+ .
+ The Xorg server supports most modern graphics hardware from most vendors,
+ and supersedes all XFree86 X servers.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xserver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libk5crypto3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 252
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.4), libkeyutils1, libkrb5support0 (>= 1.7dfsg~beta2)
+Suggests: krb5-doc, krb5-user
+Breaks: libgssapi-krb5-2 (<= 1.8~aa), libkrb5-3 (<= 1.8~aa)
+Description: MIT Kerberos runtime libraries - Crypto Library
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime cryptography libraries used by
+ applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: netbase
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 100
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 4.35ubuntu3
+Depends: lsb-base (>= 3.0-6), upstart-job
+Recommends: ifupdown
+Conflicts: inetutils-inetd (<< 2:1.4.3+20060719-3), openbsd-inetd (<< 0.20050402-3)
+Conffiles:
+ /etc/protocols 3aaa310b088fa84233d7fb2e358d4d29
+ /etc/rpc f0b6f6352bf886623adc04183120f83b
+ /etc/services b6a26fbe90d859f7c8600d5941262921
+ /etc/init.d/networking db7e515f04f04f54708b5ea862585c31
+Description: Basic TCP/IP networking system
+ This package provides the necessary infrastructure for basic TCP/IP based
+ networking.
+Original-Maintainer: Marco d'Itri <md@linux.it>
+
+Package: libdrm2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 480
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.7)
+Description: Userspace interface to kernel DRM services -- runtime
+ This library implements the userspace interface to the kernel DRM
+ services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI).
+ The DRI is currently used on Linux to provide hardware-accelerated
+ OpenGL drivers.
+ .
+ This package provides the runtime environment for libdrm.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-openchrome
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 588
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.2.904+svn827-1
+Replaces: libchromexvmc1, libchromexvmcpro1
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6 (>= 0), libxext6 (>= 0), libxv1, libxvmc1, xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: libchromexvmc1, libchromexvmcpro1
+Description: X.Org X server -- VIA display driver
+ OpenChrome is a project for the development of free and open-source drivers
+ for the VIA UniChrome video chipsets.
+ .
+ Originally called the 'snapshot' release, since it was a snapshot of an
+ experimental branch of the unichrome cvs code, this is a continued development
+ of the open source unichrome driver (from http://unichrome.sf.net) which
+ also incorporates support for the unichrome-pro chipsets.
+ .
+ Support for hardware acceleration (XvMC) for all chipsets has subsequently
+ been ripped out of the unichrome.sf.net driver. Therefore your only option if
+ you wish to make use of the acceleration features of your VIA chip with free
+ and open-source drivers is to use this version of the driver.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Homepage: http://www.openchrome.org
+
+Package: libxapian15
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 1644
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xapian-core
+Version: 1.0.18-1
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), zlib1g (>= 1:1.1.4)
+Suggests: xapian-tools
+Conflicts: libxapian2
+Description: Search engine library
+ This package contains the core Xapian runtime library.
+ .
+ The Xapian search engine library is a highly adaptable toolkit which allows
+ developers to easily add advanced indexing and search facilities to their own
+ applications. It implements the probabilistic model of information retrieval,
+ and provides facilities for performing ranked free-text searches, relevance
+ feedback, phrase searching, boolean searching, stemming, and simultaneous
+ update and searching. It is highly scalable, and is capable of working with
+ collections containing hundreds of millions of documents.
+Original-Maintainer: Olly Betts <olly@survex.com>
+Homepage: http://xapian.org/
+
+Package: libsepol1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 328
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsepol
+Version: 2.0.40-2
+Depends: libc6 (>= 2.4)
+Description: SELinux library for manipulating binary security policies
+ Security-enhanced Linux is a patch of the Linux kernel and a number
+ of utilities with enhanced security functionality designed to add
+ mandatory access controls to Linux. The Security-enhanced Linux
+ kernel contains new architectural components originally developed to
+ improve the security of the Flask operating system. These
+ architectural components provide general support for the enforcement
+ of many kinds of mandatory access control policies, including those
+ based on the concepts of Type Enforcement®, Role-based Access
+ Control, and Multi-level Security.
+ .
+ libsepol provides an API for the manipulation of SELinux binary policies.
+ It is used by checkpolicy (the policy compiler) and similar tools, as well
+ as by programs like load_policy that need to perform specific transformations
+ on binary policies such as customizing policy boolean settings.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: libpam-modules
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1196
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam-umask, libpam0g-util
+Provides: libpam-mkhomedir, libpam-motd, libpam-umask
+Depends: base-files (>= 5.0.0ubuntu6)
+Pre-Depends: libc6 (>= 2.8), libdb4.8, libpam0g (>= 1.1.0), libselinux1 (>= 2.0.85), debconf (>= 0.5) | debconf-2.0
+Conflicts: libpam-mkhomedir, libpam-motd, libpam-umask
+Conffiles:
+ /etc/security/access.conf 13ec4d189f0ed9acf3433977a53d446b
+ /etc/security/group.conf 5a6bd21801df034da8d64b407470e8f6
+ /etc/security/limits.conf cbacdff4aa5f51749f191b32754946cb
+ /etc/security/namespace.conf c600fa5899cfb3198a01dfba2bf281f3
+ /etc/security/namespace.init 114e73ed5f40956527286e6213d305bc
+ /etc/security/pam_env.conf ed3f430e418ad366ddb23307a8755249
+ /etc/security/sepermit.conf d41c74654734a5c069a37bfc02f0a6d4
+ /etc/security/time.conf c23fcbb29dda6c1499e6a5e5ade0265e
+Description: Pluggable Authentication Modules for PAM
+ This package completes the set of modules for PAM. It includes the
+ pam_unix_*.so module as well as some specialty modules.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: xserver-xorg-video-vmware
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:10.16.9-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vmware
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-vmware
+Description: X.Org X server -- VMware display driver
+ This package provides the driver for VMware client sessions, i.e. if Linux
+ is running inside a VMware session.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-vmware driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: tzdata
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 6276
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 2010i-1
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Provides: tzdata-squeeze
+Depends: debconf (>= 0.5) | debconf-2.0
+Description: time zone and daylight-saving time data
+ This package contains data required for the implementation of
+ standard local time for many representative locations around the
+ globe. It is updated periodically to reflect changes made by
+ political bodies to time zone boundaries, UTC offsets, and
+ daylight-saving rules.
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libudev0
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 196
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: udev
+Version: 151-12
+Depends: libc6 (>= 2.4)
+Description: udev library
+ libudev provides a set of functions for accessing the udev database
+ and querying sysfs.
+
+Package: libfontconfig1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 444
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: fontconfig
+Version: 2.8.0-2ubuntu1
+Provides: libfontconfig
+Depends: libc6 (>= 2.7), libexpat1 (>= 1.95.8), libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4), fontconfig-config (= 2.8.0-2ubuntu1)
+Description: generic font configuration library - runtime
+ Fontconfig is a font configuration and customization library, which
+ does not depend on the X Window System. It is designed to locate
+ fonts within the system and select them according to requirements
+ specified by applications.
+ .
+ This package contains the runtime library needed to launch applications
+ using fontconfig.
+Original-Maintainer: Keith Packard <keithp@debian.org>
+
+Package: xserver-xorg-input-wacom
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 264
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xf86-input-wacom
+Version: 1:0.10.5-0ubuntu4
+Replaces: wacom-tools (<= 1:0.8.4.1-0ubuntu4)
+Provides: xserver-xorg-input-7
+Depends: xserver-xorg-core (>= 2:1.6.99.900), libc6 (>= 2.7), libx11-6 (>= 0), libxi6 (>= 2:1.2.0)
+Suggests: xinput
+Conflicts: wacom-tools (<= 1:0.8.4.1-0ubuntu4)
+Description: X.Org X server -- Wacom input driver
+ This package provides the X.Org driver for Wacom tablet devices.
+Homepage: http://linuxwacom.sf.net
+Original-Maintainer: Ron Lee <ron@debian.org>
+
+Package: ifupdown
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 276
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.6.8ubuntu29
+Replaces: netbase (<< 4.00)
+Depends: net-tools, libc6 (>= 2.7), debconf (>= 1.2.0) | debconf-2.0, upstart-job, lsb-base (>= 1.3-9ubuntu3), netbase (>= 4.30ubuntu2)
+Suggests: iproute, dhcp3-client | dhcp-client, ppp
+Breaks: udev (<< 136-1)
+Description: high level tools to configure network interfaces
+ This package provides the tools ifup and ifdown which may be used to
+ configure (or, respectively, deconfigure) network interfaces based on
+ interface definitions in the file /etc/network/interfaces.
+Original-Maintainer: Anthony Towns <ajt@debian.org>
+
+Package: libxxf86dga1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxxf86dga
+Version: 2:1.1.1-2
+Depends: libc6 (>= 2.3.4), libx11-6, libxext6, x11-common
+Description: X11 Direct Graphics Access extension library
+ libXxf86dga provides the XFree86-DGA extension, which allows direct
+ graphics access to a framebuffer-like region, and also allows relative
+ mouse reporting, et al. It is mainly used by games and emulators for
+ games.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXxf86dga
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxext6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxext
+Version: 2:1.1.1-2
+Depends: libc6 (>= 2.4), libx11-6
+Description: X11 miscellaneous extension library
+ libXext provides an X Window System client interface to several extensions to
+ the X protocol.
+ .
+ The supported protocol extensions are:
+ - DOUBLE-BUFFER (DBE), the Double Buffer extension;
+ - DPMS, the VESA Display Power Management System extension;
+ - Extended-Visual-Information (EVI), an extension for gathering extra
+ information about the X server's visuals;
+ - LBX, the Low Bandwidth X extension;
+ - MIT-SHM, the MIT X client/server shared memory extension;
+ - MIT-SUNDRY-NONSTANDARD, a miscellaneous extension by MIT;
+ - Multi-Buffering, the multi-buffering and stereo display extension;
+ - SECURITY, the X security extension;
+ - SHAPE, the non-rectangular shaped window extension;
+ - SYNC, the X synchronization extension;
+ - TOG-CUP, the Open Group's Colormap Utilization extension;
+ - XC-APPGROUP, the X Consortium's Application Group extension;
+ - XC-MISC, the X Consortium's resource ID querying extension;
+ - XTEST, the X test extension (this is one of two client-side
+ implementations; the other is in the libXtst library, provided by the
+ libxtst6 package);
+ .
+ libXext also provides a small set of utility functions to aid authors of
+ client APIs for X protocol extensions.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXext
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xterm
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1332
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 256-1ubuntu1
+Provides: x-terminal-emulator
+Depends: xbitmaps, libc6 (>= 2.11), libfontconfig1 (>= 2.8.0), libice6 (>= 1:1.0.0), libncurses5 (>= 5.6+20071006-3), libx11-6 (>= 0), libxaw7, libxft2 (>> 2.1.1), libxmu6, libxt6
+Recommends: x11-utils | xutils
+Suggests: xfonts-cyrillic
+Conffiles:
+ /etc/X11/app-defaults/KOI8RXTerm e904665737663827da6ff9b9651910df
+ /etc/X11/app-defaults/KOI8RXTerm-color d2d26270262950b81921694506281cfe
+ /etc/X11/app-defaults/UXTerm 420d7404a359b3b74a24d415d1a53254
+ /etc/X11/app-defaults/UXTerm-color 446ecb44b3bec790d5c7ac8582ef6ca5
+ /etc/X11/app-defaults/XTerm b13fe7ad4bb906659bfc22db2513bacb
+ /etc/X11/app-defaults/XTerm-color 0ceac6d8b2f3e33be29edddb64394d96
+Description: X terminal emulator
+ xterm is a terminal emulator for the X Window System. It provides DEC VT102
+ and Tektronix 4014 compatible terminals for programs that cannot use the
+ window system directly. This version implements ISO/ANSI colors and most of
+ the control sequences used by DEC VT220 terminals.
+ .
+ This package provides four commands: xterm, which is the traditional
+ terminal emulator; uxterm, which is a wrapper around xterm that is
+ intelligent about locale settings (especially those which use the UTF-8
+ character encoding), but which requires the luit program from the x11-utils
+ package; koi8rxterm, a wrapper similar to uxterm for locales that use the
+ KOI8-R character set; and lxterm, a simple wrapper that chooses which of the
+ previous commands to execute based on the user's locale settings.
+ .
+ A complete list of control sequences supported by the X terminal emulator
+ is provided in /usr/share/doc/xterm.
+ .
+ The xterm program uses bitmap images provided by the xbitmaps package.
+ .
+ Those interested in using koi8rxterm will likely want to install the
+ xfonts-cyrillic package as well.
+Homepage: http://invisible-island.net/xterm/xterm.html
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-radeon
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1564
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xserver-xorg-video-ati
+Version: 1:6.13.0-1ubuntu5
+Replaces: xserver-xorg-video-ati (<= 1:6.8.191-1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.16), libpciaccess0 (>= 0.10.2), libpixman-1-0, xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Description: X.Org X server -- AMD/ATI Radeon display driver
+ This package provides the 'radeon' driver for the AMD/ATI Radeon, FireGL,
+ FireMV, FirePro and FireStream series.
+ .
+ Note that this is not the same as the ATI-provided, binary-only, 'fglrx'
+ driver, which provides additional 3D functionality for some newer Radeon
+ cards, but is not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-session-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1
+Replaces: smproxy, xbase-clients (<= 1:7.2.ds2-3), xsm (<= 1:1.0.1-1), xutils (<= 1:7.1.ds.3-1)
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6, libxaw7, libxmu6, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: smproxy, xsm (<= 1:1.0.1-1)
+Conffiles:
+ /etc/X11/app-defaults/XSm 34f161c4cba12ff40099e12b40e511d3
+Description: X session utilities
+ This package provides the X session manager and related tools:
+ - rstart;
+ - smproxy, a session manager proxy for X clients that do not use the X
+ session manager protocol;
+ - xsm, a session manager for X sessions;
+ Installation of an rsh or ssh daemon (server) is necessary if rstartd is
+ to be used, and installation of an rsh or ssh client is necessary if
+ rstart is to be used.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxrender1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxrender
+Version: 1:0.9.5-1
+Depends: libc6 (>= 2.2.5), libx11-6
+Description: X Rendering Extension client library
+ The X Rendering Extension (Render) introduces digital image composition as
+ the foundation of a new rendering model within the X Window System.
+ Rendering geometric figures is accomplished by client-side tessellation into
+ either triangles or trapezoids. Text is drawn by loading glyphs into the
+ server and rendering sets of them. The Xrender library exposes this
+ extension to X clients.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXrender
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: mountall
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 232
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 2.14
+Replaces: upstart (<< 0.6.3-2)
+Depends: makedev, udev, plymouth, coreutils (>= 7.1), libc6 (>= 2.9), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libplymouth2 (>= 0.8.1-3), libudev0 (>= 151-5)
+Breaks: policycoreutils (<< 2.0.69-2ubuntu4), usplash (<< 0.5.47)
+Conffiles:
+ /etc/init/mountall.conf fba4525691d30c5b18cc3409f990c5be
+ /etc/init/mountall-net.conf feff70cd7006f6763e24263d381940f3
+ /etc/init/mountall-reboot.conf 43e3c229085a13005b0681a49b2bef51
+ /etc/init/mountall-shell.conf aa05af89db3de044d1cd7f6971b46d9f
+ /etc/init/mounted-dev.conf 0c983df7da8b456ea38068e39f2f2a1e
+ /etc/init/mounted-varrun.conf f1908b81facd9a0e78319327e6a9db0a
+ /etc/init/mounted-tmp.conf b049fee4d7c235355555a004befe4633
+Description: filesystem mounting tool
+ mountall mounts filesystems when the underlying block devices are
+ ready, or when network interfaces come up, checking the filesystems
+ first.
+
+Package: xserver-xorg-video-savage
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 240
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.1-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-savage
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.3.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-savage
+Description: X.Org X server -- Savage display driver
+ This package provides the driver for the S3/VIA Savage/ProSavage/Twister family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-savage driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-fbdev
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.4.1-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-fbdev
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-fbdev
+Description: X.Org X server -- fbdev display driver
+ This package provides the driver for the Linux framebuffer device (aka
+ 'fbdev').
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-fbdev driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxfont1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxfont
+Version: 1:1.4.1-1
+Depends: libbz2-1.0, libc6 (>= 2.4), libfontenc1, libfreetype6 (>= 2.2.1), zlib1g (>= 1:1.1.4)
+Conflicts: xprint (<< 2:1.6.0-1)
+Description: X11 font rasterisation library
+ libXfont provides various services for X servers, most notably font
+ selection and rasterisation (through external libraries).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfont
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: diffutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 776
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.8.1-18
+Replaces: diff
+Pre-Depends: libc6 (>= 2.4)
+Suggests: diffutils-doc
+Description: File comparison utilities
+ The diffutils package provides the diff, diff3, sdiff, and cmp programs.
+ .
+ `diff' shows differences between two files, or each corresponding file
+ in two directories. `cmp' shows the offsets and line numbers where
+ two files differ. `cmp' can also show all the characters that
+ differ between the two files, side by side. `diff3' shows differences
+ among three files. `sdiff' merges two files interactively.
+ .
+ The set of differences produced by `diff' can be used to distribute
+ updates to text files (such as program source code) to other people.
+ This method is especially useful when the differences are small compared
+ to the complete files. Given `diff' output, the `patch' program can
+ update, or "patch", a copy of the file.
+Original-Maintainer: Santiago Vila <sanvila@debian.org>
+
+Package: libxvmc1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxvmc
+Version: 2:1.0.5-1ubuntu1
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxv1, x11-common
+Description: X11 Video extension library
+ libXvMC provides an X Window System client interface to the
+ XVideo-MotionCompensation extension to the X protocol.
+ .
+ The XVideo-MotionCompensation extension allows for further accelerated drawing
+ of videos. Video data may be sent at earlier stages of the decoding pipeline
+ than raw YUV data. At the moment, driver support for XvMC is poor to
+ non-existent.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXvMC
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-input-evdev
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.2-5ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- evdev input driver
+ This package provides the driver for input devices using evdev, the Linux
+ kernel's event delivery mechanism. This driver allows for multiple keyboards
+ and mice to be treated as separate input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-evdev driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxpm4
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxpm
+Version: 1:3.5.8-1
+Depends: libc6 (>= 2.7), libx11-6
+Description: X11 pixmap library
+ libXpm provides support and common operation for the XPM pixmap format, which
+ is commonly used in legacy X applications. XPM is an extension of the
+ monochrome XBM bitmap specificied in the X protocol.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXpm
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: tar
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 2464
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.22-2
+Replaces: cpio (<< 2.4.2-39)
+Pre-Depends: libc6 (>= 2.7)
+Suggests: bzip2, ncompress
+Conflicts: cpio (<= 2.4.2-38)
+Conffiles:
+ /etc/rmt 3c58b7cd13da1085eff0acc6a00f43c7
+Description: GNU version of the tar archiving utility
+ Tar is a program for packaging a set of files as a single archive in tar
+ format. The function it performs is conceptually similar to cpio, and to
+ things like PKZIP in the DOS world. It is heavily used by the Debian package
+ management system, and is useful for performing system backups and exchanging
+ sets of files with others.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: gcc-4.4
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 4692
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.4.3-4ubuntu5
+Provides: c-compiler
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), cpp-4.4 (= 4.4.3-4ubuntu5), binutils (>= 2.20), libgcc1 (>= 1:4.4.3-4ubuntu5), libgomp1 (>= 4.4.3-4ubuntu5), libc6 (>= 2.11)
+Recommends: libc6-dev (>= 2.5)
+Suggests: gcc-4.4-multilib, libmudflap0-4.4-dev (>= 4.4.3-4ubuntu5), gcc-4.4-doc (>= 4.4.3-1), gcc-4.4-locales (>= 4.4.3-1), libgcc1-dbg, libgomp1-dbg, libmudflap0-dbg, libcloog-ppl0, libppl-c2, libppl7
+Description: The GNU C compiler
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libdrm-radeon1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 452
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Description: Userspace interface to radeon-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the radeon-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: zlib1g
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 176
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: zlib
+Version: 1:1.2.3.3.dfsg-15ubuntu1
+Provides: libz1
+Depends: libc6 (>= 2.4)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Description: compression library - runtime
+ zlib is a library implementing the deflate compression method found
+ in gzip and PKZIP. This package includes the shared library.
+Original-Maintainer: Mark Brown <broonie@debian.org>
+
+Package: xserver-xorg
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 180
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: x11-common (<< 1:7.3+11), xserver-common (<< 7)
+Depends: xserver-xorg-core (>= 2:1.7), xserver-xorg-video-all | xserver-xorg-video-6, xserver-xorg-input-all | xserver-xorg-input-7, xserver-xorg-input-evdev, libc6 (>= 2.7), xkb-data (>= 1.4), x11-xkb-utils, console-setup
+Recommends: libgl1-mesa-dri
+Conflicts: x11-common (<< 1:7.3+11), xserver-common (<< 7), xserver-xfree86 (<< 6.8.2.dfsg.1-1)
+Description: the X.Org X server
+ This package depends on the full suite of the server and drivers for the
+ X.Org X server. It does not provide the actual server itself.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxrandr2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxrandr
+Version: 2:1.3.0-3
+Depends: libc6 (>= 2.2.5), libx11-6 (>= 0), libxext6 (>= 0), libxrender1
+Description: X11 RandR extension library
+ libXrandr provides an X Window System client interface to the RandR
+ extension to the X protocol.
+ .
+ The RandR extension allows for run-time configuration of display attributes
+ such as resolution, rotation, and reflection.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXrandr
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libglu1-mesa
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 548
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: libglu1
+Provides: libglu1
+Depends: libc6 (>= 2.11), libgcc1 (>= 1:4.1.1), libgl1-mesa-glx | libgl1, libstdc++6 (>= 4.1.1)
+Conflicts: libglu1, mesag3 (<< 5.0.0-1), xlibmesa3
+Description: The OpenGL utility library (GLU)
+ GLU offers simple interfaces for building mipmaps; checking for the
+ presence of extensions in the OpenGL (or other libraries which follow
+ the same conventions for advertising extensions); drawing
+ piecewise-linear curves, NURBS, quadrics and other primitives
+ (including, but not limited to, teapots); tesselating surfaces; setting
+ up projection matrices and unprojecting screen coordinates to world
+ coordinates.
+ .
+ On Linux, this library is also known as libGLU or libGLU.so.1.
+ .
+ This package provides the SGI implementation of GLU shipped with the
+ Mesa package (ergo the "-mesa" suffix).
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: adduser
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 884
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.112ubuntu1
+Replaces: manpages-it (<< 0.3.4-2), manpages-pl (<= 20051117-1)
+Depends: perl-base (>= 5.6.0), passwd (>= 1:4.0.12), debconf | debconf-2.0
+Suggests: liblocale-gettext-perl, perl-modules, ecryptfs-utils (>= 67-1)
+Conffiles:
+ /etc/deluser.conf 527e6a57d0bc9f7c1b1aca2071f3da00
+Description: add and remove users and groups
+ This package includes the 'adduser' and 'deluser' commands for creating
+ and removing users.
+ .
+ - 'adduser' creates new users and groups and adds existing users to
+ existing groups;
+ - 'deluser' removes users and groups and removes users from a given
+ group.
+ .
+ Adding users with 'adduser' is much easier than adding them manually.
+ Adduser will choose appropriate UID and GID values, create a home
+ directory, copy skeletal user configuration, and automate setting
+ initial values for the user's password, real name and so on.
+ .
+ Deluser can back up and remove users' home directories
+ and mail spool or all the files they own on the system.
+ .
+ A custom script can be executed after each of the commands.
+ .
+ Development mailing list:
+ http://lists.alioth.debian.org/mailman/listinfo/adduser-devel/
+Homepage: http://alioth.debian.org/projects/adduser/
+Original-Maintainer: Debian Adduser Developers <adduser-devel@lists.alioth.debian.org>
+
+Package: libxcb1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 180
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxcb
+Version: 1.5-2
+Depends: libc6 (>= 2.4), libxau6, libxdmcp6
+Breaks: libxcb-xlib0
+Description: X C Binding
+ This package contains the library files needed to run software using libxcb,
+ the X C Binding.
+ .
+ The XCB library provides an interface to the X Window System protocol,
+ designed to replace the Xlib interface. XCB provides several advantages over
+ Xlib:
+ .
+ * Size: small library and lower memory footprint
+ * Latency hiding: batch several requests and wait for the replies later
+ * Direct protocol access: one-to-one mapping between interface and protocol
+ * Thread support: access XCB from multiple threads, with no explicit locking
+ * Easy creation of new extensions: automatically generates interface from
+ machine-parsable protocol descriptions
+Original-Maintainer: XCB Developers <xcb@lists.freedesktop.org>
+Homepage: http://xcb.freedesktop.org
+
+Package: xserver-xorg-video-all
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: xserver-xorg-driver-all
+Depends: xserver-xorg-video-apm, xserver-xorg-video-ark, xserver-xorg-video-ati, xserver-xorg-video-chips, xserver-xorg-video-cirrus, xserver-xorg-video-fbdev, xserver-xorg-video-i128, xserver-xorg-video-intel, xserver-xorg-video-mga, xserver-xorg-video-neomagic, xserver-xorg-video-nouveau, xserver-xorg-video-nv, xserver-xorg-video-rendition, xserver-xorg-video-s3, xserver-xorg-video-s3virge, xserver-xorg-video-savage, xserver-xorg-video-siliconmotion, xserver-xorg-video-sis, xserver-xorg-video-sisusb, xserver-xorg-video-tdfx, xserver-xorg-video-trident, xserver-xorg-video-tseng, xserver-xorg-video-vesa, xserver-xorg-video-openchrome, xserver-xorg-video-voodoo, xserver-xorg-video-v4l, xserver-xorg-video-vmware, x11-common
+Conflicts: xserver-xorg-driver-all
+Description: the X.Org X server -- output driver metapackage
+ This package depends on the full suite of output drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: locales
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 21820
+Maintainer: Martin Pitt <martin.pitt@ubuntu.com>
+Architecture: all
+Source: langpack-locales
+Version: 2.11+git20100304-3
+Replaces: base-config, belocs-locale-data, belocs-locales-bin, libc6 (<< 2.3.6-0ubuntu6), libc6.1 (<< 2.3.6-0ubuntu6)
+Depends: libc6 (>= 2.9-0ubuntu10) | libc6.1 (>= 2.9-0ubuntu10)
+Conflicts: base-config, belocs-locale-data
+Conffiles:
+ /etc/locale.alias 6ac3cbee43012440edc6bcbade0a61ce
+Description: common files for locale support
+ This package provides support for localized environments (locales).
+ It installs character and transliteration maps, provides the POSIX
+ locale definition and provides common scripts for language pack
+ handling.
+ .
+ The actual locale definitions are not part of this package, these are
+ shipped in the language packs and are installed and removed
+ automatically.
+
+Package: manpages
+Status: install ok installed
+Priority: important
+Section: doc
+Installed-Size: 1104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 3.23-1
+Replaces: bind, rsh-server (<< 0.10-7)
+Suggests: man-browser
+Description: Manual pages about using a GNU/Linux system
+ This package contains GNU/Linux manual pages for these sections:
+ 4 = Devices (e.g. hd, sd).
+ 5 = File formats and protocols, syntaxes of several system
+ files (e.g. wtmp, /etc/passwd, nfs).
+ 7 = Conventions and standards, macro packages, etc.
+ (e.g. nroff, ascii).
+ .
+ Sections 1, 6 and 8 are provided by the respective applications. This
+ package only includes the intro man page describing the section.
+ .
+ The man pages describe syntaxes of several system files.
+Original-Maintainer: Martin Schulze <joey@debian.org>
+
+Package: libgcc1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 132
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4 (4.4.3-4ubuntu5)
+Version: 1:4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.2.5)
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libklibc
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: klibc
+Version: 1.5.17-4ubuntu1
+Description: minimal libc subset for use with initramfs
+ klibc is intended to be a minimalistic libc subset for use with
+ initramfs. It is deliberately written for small size, minimal
+ entanglement, and portability, not speed. It is definitely a work in
+ progress, and a lot of things are still missing.
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: libxv1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxv
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.4), libx11-6, libxext6
+Description: X11 Video extension library
+ libXv provides an X Window System client interface to the XVideo
+ extension to the X protocol.
+ .
+ The XVideo extension allows for accelerated drawing of videos. Hardware
+ adaptors are exposed to clients, which may draw in a number of colourspaces,
+ including YUV.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXv
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: base-files
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 500
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 5.0.0ubuntu20
+Replaces: base, dpkg (<= 1.15.0), lsb-release (<< 3.0-8), miscutils
+Provides: base
+Depends: base-passwd (>= 2.0.3.4), libpam-modules (>= 0.79-3ubuntu3)
+Pre-Depends: awk
+Conffiles:
+ /etc/debian_version 82711d8dc3e89c428b4694a284e32541
+ /etc/dpkg/origins/debian 731423fa8ba067262f8ef37882d1e742
+ /etc/dpkg/origins/ubuntu ea35901c45553c3451f60476be94d2d8
+ /etc/host.conf 89408008f2585c957c031716600d5a80
+ /etc/issue 0773f7fd061b03b7643118d133e4c581
+ /etc/issue.net b779759799b4ec17dd4dab41ad557f49
+ /etc/lsb-release a50b6779ddccab3277e2560028f3eb15
+Description: Debian base system miscellaneous files
+ This package contains the basic filesystem hierarchy of a Debian system, and
+ several important miscellaneous files, such as /etc/debian_version,
+ /etc/host.conf, /etc/issue, /etc/motd, /etc/profile, /etc/nsswitch.conf,
+ and others, and the text of several common licenses in use on Debian systems.
+Original-Maintainer: Santiago Vila <sanvila@debian.org>
+
+Package: mount
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 380
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Pre-Depends: libblkid1 (>= 2.17), libc6 (>= 2.7), libselinux1 (>= 2.0.15), libsepol1 (>= 1.14), libuuid1 (>= 2.16)
+Suggests: nfs-common (>= 1:1.1.0-13)
+Breaks: nfs-common (<< 1:1.1.0-7)
+Description: Tools for mounting and manipulating filesystems
+ This package provides the mount(8), umount(8), swapon(8),
+ swapoff(8), and losetup(8) commands.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libtext-iconv-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.7-2
+Depends: libc6 (>= 2.2.5), perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: converts between character sets in Perl
+ The iconv() family of functions from XPG4 define an API for converting
+ between character sets (e.g. UTF-8 to Latin1, EBCDIC to ASCII). They
+ are provided by libc6.
+ .
+ This package allows access to them from Perl via the Text::Iconv
+ package.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::Iconv
+
+Package: console-setup
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 1396
+Maintainer: Ubuntu Installer Team <ubuntu-installer@lists.ubuntu.com>
+Architecture: all
+Version: 1.34ubuntu15
+Depends: debconf (>= 0.5) | debconf-2.0, console-terminus (>= 4.26), xkb-data (>= 0.9), initramfs-tools (>= 0.85eubuntu12), kbd (>= 1.15-1ubuntu3)
+Suggests: lsb-base (>= 3.0-6), locales
+Conflicts: lsb (<< 2.0-6), lsb-base (<< 3.0-6), lsb-core (<< 2.0-6)
+Conffiles:
+ /etc/console-setup/compose.ARMSCII-8.inc fef36b61fb8b1cacc151ad3db127f777
+ /etc/console-setup/compose.CP1251.inc fef88d8c8dd4c726498003fd3cd84a7f
+ /etc/console-setup/compose.CP1255.inc c972a2e90938657e97b643366b98b2ed
+ /etc/console-setup/compose.CP1256.inc 5ea5e4d41da7a88f742863810e86144b
+ /etc/console-setup/compose.GEORGIAN-ACADEMY.inc b6d80f40abff7e8af236796ebaca0247
+ /etc/console-setup/compose.GEORGIAN-PS.inc cf45272b6bf35a22223b132600dc36c3
+ /etc/console-setup/compose.IBM1133.inc a31102602f7e7cab9738022b6c5469ae
+ /etc/console-setup/compose.ISIRI-3342.inc 5ada7fbba750192f11fa238add232ba9
+ /etc/console-setup/compose.ISO-8859-1.inc 719a4300a50dcb168d7de921bab338e9
+ /etc/console-setup/compose.ISO-8859-10.inc e5fce59617c839b56574c9e323d34686
+ /etc/console-setup/compose.ISO-8859-11.inc ad2f3cc7ee64602a790bad8a2a989243
+ /etc/console-setup/compose.ISO-8859-13.inc 9c2f47a52091515749fefc62fc8efd63
+ /etc/console-setup/compose.ISO-8859-14.inc a19822b59629ea7af7682d9247de807f
+ /etc/console-setup/compose.ISO-8859-15.inc cfa9b04fec26afa1debc17ce09d46a0a
+ /etc/console-setup/compose.ISO-8859-16.inc 8245c19b5262d8d23ca856587739eb20
+ /etc/console-setup/compose.ISO-8859-2.inc a56cb83dbe0cd88e4deef52d966d30e4
+ /etc/console-setup/compose.ISO-8859-3.inc e70d7b634791b9c97db75bddf6dcc5fa
+ /etc/console-setup/compose.ISO-8859-4.inc 4092be9556db0ac82e96eae413f1bd47
+ /etc/console-setup/compose.ISO-8859-5.inc f861a4b0403490677e6d400f2d7129da
+ /etc/console-setup/compose.ISO-8859-6.inc 41ea36ea1c1a1c0c9bebdf0016395e1f
+ /etc/console-setup/compose.ISO-8859-7.inc aa280de25f20e82f58da707101b24d48
+ /etc/console-setup/compose.ISO-8859-8.inc 9cceaa9f3312f89aba371d3c893f4e7b
+ /etc/console-setup/compose.ISO-8859-9.inc 1893bc3994c24917c907a17ceb2f284b
+ /etc/console-setup/compose.KOI8-R.inc 8cfd7766b86e5e55d6e71d0d95519c92
+ /etc/console-setup/compose.KOI8-U.inc 217ee62f6982736276f41f760f8622f8
+ /etc/console-setup/compose.TIS-620.inc 31b73af83ef3993c128e2b983b9eaf89
+ /etc/console-setup/compose.VISCII.inc 0741db54ddb6268e476010a44f219f03
+ /etc/init/console-setup.conf 1e2fdc7b62f4d1dee3845f5fc2b13fc4
+Description: console font and keymap setup program
+ This package provides the Linux console with the same
+ keyboard configuration scheme as the X Window System. As a result,
+ there is no need to duplicate or change the keyboard files just to
+ make simple customizations such as the use of dead keys, the key
+ functioning as AltGr or Compose key, the key(s) to switch between
+ Latin and non-Latin mode, etc.
+ .
+ The package also contains console fonts supporting many of the
+ world's languages. It provides an unified set of font faces - the
+ classic VGA, the simplistic Fixed, and the cleaned Terminus,
+ TerminusBold and TerminusBoldVGA.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: xserver-xorg-input-synaptics
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 356
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.2.2-1ubuntu4
+Replaces: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Provides: xfree86-driver-synaptics, xorg-driver-synaptics, xserver-xorg-input-7
+Depends: udev, libc6 (>= 2.4), libpciaccess0, libpixman-1-0, libx11-6 (>= 0), libxi6 (>= 2:1.2.0), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: gpointing-device-settings, touchfreeze
+Conflicts: xfree86-driver-synaptics (<< 0.14.4-2), xorg-driver-synaptics
+Description: Synaptics TouchPad driver for X.Org server
+ This package provides an input driver for the X.Org X server to enable
+ advanced features of the Synaptics Touchpad including:
+ .
+ * Movement with adjustable, non-linear acceleration and speed
+ * Button events through short touching of the touchpad
+ * Double-Button events through double short touching of the touchpad
+ * Dragging through short touching and holding down the finger on the touchpad
+ * Middle and right button events on the upper and lower corner of the touchpad
+ * Vertical scrolling (button four and five events) through moving the finger
+ on the right side of the touchpad
+ * The up/down button sends button four/five events
+ * Horizontal scrolling (button six and seven events) through moving the finger
+ on the lower side of the touchpad
+ * The multi-buttons send button four/five events, and six/seven events for
+ horizontal scrolling
+ * Adjustable finger detection
+ * Multifinger taps: two finger for middle button and three finger for right
+ button events. (Needs hardware support. Not all models implement this
+ feature.)
+ * Run-time configuration using shared memory. This means you can change
+ parameter settings without restarting the X server (see synclient(1)).
+ * It also provides a daemon to disable touchpad while typing at the keyboard
+ and thus avoid unwanted mouse movements (see syndaemon(1)).
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-vesa
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.3.0-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-vesa
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-vesa
+Description: X.Org X server -- VESA display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ uses the standard VESA interface provided on all video cards, but runs
+ unaccelerated. This driver is not recommended for use unless you have a
+ problem with the normal driver for your card, because it will peform very
+ badly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-vesa driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libreadline6
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 408
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: readline6
+Version: 6.1-1
+Depends: readline-common, libc6 (>= 2.11~20100104-0ubuntu5), libncurses5 (>= 5.6+20071006-3)
+Description: GNU readline and history libraries, run-time libraries
+ The GNU readline library aids in the consistency of user interface
+ across discrete programs that need to provide a command line
+ interface.
+ .
+ The GNU history library provides a consistent user interface for
+ recalling lines of previously typed input.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: libncurses5
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 512
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: libgpm2
+Description: shared libraries for terminal handling
+ This package contains the shared libraries necessary to run programs
+ compiled with ncurses.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: libplymouth2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 312
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: plymouth
+Version: 0.8.2-2ubuntu2
+Replaces: plymouth (<< 0.7.0+git20090207-0ubuntu0.1~ppa4)
+Depends: libc6 (>= 2.8), libpng12-0 (>= 1.2.13-4)
+Breaks: casper (= 1.227), mountall (<< 2.8)
+Description: graphical boot animation and logger - shared libraries
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+ .
+ This package contains the shared libraries.
+
+Package: libkeyutils1
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 60
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: keyutils
+Version: 1.2-12
+Depends: libc6 (>= 2.2.5)
+Description: Linux Key Management Utilities (library)
+ Keyutils is a set of utilities for managing the key retention facility in the
+ kernel, which can be used by filesystems, block devices and more to gain and
+ retain the authorization and encryption keys required to perform secure
+ operations.
+ .
+ This package provides a wrapper library for the key management facility system
+ calls.
+Original-Maintainer: Daniel Baumann <daniel@lists.debian-maintainers.org>
+Homepage: http://people.redhat.com/~dhowells/keyutils/
+
+Package: libexpat1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 392
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: expat
+Version: 2.0.1-7ubuntu1
+Depends: libc6 (>= 2.4)
+Conflicts: wink (<= 1.5.1060-4)
+Description: XML parsing C library - runtime library
+ This package contains the runtime, shared library of expat, the C
+ library for parsing XML. Expat is a stream-oriented parser in
+ which an application registers handlers for things the parser
+ might find in the XML document (like start tags).
+Homepage: http://expat.sourceforge.net
+Original-Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-rendition
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:4.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-rendition
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-rendition
+Description: X.Org X server -- Rendition display driver
+ This package provides the driver for the Rendition Verite family of chipsets,
+ commonly found in 3D accelerators such as the Creative 3D Blaster.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-rendition driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: patch
+Status: install ok installed
+Priority: standard
+Section: vcs
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.6-2ubuntu1
+Depends: libc6 (>= 2.4)
+Suggests: ed, diffutils-doc
+Description: Apply a diff file to an original
+ Patch will take a patch file containing any of the four forms
+ of difference listing produced by the diff program and apply
+ those differences to an original file, producing a patched
+ version.
+Original-Maintainer: Christoph Berg <myon@debian.org>
+
+Package: initramfs-tools-bin
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 104
+Maintainer: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
+Architecture: amd64
+Source: initramfs-tools
+Version: 0.92bubuntu78
+Depends: libc6 (>= 2.11), libudev0 (>= 147)
+Description: binaries used by initramfs-tools
+ This package contains binaries used inside the initramfs images generated
+ by initramfs-tools.
+Original-Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
+
+Package: libxi6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 144
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxi
+Version: 2:1.3-3
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.2.99.901), libxext6 (>= 0)
+Description: X11 Input extension library
+ libXi provides an X Window System client interface to the XINPUT
+ extension to the X protocol.
+ .
+ The Input extension allows setup and configuration of multiple input devices,
+ and will soon allow hotplugging of input devices; to be added and removed on
+ the fly.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXi
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xinit
+Status: deinstall ok config-files
+Priority: optional
+Section: x11
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.2.0-1
+Config-Version: 1.2.0-1
+Replaces: xbase-clients (<= 1:7.2.ds2-3)
+Depends: libc6 (>= 2.4), libx11-6, x11-common, xauth
+Recommends: xserver-xorg | xserver, xterm | x-session-manager | x-window-manager | x-terminal-emulator
+Conffiles:
+ /etc/X11/xinit/xinitrc cc40a5ba097b062b284e639f4160c04e
+ /etc/X11/xinit/xserverrc 50faa91e980a25adcd0de32020b340bb
+Description: X server initialisation tool
+ xinit and startx are programs which facilitate starting an X server, and
+ loading a base X session.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libattr1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 68
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: attr
+Version: 1:2.4.44-1
+Depends: libc6 (>= 2.4)
+Conflicts: attr (<< 2.0.0)
+Description: Extended attribute shared library
+ Contains the runtime environment required by programs that make use
+ of extended attributes.
+Original-Maintainer: Nathan Scott <nathans@debian.org>
+Homepage: http://savannah.nongnu.org/projects/attr/
+
+Package: xfonts-base
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 8272
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Replaces: xfonts-misc
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/misc/xfonts-base.alias a8ec05d528431d4c9703b55a7efd67a8
+Description: standard fonts for X
+ xfonts-base provides a standard set of low-resolution bitmapped fonts. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-sisusb
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.9.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-sisusb
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-sisusb
+Description: X.Org X server -- SiS USB display driver
+ This package provides the driver for SiS USB-attached video devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-sisusb driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: sed
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 972
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.2.1-6
+Depends: dpkg (>= 1.15.4) | install-info
+Pre-Depends: libc6 (>= 2.4), libselinux1 (>= 1.32)
+Description: The GNU sed stream editor
+ sed reads the specified files or the standard input if no
+ files are specified, makes editing changes according to a
+ list of commands, and writes the results to the standard
+ output.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+Homepage: http://www.gnu.org/software/sed/
+
+Package: libidn11
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 368
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libidn
+Version: 1.15-2
+Replaces: libidn11-dev
+Depends: libc6 (>= 2.4)
+Conflicts: libidn9-dev
+Description: GNU Libidn library, implementation of IETF IDN specifications
+ GNU Libidn is a fully documented implementation of the Stringprep,
+ Punycode and IDNA specifications. Libidn's purpose is to encode and
+ decode internationalized domain names. The Nameprep, XMPP, SASLprep,
+ and iSCSI profiles are supported.
+ .
+ This package contains the shared library.
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.gnu.org/software/libidn/
+
+Package: xserver-xorg-video-tdfx
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.4.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tdfx
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-tdfx
+Description: X.Org X server -- tdfx display driver
+ This package provides the driver for 3dfx Voodoo video cards and their
+ derivatives.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tdfx driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: klibc-utils
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: klibc
+Version: 1.5.17-4ubuntu1
+Depends: libklibc (= 1.5.17-4ubuntu1)
+Description: small utilities built with klibc for early boot
+ This package contains a collection of programs that are linked
+ against klibc. These duplicate some of the functionality of a
+ regular Linux toolset, but are typically much smaller than their
+ full-function counterparts. They are intended for inclusion in
+ initramfs images and embedded systems.
+Original-Maintainer: maximilian attems <maks@debian.org>
+
+Package: e2fslibs
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 316
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libe2p2, libext2fs2
+Depends: libc6 (>= 2.7)
+Description: ext2/ext3/ext4 file system libraries
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package provides the ext2fs and e2p libraries, for userspace software
+ that directly accesses extended file systems. Programs that use libext2fs
+ include e2fsck, mke2fs, and tune2fs. Programs that use libe2p include
+ dumpe2fs, chattr, and lsattr.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: xfonts-100dpi
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 4808
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/100dpi/xfonts-100dpi.alias 85bebd6ca213aa656c301a72eb4397cb
+Description: 100 dpi fonts for X
+ xfonts-100dpi provides a set of bitmapped fonts at 100 dots per inch. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ This package contains only fonts in the ISO 10646-1 and ISO 8859-1
+ encodings, to conserve disk space. For other encodings, see the
+ xfonts-100dpi-transcoded package.
+ .
+ This package and xfonts-75dpi provide the same set of fonts, rendered at
+ different resolutions; only one or the other is necessary, but both may be
+ installed. xfonts-100dpi may be more suitable for large monitors and/or
+ large screen resolutions (over 1024x768).
+ .
+ This package requires the xfonts-utils package to prepare the font
+ directories for use by an X server or X font server.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libkrb5support0
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 124
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.3.4), libkeyutils1
+Suggests: krb5-doc, krb5-user
+Description: MIT Kerberos runtime libraries - Support library
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains an internal runtime support library used by other
+ Kerberos libraries.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: libgl1-mesa-glx
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 632
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: mesa
+Version: 7.7.1-1ubuntu2
+Replaces: libgl1, libgl1-mesa-dri (<< 6.4.0)
+Provides: libgl1
+Depends: libc6 (>= 2.4), libdrm2 (>= 2.3.1), libx11-6 (>= 0), libxdamage1 (>= 1:1.1), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxxf86vm1, dpkg (>= 1.15.4)
+Recommends: libgl1-mesa-dri (>= 7.2)
+Conflicts: libgl1, libgl1-mesa-dri (<< 6.4.0)
+Description: A free implementation of the OpenGL API -- GLX runtime
+ This version of Mesa provides GLX and DRI capabilities: it is capable of
+ both direct and indirect rendering. For direct rendering, it can use DRI
+ modules from the libgl1-mesa-dri package to accelerate drawing.
+ .
+ This package does not include the modules themselves: these can be found
+ in the libgl1-mesa-dri package.
+ .
+ For a complete description of Mesa, please look at the
+ libgl1-mesa-swx11 package.
+Homepage: http://mesa3d.sourceforge.net/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 688
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+3
+Replaces: appres, editres, listres, luit, viewres, xbase-clients (<< 1:7.2.ds3), xdpyinfo, xdriinfo, xev, xfd, xfontsel, xkill, xlsatoms, xlsclients, xlsfonts, xmessage, xprop, xutils (<< 1:7.2), xvinfo, xwininfo
+Depends: libc6 (>= 2.7), libfontconfig1 (>= 2.8.0), libfontenc1, libfreetype6 (>= 2.2.1), libgl1-mesa-glx | libgl1, libx11-6 (>= 0), libxaw7, libxext6 (>= 0), libxft2 (>> 2.1.1), libxi6 (>= 0), libxinerama1, libxmu6, libxmuu1, libxrender1, libxt6, libxtst6, libxv1, libxxf86dga1, libxxf86vm1, zlib1g (>= 1:1.1.4), cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: mesa-utils
+Conflicts: appres, editres, listres, luit, viewres, xdpyinfo, xdriinfo, xev, xfd, xfontsel, xkill, xlsatoms, xlsclients, xlsfonts, xmessage, xprop, xvinfo, xwininfo
+Conffiles:
+ /etc/X11/app-defaults/Editres 04c860eb13ac3a4e8d74ebebcf3da76c
+ /etc/X11/app-defaults/Editres-color f16b07f1caf85b42cd40355e23d927a0
+ /etc/X11/app-defaults/Viewres 4f77da598593ff07cda9d2d147a07772
+ /etc/X11/app-defaults/Viewres-color ff9c397a80443790a97b909050f63282
+ /etc/X11/app-defaults/Xfd 5cee09dc86e1dc14c19492b6b866d17c
+ /etc/X11/app-defaults/XFontSel d917f63ef27294544ab192a3e33e30df
+ /etc/X11/app-defaults/Xmessage eed84b35dde8b18e7dcfc80e75c1da67
+ /etc/X11/app-defaults/Xmessage-color ca383db9e4e9648bda0952ad6b8a2115
+Description: X11 utilities
+ An X client is a program that interfaces with an X server (almost always via
+ the X libraries), and thus with some input and output hardware like a
+ graphics card, monitor, keyboard, and pointing device (such as a mouse).
+ .
+ This package provides a miscellaneous assortment of X utilities
+ that ship with the X Window System, including:
+ - appres, editres, listres and viewres, which query the X resource database;
+ - luit, a filter that can be run between an arbitrary application and a
+ UTF-8 terminal emulator;
+ - xdpyinfo, a display information utility for X;
+ - xdriinfo, query configuration information of DRI drivers;
+ - xev, an X event displayer;
+ - xfd, a tool that displays all the glyphs in a given X font;
+ - xfontsel, a tool for browsing and selecting X fonts;
+ - xkill, a tool for terminating misbehaving X clients;
+ - xlsatoms, which lists interned atoms defined on an X server;
+ - xlsclients, which lists client applications running on an X display;
+ - xlsfonts, a server font list displayer;
+ - xmessage, a tool to display message or dialog boxes;
+ - xprop, a property displayer for X;
+ - xvinfo, an Xv extension information utility for X;
+ - xwininfo, a window information utility for X;
+ .
+ The editres and viewres programs use bitmap images provided by the
+ xbitmaps package. The luit program requires locale information from
+ the libx11-data package.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: base-passwd
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 184
+Maintainer: Colin Watson <cjwatson@debian.org>
+Architecture: amd64
+Version: 3.5.22
+Replaces: base
+Depends: libc6 (>= 2.8)
+Description: Debian base system master password and group files
+ These are the canonical master copies of the user database files
+ (/etc/passwd and /etc/group), containing the Debian-allocated user and
+ group IDs. The update-passwd tool is provided to keep the system databases
+ synchronized with these master files.
+
+Package: libcomerr2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 108
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Provides: libcomerr-kth-compat
+Depends: libc6 (>= 2.3.4)
+Description: common error description library
+ libcomerr is an attempt to present a common error-handling mechanism to
+ manipulate the most common form of error code in a fashion that does not
+ have the problems identified with mechanisms commonly in use.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: mawk
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 256
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.3.3-15ubuntu2
+Provides: awk
+Pre-Depends: libc6 (>= 2.11~20100104-0ubuntu3)
+Description: a pattern scanning and text processing language
+ Mawk is an interpreter for the AWK Programming Language. The AWK
+ language is useful for manipulation of data files, text retrieval and
+ processing, and for prototyping and experimenting with algorithms. Mawk
+ is a new awk meaning it implements the AWK language as defined in Aho,
+ Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley
+ Publishing, 1988. (Hereafter referred to as the AWK book.) Mawk conforms
+ to the POSIX 1003.2 (draft 11.3) definition of the AWK language
+ which contains a few features not described in the AWK book, and mawk
+ provides a small number of extensions.
+ .
+ Mawk is smaller and much faster than gawk. It has some compile-time
+ limits such as NF = 32767 and sprintf buffer = 1020.
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: xserver-xorg-video-ark
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.7.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-ark
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-ark
+Description: X.Org X server -- ark display driver
+ This package provides the driver for the ark family
+ of chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ark driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: gnupg
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 5320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.4.10-2ubuntu1
+Depends: libbz2-1.0, libc6 (>= 2.4), libreadline6, libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4), dpkg (>= 1.15.4) | install-info, gpgv
+Recommends: libldap-2.4-2 (>= 2.4.7), gnupg-curl
+Suggests: gnupg-doc, xloadimage | imagemagick | eog, libpcsclite1
+Description: GNU privacy guard - a free PGP replacement
+ GnuPG is GNU's tool for secure communication and data storage.
+ It can be used to encrypt data and to create digital signatures.
+ It includes an advanced key management facility and is compliant
+ with the proposed OpenPGP Internet standard as described in RFC2440.
+ .
+ The gnupg package is built without libcurl. So it does not support
+ HKPS keyservers. Install the gnupg-curl package if you want to use
+ the keyserver helper tools built with libcurl and supporting HKPS.
+ .
+ GnuPG does not use any patented algorithms. This means it cannot be
+ compatible with PGP2, because that uses IDEA (which is patented in
+ a number of countries).
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: xserver-xorg-video-cirrus
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 164
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.2-1ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-cirrus
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-cirrus
+Description: X.Org X server -- Cirrus display driver
+ This package provides the driver for the Cirrus Logic family of video
+ cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-cirrus driver module.
+Orig-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libdb4.8
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1516
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: db
+Version: 4.8.24-1ubuntu1
+Depends: libc6 (>= 2.4)
+Conflicts: libdb2 (<< 2:2.7.7-3)
+Description: Berkeley v4.8 Database Libraries [runtime]
+ This is the runtime package for programs that use the v4.8 Berkeley
+ database library.
+Homepage: http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Original-Maintainer: Debian Berkeley DB Maintainers <pkg-db-devel@lists.alioth.debian.org>
+
+Package: x11-apps
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2276
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1ubuntu2
+Replaces: bitmap, ico, oclock, x11perf, xbase-clients (<= 1:7.2.ds2-3), xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+Depends: libc6 (>= 2.11), libpng12-0 (>= 1.2.13-4), libsm6, libx11-6 (>= 0), libxaw7, libxcursor1 (>> 1.1.2), libxext6 (>= 0), libxft2 (>> 2.1.1), libxkbfile1, libxmu6, libxmuu1, libxrender1, libxt6, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: mesa-utils
+Conflicts: bitmap, ico, oclock, x11perf, xbiff, xcalc, xclipboard, xclock, xconsole, xcursorgen, xditview, xeyes, xgc, xload, xlogo, xmag, xman, xmore, xwd, xwud
+Conffiles:
+ /etc/X11/app-defaults/Bitmap 53d1579022e3e95bc2b15eb813f08731
+ /etc/X11/app-defaults/Bitmap-color 946b659d5d6c41b6840f5e0df10680d9
+ /etc/X11/app-defaults/Bitmap-nocase f2db8f925e5ea5680090c32db9121c8d
+ /etc/X11/app-defaults/Clock-color b4ba6ae900e0e488e4b030f14c6fe656
+ /etc/X11/app-defaults/XCalc bc0d4c4717137a2d25e17b7358c8ad8d
+ /etc/X11/app-defaults/XCalc-color c8efe9caf8987a902df98270e2b291c9
+ /etc/X11/app-defaults/XClipboard 18ebd8e152da9203e9e34e88dad98d97
+ /etc/X11/app-defaults/XClock 812dfcc6f6d83e2ae9da809c3bf11c67
+ /etc/X11/app-defaults/XClock-color 7b049809f0bca03c76480959e2e4db89
+ /etc/X11/app-defaults/XConsole a310ffbe0ed9509a2477ea5f1ac1dcc5
+ /etc/X11/app-defaults/Xditview 49d35244a61618b60f17d3400f64a81e
+ /etc/X11/app-defaults/Xditview-chrtr 98a562569a7db396c9a0d2e6d414067e
+ /etc/X11/app-defaults/Xedit 013f41442eb431168793e1943779c8f3
+ /etc/X11/app-defaults/Xedit-color 59d7f0d96f4346ae0fe4904d46daf53c
+ /etc/X11/app-defaults/Xgc 744adc578acb239541e378eb16e337f7
+ /etc/X11/app-defaults/Xgc-color 8dfaceb0c12917fd0b1c77423f9f6a47
+ /etc/X11/app-defaults/XLoad 3ea554c7be110102e42e25d3d83c4134
+ /etc/X11/app-defaults/XLogo fb1407c8cb1574726a6eb743b0092407
+ /etc/X11/app-defaults/XLogo-color 439375bf8e3b87f46eebf35f55a8dbb5
+ /etc/X11/app-defaults/Xmag 798a596142ae1b051408171e2b2db096
+ /etc/X11/app-defaults/Xman b34cc2adfe0b89d436864163387417d1
+ /etc/X11/app-defaults/XMore d6a85ee054f522e47a246d4471b6ab49
+Description: X applications
+ This package provides a miscellaneous assortment of X applications
+ that ship with the X Window System, including:
+ - atobm, bitmap, and bmtoa, tools for manipulating bitmap images;
+ - oclock and xclock, graphical clocks;
+ - xbiff, a tool which tells you when you have new email;
+ - xcalc, a scientific calculator desktop accessory;
+ - xclipboard, a tool to manage cut-and-pasted text selections;
+ - xconsole, which monitors system console messages;
+ - xcursorgen, a tool for creating X cursor files from PNGs;
+ - xditview, a viewer for ditroff output;
+ - xedit, a simple text editor for X;
+ - xeyes, a demo program in which a pair of eyes track the pointer;
+ - xgc, a graphics demo;
+ - xload, a monitor for the system load average;
+ - xlogo, a demo program that displays the X logo;
+ - xmag, which magnifies parts of the X screen;
+ - xman, a manual page browser;
+ - xmore, a text pager;
+ - xwd, a utility for taking window dumps ("screenshots") of the X session;
+ - xwud, a viewer for window dumps created by xwd;
+ - Xmark, x11perf, and x11perfcomp, tools for benchmarking graphical
+ operations under the X Window System;
+ .
+ The xbiff, xcalc, xconsole and xman programs use bitmap images provided
+ by the xbitmaps package.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-common
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 640
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Replaces: x-common, xfree86-common, xorg-common, xserver-common (<< 7)
+Depends: debconf (>= 0.5) | debconf-2.0, upstart-job, debianutils (>= 1.13), lsb-base (>= 1.3-9ubuntu2)
+Pre-Depends: debconf | debconf-2.0
+Conflicts: aee (<= 2.2.15b-1), ascd (<= 0.13.2-3), beaver (<= 0.2.5-2), bibview (<= 2.2-8), bugsx (<= 1.08-8), buici-clock (<= 0.4.5+b1), communicator-smotif-477, ctwm (<= 3.7-2), emelfm (<= 0.9.2-7), epan, fte-xwindow (<= 0.50.0-1.3), fvwm1 (<= 1.24r-46), fvwm95 (<= 2.0.43ba-23+b1), gerstensaft (<= 0.2-5.1), ghostview, gipsc (<= 0.4.3-2), grace (<= 1:5.1.18-1), grace6 (<= 5.99.0+final-4), gradio (<= 1.0.1-6), groff (<= 1.18.1.1-7), guitar (<= 0.1.4-11), hamsoft (<< 0.2.3-1), hanterm-classic (<= 3.1.6.0-4), hanterm-xf (<= 1:3.3.1p18-9.2), hfsutils-tcltk (<= 3.2.6-7), ibp (<= 0.21-4), isdnutils-xtools (<= 1:3.8.2005-12-06-4), ivtools-bin (<= 1.1.3-5), ivtools-dev (<= 1.1.3-5), kdrill (<= 6.4-2.1), kinput2-canna (<= 3.1-7), kinput2-canna-wnn (<= 3.1-7), kinput2-wnn (<= 3.1-7), kterm (<= 6.2.0-45), lbxproxy (<< 7.0), libmotif-dev (<= 2.2.3-1.3), libxft-dev (<= 2.1.8.2-5), lm-batmon (<= 0.96-3), login.app (<= 1.2.1-18), lsb-core (<= 3.1-4), lwm (<= 1.2.1-1), mctools-lite (<= 970129-16), mgp (<= 1.11b-6), motif-clients (<= 2.2.3-1.3), navigator-smotif-477, netscape-base-4, olvwm (<= 4.4.3.2p1.4-21), olwm (<= 3.2p1.4-21), oneko (<= 1.2.sakura.6-1), opera (<< 9.10-20060616), pgaccess (<= 1:0.98.8.20030520-2), phototk, pixmap (<= 2.6pl4-14.1), plotmtv (<= 1.4.4t-8.1), pmud (<= 0.10-9), ppxp (<= 0.2001080415-14), ppxp-x11 (<= 0.2001080415-14), procmeter (<= 2.5.1-11), propsel (<= 971130-5.3), proxymngr (<< 7.0), qcam (<= 0.91-11.1), regexplorer (<= 0.1.6-12), seyon (<= 2.20c-20), skkinput (<= 1:2.06.4-4), stella (<< 2.2-1), tkdesk (<= 2.0-5), tkseti (<= 3.06-1), tkworld, twlog (<= 1.3-4), twm (<< 7.0), ucbmpeg-play (<< 2.3p-13), vide (<= 1.21-3), videogen (<= 0.32-1), vtwm (<= 5.4.7-2), w9wm (<= 0.4.2-4), wdm (<= 1.28-1), wily (<= 0.13.41-6), wmavgload (<= 0.7.0-6.1), wmcpu (<= 1.3-4.1), wmdate (<= 0.5-7.1), wmnet (<= 1.05-12), wmnetselect (<= 0.85-5.5), wmscope (<= 3.0-9.1), wmsensors (<= 1.0.4-3.4), wmtv (<= 0.6.5-15), x-common, xautolock (<= 1:2.1-6), xbanner (<= 1.31-23), xbase-clients (<< 1:7.0), xbatt (<= 1.2.1-4), xbattbar (<= 1.4.2-3.1), xcal (<= 4.1-18.2), xcalendar-i18n (<= 4.0.0.i18p1-13.1), xcb (<= 2.4-4), xclip (<= 0.08-5), xclips (<= 6.21-6), xcolors (<= 1.5a-2), xcolorsel (<= 1.1a-11), xdkcal (<= 0.9d-2.1), xdm (<= 1:1.0.1-6), xdmx (<< 1:1.0), xdu (<= 3.0-14), xearth (<= 1.1-10.2), xengine (<= 1.11-9), xephem (<= 3.4-5), xext, xezmlm (<= 1.0.3-11), xfaces (<= 3.3-25), xfishtank (<= 2.2-23.1), xfm (<= 1.4.3-8), xfractint (<< 20.3.01-1), xfree86-common, xfs (<< 1:1.0), xfs-xtt (<= 1:1.4.1.xf430-6), xftp, xfwp (<< 7.0), xgdipc (<= 1.2-0.3), xgmod (<= 3.1-9), xgobi, xgraph (<= 12.1-3), xinput (<= 1.2-5.2), xipmsg (<= 0.8088-1.1), xisp, xlbiff (<< 4.1-4), xli (<= 1.17.0-21), xlockmore (<= 1:5.21-1), xlockmore-gl (<= 1:5.21-1), xlogmaster (<= 1.6.0-8), xmailbox (<= 2.5-9), xmem (<= 1.20-19), xmeter (<= 1.15-6), xmh (<= 6.8.2.dfsg.1-4), xmix (<= 2.1-5), xmon (<= 1.5.6-1.3), xnecview (<= 1.34-2), xnest (<< 1:1.0), xodo (<= 1.2-9.2), xorg-common, xpaste, xpmumon (<= 1.3.0), xpostit (<= 3.3.1-8.2), xpostitplus, xprint (<= 1:0.1.0.alpha1-13), xqbiff (<= 0.75-4), xrn (<= 9.02-7.1), xserver-common (<< 7), xserver-xfree86 (<< 1:7.0), xserver-xfree86-dbg, xserver-xorg (<< 1:7.4~), xslideshow (<= 3.1-8.1), xsysinfo (<= 1.7-2), xtel (<= 3.3.0-5.4), xterm (<< 208-1), xtoolwait (<= 1.3-6), xtrkcad (<= 3.1.4-1), xtrlock (<= 2.0-11), xturqstat (<= 2.2.2sarge1), xutils (<< 1:7.0), xv (<= 3.10a-26), xvfb (<< 1:1.0), xview-clients (<= 3.2p1.4-21), xviewg (<= 3.2p1.4-21), xviewg-dev (<= 3.2p1.4-21), xvkbd (<= 2.6-2.1), xwit (<= 3.4-6), xxkb (<= 1.10-2.1), xzoom (<= 0.3-17), yank (<= 0.2.1-7.2)
+Conffiles:
+ /etc/X11/rgb.txt 09ee098b83d94c7c046d6b55ebe84ae1
+ /etc/X11/Xreset 05d188ccac2f3360af8fe0c216640233
+ /etc/X11/Xreset.d/README b344c222b5daf81926fd3270df374b5f
+ /etc/X11/Xsession 50678401170c9c701d2375bd279690c5
+ /etc/X11/Xsession.d/20x11-common_process-args 862c8286749d25fe58dd98cad24c3fe4
+ /etc/X11/Xsession.d/30x11-common_xresources 61cebe25ee0c64e981b88958dfee6f9c
+ /etc/X11/Xsession.d/40x11-common_xsessionrc db544c8543d1cb3762b9859288e77040
+ /etc/X11/Xsession.d/50x11-common_determine-startup fe7c99261ba27b26aa14926d92447439
+ /etc/X11/Xsession.d/60x11-common_localhost 2353ea72efc0c3e101058c3c56e282b4
+ /etc/X11/Xsession.d/90x11-common_ssh-agent ae74aadf705c5fccf841ef921b45ca72
+ /etc/X11/Xsession.d/99x11-common_start 3874d5e8f3ec888f69adb126e223e168
+ /etc/X11/Xsession.options 210cd520efa87a5197cac01e10b3a84a
+ /etc/X11/Xresources/x11-common b640adb1cd646ec097f8df5b6deca9f0
+ /etc/gdm/failsafeBlacklist 9b860f21bf33a6bfce55f233ba975e41
+ /etc/gdm/failsafeXinit bf497dc1b011021e548c37392bd2a883
+ /etc/gdm/failsafeXServer 791297354d1c22d1616154b3c6060f2d
+ /etc/init.d/x11-common 9a2901c839ade46a2a0f795ad1400fdf
+ /etc/init/failsafe-x.conf b85b200b5d58cbba7c81d51485e210fc
+Description: X Window System (X.Org) infrastructure
+ x11-common contains the filesystem infrastructure required for further
+ installation of the X Window System in any configuration; it does not
+ provide a full installation of clients, servers, libraries, and utilities
+ required to run the X Window System.
+ .
+ A number of terms are used to refer to the X Window System, including "X",
+ "X Version 11", "X11", "X11R6", and "X11R7". The version of X used in
+ Debian is derived from the version released by the X.Org Foundation, and
+ is thus often also referred to as "X.Org". All of the preceding quoted
+ terms are functionally interchangeable in an Debian system.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: net-tools
+Status: install ok installed
+Priority: required
+Section: net
+Installed-Size: 1044
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.60-23ubuntu2
+Replaces: ja-trans (<= 0.8-2), netbase (<< 4.00)
+Depends: libc6 (>= 2.4)
+Conflicts: ja-trans (<= 0.8-2)
+Description: The NET-3 networking toolkit
+ This package includes the important tools for controlling the network
+ subsystem of the Linux kernel. This includes arp, ifconfig, netstat,
+ rarp, nameif and route. Additionally, this package contains utilities
+ relating to particular network hardware types (plipconfig, slattach,
+ mii-tool) and advanced aspects of IP configuration (iptunnel, ipmaddr).
+ .
+ In the upstream package 'hostname' and friends are included. Those are
+ not installed by this package, since there is a special "hostname*.deb".
+Original-Maintainer: net-tools Team <pkg-net-tools-maintainers@lists.alioth.debian.org>
+
+Package: libxfixes3
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 80
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxfixes
+Version: 1:4.0.4-1
+Depends: libc6 (>= 2.2.5), libx11-6
+Description: X11 miscellaneous 'fixes' extension library
+ libXfixes provides an X Window System client interface to the 'XFIXES'
+ extension to the X protocol.
+ .
+ It provides support for Region types, and some cursor functions.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXfixes
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ccache
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.4-17build1
+Depends: libc6 (>= 2.8), zlib1g (>= 1:1.1.4)
+Suggests: distcc
+Description: Compiler results cacher, for fast recompiles
+ ccache is a compiler cache. It speeds up re-compilation of C/C++ code
+ by caching previous compiles and detecting when the same compile is
+ being done again.
+Original-Maintainer: Y Giridhar Appaji Nag <appaji@debian.org>
+Homepage: http://ccache.samba.org
+
+Package: xserver-xorg-video-r128
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 6.8.1-2ubuntu1
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1ubuntu1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1ubuntu1)
+Description: X.Org X server -- ATI r128 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Rage 'r128' series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-r128 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libfs6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 116
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libfs
+Version: 2:1.0.2-1build1
+Depends: libc6 (>= 2.4)
+Description: X11 Font Services library
+ libFS, the Font Services library, provides various functions useful to
+ X11 font servers, and clients connecting to font servers. It is not used
+ outside of these implementations.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libFS
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: debconf-i18n
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1136
+Maintainer: Colin Watson <cjwatson@ubuntu.com>
+Architecture: all
+Source: debconf
+Version: 1.5.28ubuntu4
+Replaces: debconf (<< 1.3.0), debconf-utils (<< 1.3.22)
+Depends: debconf, liblocale-gettext-perl, libtext-iconv-perl, libtext-wrapi18n-perl, libtext-charwidth-perl
+Conflicts: debconf-english, debconf-utils (<< 1.3.22)
+Description: full internationalization support for debconf
+ This package provides full internationalization for debconf, including
+ translations into all available languages, support for using translated
+ debconf templates, and support for proper display of multibyte character
+ sets.
+Original-Maintainer: Debconf Developers <debconf-devel@lists.alioth.debian.org>
+
+Package: libxmu6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 164
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxmu
+Version: 2:1.0.5-1
+Depends: libc6 (>= 2.7), libx11-6, libxext6, libxt6
+Description: X11 miscellaneous utility library
+ libXmu provides a set of miscellaneous utility convenience functions for X
+ libraries to use. libXmuu is a lighter-weight version that does not depend
+ on libXt or libXext; for more information, see libxmuu1.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXmu
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: grep
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1188
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.5.4-4build1
+Provides: rgrep
+Pre-Depends: libc6 (>= 2.4)
+Suggests: libpcre3 (>= 7.7)
+Conflicts: rgrep
+Description: GNU grep, egrep and fgrep
+ 'grep' is a utility to search for text in files; it can be used from the
+ command line or in scripts. Even if you don't want to use it, other packages
+ on your system probably will.
+ .
+ The GNU family of grep utilities may be the "fastest grep in the west".
+ GNU grep is based on a fast lazy-state deterministic matcher (about
+ twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
+ search for a fixed string that eliminates impossible text from being
+ considered by the full regexp matcher without necessarily having to
+ look at every character. The result is typically many times faster
+ than Unix grep or egrep. (Regular expressions containing backreferencing
+ will run more slowly, however.)
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.gnu.org/software/grep/
+
+Package: plymouth
+Status: install ok installed
+Priority: required
+Section: x11
+Installed-Size: 480
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.8.2-2ubuntu2
+Depends: libc6 (>= 2.8), libdrm-intel1 (>= 2.4.9), libdrm-nouveau1 (>= 2.4.11-1ubuntu1~), libdrm-radeon1 (>= 2.4.17), libdrm2 (>= 2.4.3), libplymouth2 (= 0.8.2-2ubuntu2), upstart-job, udev (>= 149-2), mountall (>= 2.0), initramfs-tools
+Recommends: plymouth-theme-ubuntu-text | plymouth-theme
+Breaks: gdm (<< 2.29.1-0ubuntu4), kdm (<< 4:4.4.2-0ubuntu6), lubuntu-plymouth-theme (<= 0.4), ubuntustudio-plymouth-theme (<= 0.38), xubuntu-plymouth-theme (<< 10.04.4)
+Conflicts: usplash
+Conffiles:
+ /etc/init/plymouth.conf a0352db1159bc9f4322170dd78cd1dae
+ /etc/init/plymouth-log.conf 65d2943a69f455dec3fed43fd7996d76
+ /etc/init/plymouth-splash.conf 5daa5d5dafaee30442e4d8d82e542c0a
+ /etc/init/plymouth-stop.conf f422b651bb1fe8164f968bb58e18bb6c
+Description: graphical boot animation and logger - main package
+ Plymouth is an application that runs very early in the boot process
+ (even before the root filesystem is mounted!) that provides a graphical
+ boot animation while the boot process happens in the background.
+
+Package: libdrm-nouveau1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 456
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.3)
+Description: Userspace interface to nouveau-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the nouveau-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: kbd
+Status: install ok installed
+Priority: extra
+Section: utils
+Installed-Size: 1632
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.15-1ubuntu3
+Replaces: open, util-linux (<< 2.11)
+Provides: console-utilities, open
+Depends: libc6 (>= 2.7), console-setup, lsb-base (>= 3.0-10), initramfs-tools
+Conflicts: console-utilities, kbd-data, open, util-linux (<< 2.11)
+Conffiles:
+ /etc/kbd/config 182c6394322efb8a10e6e95836ad220d
+ /etc/kbd/remap 2f1f15d62b45ab43c04b3ddbfcf591ec
+Description: Linux console font and keytable utilities
+ This package allows you to set up the Linux console, change the font,
+ resize text mode virtual consoles and remap the keyboard.
+ .
+ You will probably want to install a set of data files, such as the one
+ in the “console-setup” package.
+Original-Maintainer: Console utilities maintainers <pkg-kbd-devel@lists.alioth.debian.org>
+
+Package: libxdamage1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 64
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxdamage
+Version: 1:1.1.2-1
+Depends: libc6 (>= 2.2.5), libx11-6, libxfixes3 (>= 1:4.0.1)
+Description: X11 damaged region extension library
+ libXdamage provides an X Window System client interface to the DAMAGE
+ extension to the X protocol.
+ .
+ The Damage extension provides for notification of when on-screen regions have
+ been 'damaged' (altered).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXdamage
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: x11-xserver-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 556
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.5+1ubuntu2
+Replaces: iceauth, sessreg, xbase-clients (<< 1:7.3), xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xutils (<< 1:7.2), xvidtune
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libx11-6 (>= 0), libxau6, libxaw7, libxext6 (>= 0), libxi6 (>= 0), libxmu6, libxmuu1, libxrandr2 (>= 2:1.2.99.3), libxrender1, libxt6, libxxf86vm1, cpp
+Pre-Depends: x11-common (>= 1:7.0.0)
+Suggests: nickle, cairo-5c, xorg-docs-core
+Conflicts: iceauth, sessreg, xgamma, xhost, xmodmap, xrandr, xrdb, xrefresh, xrgb, xset, xsetmode, xsetpointer, xsetroot, xstdcmap, xvidtune
+Conffiles:
+ /etc/X11/app-defaults/Xvidtune b8a276636b9bee314fa77b468a54a84a
+Description: X server utilities
+ An X client is a program that interfaces with an X server (almost always via
+ the X libraries), and thus with some input and output hardware like a
+ graphics card, monitor, keyboard, and pointing device (such as a mouse).
+ .
+ This package provides a miscellaneous assortment of X Server utilities
+ that ship with the X Window System, including:
+ - iceauth, a tool for manipulating ICE protocol authorization records;
+ - rgb;
+ - sessreg, a simple program for managing utmp/wtmp entries;
+ - xcmsdb, a device color characteristic utility for the X Color Management
+ System;
+ - xgamma, a tool for querying and setting a monitor's gamma correction;
+ - xhost, a very dangerous program that you should never use;
+ - xmodmap, a utility for modifying keymaps and pointer button mappings in X;
+ - xrandr, a command-line interface to the RandR extension;
+ - xrdb, a tool to manage the X server resource database;
+ - xrefresh, a tool that forces a redraw of the X screen;
+ - xset, a tool for setting miscellaneous X server parameters;
+ - xsetmode and xsetpointer, tools for handling X Input devices;
+ - xsetroot, a tool for tailoring the appearance of the root window;
+ - xstdcmap, a utility to selectively define standard colormap properties;
+ - xvidtune, a tool for customizing X server modelines for your monitor.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxaw7
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 516
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxaw
+Version: 2:1.0.7-1
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxmu6, libxpm4, libxt6
+Description: X11 Athena Widget library
+ libXaw7 provides the second version of Xaw, the Athena Widgets tookit,
+ which is largely used by legacy X applications. This version is the
+ most common version, as version 6 is considered deprecated, and version
+ 8, which adds Xprint support, is unsupported and not widely used.
+ In general, use of a more modern toolkit such as GTK+ is recommended.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXaw
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: upstart
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 856
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 0.6.5-6
+Replaces: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Provides: startup-tasks, system-services, upstart-compat-sysv, upstart-job
+Depends: libc6 (>= 2.4), libdbus-1-3 (>= 1.2.16), libnih-dbus1 (>= 1.0.0), libnih1 (>= 1.0.0), libudev0 (>= 151-5), sysvinit-utils, sysv-rc, initscripts, mountall, ifupdown (>= 0.6.8ubuntu29)
+Conflicts: startup-tasks, system-services, sysvinit, upstart-compat-sysv, upstart-job
+Conffiles:
+ /etc/dbus-1/system.d/Upstart.conf 64be74cddb0c74b7d98202b40389784c
+ /etc/init/control-alt-delete.conf 16e6603524084b63b0f0ca04eb56757e
+ /etc/init/rc-sysinit.conf bd0415c6387debecfff37a371b07002a
+ /etc/init/rc.conf c5e4b13b644d79d5a5c02e1396159c00
+ /etc/init/rcS.conf 918e9d799d6aa99a0d96538d9685821d
+ /etc/init/tty1.conf 543a3404e714bb96b676770c8334d86d
+ /etc/init/tty2.conf 5eed82253d8c362021c344f1dbdc863b
+ /etc/init/tty3.conf b75577836957bb5adb50b3482c429edb
+ /etc/init/tty4.conf 27b4a36d59bf74fd6792a69394511e42
+ /etc/init/tty5.conf 9803918babed47f733554dcd556d09d1
+ /etc/init/tty6.conf 34f7b6971a5580f5fb6a2ff6f14af996
+ /etc/init/upstart-udev-bridge.conf b3d59bd6e5debf634e4fe258d5a4dd71
+Description: event-based init daemon
+ upstart is a replacement for the /sbin/init daemon which handles
+ starting of tasks and services during boot, stopping them during
+ shutdown and supervising them while the system is running.
+Homepage: http://upstart.ubuntu.com/
+
+Package: xserver-xorg-video-neomagic
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.4-2
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-neomagic
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-neomagic
+Description: X.Org X server -- Neomagic display driver
+ This package provides the driver for Neomagic MagicGraph chipsets, which are
+ commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-neomagic driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libcwidget3
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 844
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cwidget
+Version: 0.5.13-1ubuntu1
+Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libncursesw5 (>= 5.6+20071006-3), libsigc++-2.0-0c2a (>= 2.0.2), libstdc++6 (>= 4.1.1)
+Suggests: libcwidget-dev
+Description: high-level terminal interface library for C++ (runtime files)
+ libcwidget is a modern user interface library modeled on GTK+ and Qt,
+ but using curses as its display layer and with widgets that are
+ tailored to a terminal environment.
+ .
+ This package contains the files that are required to run programs
+ compiled against libcwidget.
+Homepage: http://cwidget.alioth.debian.org
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: libsasl2-modules
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 500
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cyrus-sasl2
+Version: 2.1.23.dfsg1-5ubuntu1
+Depends: libsasl2-2 (= 2.1.23.dfsg1-5ubuntu1), libc6 (>= 2.4), libssl0.9.8 (>= 0.9.8k-1)
+Suggests: libsasl2-modules-otp, libsasl2-modules-ldap, libsasl2-modules-sql, libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal
+Description: Cyrus SASL - pluggable authentication modules
+ This is the Cyrus SASL API implementation, version 2.1. See package
+ libsasl2-2 and RFC 2222 for more information.
+ .
+ This package provides the following SASL modules: LOGIN, PLAIN, ANONYMOUS,
+ NTLM, CRAM-MD5, and DIGEST-MD5 (with DES support).
+Homepage: http://cyrusimap.web.cmu.edu/
+Original-Maintainer: Debian Cyrus SASL Team <pkg-cyrus-sasl2-debian-devel@lists.alioth.debian.org>
+
+Package: libsasl2-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 272
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: cyrus-sasl2
+Version: 2.1.23.dfsg1-5ubuntu1
+Replaces: libsasl2
+Depends: libc6 (>= 2.4), libdb4.8
+Recommends: libsasl2-modules (= 2.1.23.dfsg1-5ubuntu1)
+Conflicts: libsasl2-gssapi-mit (<< 2.1.22), libsasl2-krb4-mit (<< 2.1.22), postfix (<< 2.3.4-3)
+Description: Cyrus SASL - authentication abstraction library
+ This is the Cyrus SASL API implementation, version 2.1.
+ .
+ SASL is the Simple Authentication and Security Layer, a method for
+ adding authentication support to connection-based protocols. To use
+ SASL, a protocol includes a command for identifying and
+ authenticating a user to a server and for optionally negotiating
+ protection of subsequent protocol interactions. If its use is
+ negotiated, a security layer is inserted between the protocol and the
+ connection. See RFC 2222 for more information.
+ .
+ Any of: ANONYMOUS, CRAM-MD5, DIGEST-MD5, GSSAPI (MIT or Heimdal
+ Kerberos 5), NTLM, OTP, PLAIN, or LOGIN can be used. If you intend to
+ use this package on a server that provides SASL authentication, then
+ you must install some of the libsasl2-modules* packages.
+Homepage: http://cyrusimap.web.cmu.edu/
+Original-Maintainer: Debian Cyrus SASL Team <pkg-cyrus-sasl2-debian-devel@lists.alioth.debian.org>
+
+Package: passwd
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2640
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: shadow
+Version: 1:4.1.4.2-1ubuntu2
+Replaces: manpages-tr (<< 1.0.5), manpages-zh (<< 1.5.1-1)
+Depends: libc6 (>= 2.4), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libpam-modules, debianutils (>= 2.15.2)
+Conffiles:
+ /etc/default/useradd cc9f9a7713ab62a32cd38363d958f396
+ /etc/pam.d/passwd eaf2ad85b5ccd06cceb19a3e75f40c63
+ /etc/pam.d/chfn 4d466e00a348ba426130664d795e8afa
+ /etc/pam.d/chsh a6e9b589e90009334ffd030d819290a6
+ /etc/pam.d/chpasswd 9900720564cb4ee98b7da29e2d183cb2
+ /etc/pam.d/newusers 1454e29bfa9f2a10836563e76936cea5
+Description: change and administer password and group data
+ This package includes passwd, chsh, chfn, and many other programs to
+ maintain password and group data.
+ .
+ Shadow passwords are supported. See /usr/share/doc/passwd/README.Debian
+Homepage: http://pkg-shadow.alioth.debian.org/
+Original-Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
+
+Package: xfonts-75dpi
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 4476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.1
+Depends: xfonts-utils
+Suggests: xfs | xserver
+Conffiles:
+ /etc/X11/fonts/75dpi/xfonts-75dpi.alias 6bc48023f2ae7f3bfc105db7b0ee6b49
+Description: 75 dpi fonts for X
+ xfonts-75dpi provides a set of bitmapped fonts at 75 dots per inch. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ This package contains only fonts in the ISO 10646-1 and ISO 8859-1
+ encodings, to conserve disk space. For other encodings, see the
+ xfonts-75dpi-transcoded package.
+ .
+ This package and xfonts-100dpi provide the same set of fonts, rendered at
+ different resolutions; only one or the other is necessary, but both may be
+ installed. xfonts-75dpi may be more suitable for small monitors and/or
+ small screen resolutions (under 1024x768).
+ .
+ This package requires the xfonts-utils package to prepare the font
+ directories for use by an X server or X font server.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: hostname
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 112
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 3.03ubuntu1
+Replaces: nis (<< 3.17-30)
+Pre-Depends: libc6 (>= 2.4), upstart-job
+Conflicts: nis (<< 3.17-30)
+Conffiles:
+ /etc/init/hostname.conf e426591274acd83666295d90a937ee7a
+Description: utility to set/show the host name or domain name
+ This package provides commands which can be used to display the system's
+ DNS name, and to display or set its hostname or NIS domain name.
+Original-Maintainer: Debian Hostname Team <hostname-devel@lists.alioth.debian.org>
+
+Package: xkb-data
+Status: install ok installed
+Priority: extra
+Section: x11
+Installed-Size: 3384
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xkeyboard-config
+Version: 1.8-1ubuntu8
+Breaks: libx11-6 (<< 2:1.1)
+Description: X Keyboard Extension (XKB) configuration data
+ This package contains configuration data used by the X Keyboard
+ Extension (XKB), which allows selection of keyboard layouts when
+ using a graphical interface.
+ .
+ Every X11 vendor provides its own XKB data files, so keyboard layout
+ designers have to send their layouts to several places. The
+ xkeyboard-config project has been launched at FreeDesktop in order
+ to provide a central repository that could be used by all vendors.
+Homepage: http://www.freedesktop.org/Software/XKeyboardConfig
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: fakeroot
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 372
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.14.4-1ubuntu1
+Depends: libc6 (>= 2.7)
+Description: Gives a fake root environment
+ This package is intended to enable something like:
+ dpkg-buildpackage -rfakeroot
+ i.e. to remove the need to become root for a package build.
+ This is done by setting LD_PRELOAD to libfakeroot.so,
+ which provides wrappers around getuid, chown, chmod, mknod,
+ stat, and so on, thereby creating a fake root environment.
+ .
+ fakeroot requires SYSV IPC or TCP to operate.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libacl1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: acl
+Version: 2.2.49-2
+Depends: libattr1 (>= 2.4.41-1), libc6 (>= 2.4)
+Conflicts: acl (<< 2.0.0), libacl1-kerberos4kth
+Description: Access control list shared library
+ This package contains the libacl.so dynamic library containing
+ the POSIX 1003.1e draft standard 17 functions for manipulating
+ access control lists.
+Original-Maintainer: Nathan Scott <nathans@debian.org>
+Homepage: http://savannah.nongnu.org/projects/acl/
+
+Package: python2.6-minimal
+Status: install ok installed
+Priority: required
+Section: python
+Installed-Size: 5044
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: python2.6
+Version: 2.6.5-1ubuntu6
+Replaces: python2.6 (<< 2.6.4~rc1-1)
+Depends: libc6 (>= 2.4), libssl0.9.8 (>= 0.9.8k-1), zlib1g (>= 1:1.2.0)
+Recommends: python2.6
+Suggests: binfmt-support
+Conflicts: binfmt-support (<< 1.1.2), python-central (<< 0.6.11ubuntu6)
+Conffiles:
+ /etc/python2.6/sitecustomize.py d6b276695157bde06a56ba1b2bc53670
+Description: A minimal subset of the Python language (version 2.6)
+ This package contains the interpreter and some essential modules. It can
+ be used in the boot process for some basic tasks.
+ See /usr/share/doc/python2.6-minimal/README.Debian for a list of the modules
+ contained in this package.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+Python-Runtime: python2.6
+Python-Version: 2.6
+
+Package: libpam-runtime
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1248
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: pam
+Version: 1.1.1-2ubuntu2
+Replaces: libpam0g-dev, libpam0g-util
+Depends: debconf (>= 1.5.19), libpam-modules (>= 1.0.1-6)
+Conflicts: libpam0g-util
+Conffiles:
+ /etc/pam.conf 87fc76f18e98ee7d3848f6b81b3391e5
+ /etc/pam.d/other 31aa7f2181889ffb00b87df4126d1701
+Description: Runtime support for the PAM library
+ Contains configuration files and directories required for
+ authentication to work on Debian systems. This package is required
+ on almost all installations.
+Homepage: http://pam.sourceforge.net/
+Original-Maintainer: Steve Langasek <vorlon@debian.org>
+
+Package: libslang2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1520
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: slang2
+Version: 2.2.2-2ubuntu1
+Depends: libc6 (>= 2.4)
+Recommends: libpng12-0
+Description: The S-Lang programming library - runtime version
+ S-Lang is a C programmer's library that includes routines for the rapid
+ development of sophisticated, user friendly, multi-platform applications.
+ .
+ This package contains only the shared library libslang.so.* and copyright
+ information. It is only necessary for programs that use this library (such
+ as jed and slrn). If you plan on doing development with S-Lang, you will
+ need the companion -dev package as well.
+Original-Maintainer: Alastair McKinstry <mckinstry@debian.org>
+
+Package: initscripts
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 336
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Depends: libc6 (>= 2.4), mount (>= 2.11x-1), debianutils (>= 2.13.1), lsb-base (>= 3.2-14), sysvinit-utils (>= 2.86.ds1-39), sysv-rc | file-rc, passwd, upstart
+Recommends: psmisc, e2fsprogs
+Breaks: hostname (<< 2.95ubuntu1~boot2), rsyslog (<< 4.2.0-2ubuntu3~boot1), udev (<< 146-2~boot6), upstart (<< 0.6.3-2~boot4)
+Conflicts: libdevmapper1.02.1 (<< 2:1.02.24-1)
+Conffiles:
+ /etc/init.d/bootlogd 6e90878c898804bf9059f8a304faed5d
+ /etc/init.d/stop-bootlogd e1a190ec1150ff0c1514eb318be9e227
+ /etc/init.d/stop-bootlogd-single 1046585487345dd2d5d4b2841fb4a75b
+ /etc/init.d/halt 6ae1b3b1b8198567a5e32116077f12a2
+ /etc/init.d/killprocs 5e404d35091fab6c4889302736ed4602
+ /etc/init.d/ondemand cc2a79a545967eec1170dc2bb44468e0
+ /etc/init.d/rc.local 2964c1446c6453cdde4213eede97ac38
+ /etc/init.d/reboot 1b9db1ef7bfd79b128ef85d5065721a6
+ /etc/init.d/sendsigs 2a1f251ca12ef06f46a166f9a37e2400
+ /etc/init.d/single dc13cb373c5c098a8fb95424701373e3
+ /etc/init.d/umountfs 842eba3cdd65c66a424f80a53f87d704
+ /etc/init.d/umountnfs.sh b824a44ff24087eb2bf6780db7dfd9dc
+ /etc/init.d/umountroot aa9aa9db438cc99f76b065827971ff42
+ /etc/init.d/urandom d0385e199d51b19181b77dc55211ac02
+ /etc/default/bootlogd 70a108da715299a6e33470eb450669fb
+ /etc/default/devpts fc857c5ac5fb84d80720ed4d1c624f6e
+ /etc/default/halt 18d9844cf8ca8608e2a559a4555e593a
+ /etc/default/tmpfs d959a98cfb571cd7fdfb36bbb3d0a5c8
+Description: scripts for initializing and shutting down the system
+ The scripts in this package initialize a standard Debian
+ GNU/Linux system at boot time and shut it down at halt or
+ reboot time.
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: libblkid1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 248
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: util-linux
+Version: 2.17.2-0ubuntu1
+Depends: libc6 (>= 2.4), libuuid1 (>= 2.16)
+Conffiles:
+ /etc/blkid.conf 7f4c49e01e0a23d2f4b20eeb32e95abb
+Description: block device id library
+ The blkid library which allows system programs like fsck and
+ mount to quickly and easily find block devices by filesystem UUID and
+ LABEL. This allows system administrators to avoid specifying
+ filesystems by hard-coded device names, but via a logical naming
+ system instead.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: xinput
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 92
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.5.0-2ubuntu1
+Depends: libc6 (>= 2.4), libx11-6 (>= 2:1.2.99.901), libxext6, libxi6 (>= 2:1.2.99.4)
+Description: Runtime configuration and test of XInput devices
+ Xinput is an utility for configuring and testing XInput
+ devices.
+Original-Maintainer: Julien Cristau <jcristau@debian.org>
+
+Package: libss2
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 120
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: e2fsprogs
+Version: 1.41.11-1ubuntu2
+Replaces: e2fsprogs (<< 1.34-1)
+Depends: libcomerr2, libc6 (>= 2.11)
+Description: command-line interface parsing library
+ This package includes a tool that parses a command table to generate
+ a simple command-line interface parser, the include files needed to
+ compile and use it, and the static libs.
+ .
+ It was originally inspired by the Multics SubSystem library.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: findutils
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 1892
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.4.2-1ubuntu1
+Pre-Depends: libc6 (>= 2.7)
+Suggests: mlocate | locate | slocate
+Description: utilities for finding files--find, xargs
+ GNU findutils provides utilities to find files meeting specified
+ criteria and perform various actions on the files which are found.
+ This package contains 'find' and 'xargs'; however, 'locate' has
+ been split off into a separate package.
+Homepage: http://savannah.gnu.org/projects/findutils/
+Original-Maintainer: Andreas Metzler <ametzler@debian.org>
+
+Package: libxft2
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 152
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xft
+Version: 2.1.14-1ubuntu1
+Depends: libc6 (>= 2.4), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libx11-6, libxrender1
+Description: FreeType-based font drawing library for X
+ Xft provides a client-side font API for X applications, making the FreeType
+ font rasterizer available to X clients. Fontconfig is used for font
+ specification resolution. Where available, the RENDER extension handles
+ glyph drawing; otherwise, the core X protocol is used.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xz-utils
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.999.9beta+20091116-1
+Depends: libc6 (>= 2.7), liblzma1 (>= 4.999.9beta)
+Conflicts: xz-lzma (<< 4.999.9beta+20091004-1)
+Description: XZ-format compression utilities
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ This package provides the command line tools for working with XZ
+ compression, including xz, unxz, xzcat, xzgrep, and so on. They can
+ also handle the older LZMA format, and if invoked via appropriate
+ symlinks will emulate the behavior of the commands in the lzma
+ package.
+ .
+ The XZ format is similar to the older LZMA format but includes some
+ improvements for general use:
+ .
+ * 'file' magic for detecting XZ files;
+ * crc64 data integrity check;
+ * limited random-access reading support;
+ * improved support for multithreading (not used in xz-utils);
+ * support for flushing the encoder.
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Homepage: http://tukaani.org/xz/
+
+Package: xserver-xorg-video-nouveau
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 296
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.0.15+git20100219+9b4118d-0ubuntu5
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm-nouveau1 (>= 2.4.16), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- Nouveau display driver (experimental)
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Although the nouveau project aims to provide full 3D support it is not yet
+ complete, and these packages do not include any 3D support.
+ Users requiring 3D support should use the non-free "nvidia" driver.
+ .
+ This package is built from the FreeDesktop.org xf86-video-nouveau driver.
+Homepage: http://nouveau.freedesktop.org/wiki/
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xfonts-encodings
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 832
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1:1.0.3-1
+Replaces: xfonts-base (<< 1:1.0.0)
+Depends: x11-common
+Description: Encodings for X.Org fonts
+ This package contains the encodings that map to specific characters.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libx11-6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 1456
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libx11
+Version: 2:1.3.2-1ubuntu3
+Depends: libc6 (>= 2.4), libxcb1 (>= 1.2), libx11-data
+Conflicts: xlibs-data (<< 1:7.0.0)
+Description: X11 client-side library
+ This package provides a client interface to the X Window System, otherwise
+ known as 'Xlib'. It provides a complete API for the basic functions of the
+ window system.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: e2fsprogs
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 2148
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.41.11-1ubuntu2
+Replaces: hurd (<= 20040301-1), libblkid1 (<< 1.38+1.39-WIP-2005.12.10-2), libuuid1 (<< 1.38+1.39-WIP-2005.12.10-2)
+Pre-Depends: e2fslibs (= 1.41.11-1ubuntu2), libblkid1 (>= 1.34-1), libc6 (>= 2.11), libcomerr2 (>= 1.34-1), libss2 (>= 1.34-1), libuuid1 (>= 1.34-1), util-linux (>= 2.15~rc1-1)
+Suggests: gpart, parted, e2fsck-static
+Conflicts: dump (<< 0.4b4-4), initscripts (<< 2.85-4), quota (<< 1.55-8.1), sysvinit (<< 2.85-4)
+Conffiles:
+ /etc/mke2fs.conf 33c2a4bda46c7cee498bb660084492dd
+Description: ext2/ext3/ext4 file system utilities
+ The ext2, ext3 and ext4 file systems are successors of the original ext
+ ("extended") file system. They are the main file system types used for
+ hard disks on Debian and other Linux systems.
+ .
+ This package contains programs for creating, checking, and maintaining
+ ext-based file systems, and the generic fsck wrapper.
+Homepage: http://e2fsprogs.sourceforge.net
+Original-Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
+
+Package: libsigc++-2.0-0c2a
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 100
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsigc++-2.0
+Version: 2.2.4.2-1
+Replaces: libsigc++-1.9-0, libsigc++-2.0-0, libsigc++-2.0-0c2
+Depends: libc6 (>= 2.2.5), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
+Conflicts: libsigc++-1.9-0, libsigc++-2.0-0, libsigc++-2.0-0c2
+Description: type-safe Signal Framework for C++ - runtime
+ This library implements a full callback system for use in widget
+ libraries, abstract interfaces, and general programming. It provides
+ the ability to connect an abstract callback to a class method,
+ function, or function object, and contains adaptor classes for the
+ connection of dissimilar callbacks.
+ .
+ These are the runtime files for libsigc++, needed only if you wish to
+ run software which depends on it.
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: liblzma1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 288
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: xz-utils
+Version: 4.999.9beta+20091116-1
+Depends: libc6 (>= 2.4)
+Description: XZ-format compression library
+ XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm
+ compression format, which provides memory-hungry but powerful
+ compression (often better than bzip2) and fast, easy decompression.
+ .
+ The native format of liblzma is XZ; it also supports raw (headerless)
+ streams and the older LZMA format used by lzma. (For 7-Zip's related
+ format, use the p7zip package instead.)
+Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com>
+Homepage: http://tukaani.org/xz/
+
+Package: libnih1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 252
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: libnih
+Version: 1.0.1-1
+Depends: libc6 (>> 2.10), libc6 (<< 2.12)
+Description: NIH Utility Library
+ libnih is a light-weight "standard library" of C functions to ease the
+ development of other libraries and applications, especially those
+ normally found in /lib.
+ .
+ This package contains the shared library.
+
+Package: cpp
+Status: install ok installed
+Priority: optional
+Section: interpreters
+Installed-Size: 104
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-defaults (1.93ubuntu1)
+Version: 4:4.4.3-1ubuntu1
+Depends: cpp-4.4 (>= 4.4.3-1)
+Suggests: cpp-doc
+Conflicts: cpp-doc (<< 1:2.95.3)
+Description: The GNU C preprocessor (cpp)
+ The GNU C preprocessor is a macro processor that is used automatically
+ by the GNU C compiler to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+ .
+ This is a dependency package providing the default GNU C preprocessor.
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libgnutls26
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 1176
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnutls26
+Version: 2.8.5-2
+Replaces: gnutls0, gnutls0.4, gnutls3
+Depends: libc6 (>= 2.8), libgcrypt11 (>= 1.4.2), libtasn1-3 (>= 1.6-0), zlib1g (>= 1:1.1.4)
+Suggests: gnutls-bin
+Conflicts: gnutls0, gnutls0.4
+Description: the GNU TLS library - runtime library
+ gnutls is a portable library which implements the Transport Layer
+ Security (TLS) 1.0 and Secure Sockets Layer (SSL) 3.0 protocols.
+ .
+ Currently gnutls implements:
+ - the TLS 1.0 and SSL 3.0 protocols, without any US-export
+ controlled algorithms
+ - X509 Public Key Infrastructure (with several limitations).
+ - SRP for TLS authentication.
+ - TLS Extension mechanism
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Debian GnuTLS Maintainers <pkg-gnutls-maint@lists.alioth.debian.org>
+Homepage: http://www.gnutls.org/
+
+Package: xserver-xorg-video-mga
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 284
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.4.11.dfsg-2ubuntu1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-mga
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Suggests: firmware-linux
+Conflicts: xserver-xorg-driver-mga
+Description: X.Org X server -- MGA display driver
+ This package provides the driver for the Matrox MGA family of chipsets,
+ including Matrox Millennium and Mystique cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-mga driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: insserv
+Status: install ok installed
+Priority: required
+Section: misc
+Installed-Size: 292
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.12.0-14
+Depends: libc6 (>= 2.7)
+Suggests: bootchart
+Breaks: sysv-rc (<< 2.87dsf-3)
+Conffiles:
+ /etc/bash_completion.d/insserv 32975fe14795d6fce1408d5fd22747fd
+ /etc/insserv.conf 9c13a4d5da9cb2c2fa550a30705f041a
+Description: Tool to organize boot sequence using LSB init.d script dependencies
+ The insserv program is used to update the order of symlinks in
+ /etc/rc?.d/ with sysv-rc based on dependencies specified in the
+ scripts themselves using LSB init.d script headers.
+ .
+ This allow each package maintainer to specify their init.d script
+ relation to other scripts and make it possible to detect and reject
+ script dependency loops as well as making sure all scripts start in
+ their intended order.
+ .
+ The program insserv in this package should be used with care and
+ together with the sysv-rc package, as using it incorrectly can lead
+ to an unbootable system.
+Original-Maintainer: Petter Reinholdtsen <pere@debian.org>
+Homepage: http://ftp.suse.com/pub/projects/init/
+
+Package: xserver-xorg-video-i128
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 140
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i128
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-i128
+Description: X.Org X server -- i128 display driver
+ This package provides the driver for Number 9 Imagine (I128) video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-i128 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: gzip
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 284
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.3.12-9ubuntu1
+Pre-Depends: libc6 (>= 2.4)
+Suggests: less
+Description: GNU compression utilities
+ This package provides the standard GNU file compression utilities, which
+ are also the default compression tools for Debian. They typically operate
+ on files with names ending in '.gz', but can also decompress files ending
+ in '.Z' created with 'compress'.
+Original-Maintainer: Bdale Garbee <bdale@gag.com>
+
+Package: dpkg
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 6728
+Origin: debian
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Bugs: debbugs://bugs.debian.org
+Architecture: amd64
+Version: 1.15.5.6ubuntu4
+Replaces: manpages-de (<= 0.4-3), manpages-pl (<= 20051117-1)
+Pre-Depends: libc6 (>= 2.11), coreutils (>= 5.93-1), lzma
+Suggests: apt
+Breaks: emacs21 (<< 21.4a+1-5.7), emacs21-nox (<< 21.4a+1-5.7), emacs22 (<= 22.2-0ubuntu2), emacs22-gtk (<= 22.2-0ubuntu2), emacs22-nox (<= 22.2-0ubuntu2), jed (<< 1:0.99.18+dfsg.1-13), jed-extra (<= 2.5.3-2), konqueror (<= 4:4.2.96-1), pinfo (<< 0.6.9-3.1), tkinfo (<< 2.8-3.1), xemacs21-support (<< 21.4.22-2), xjed (<< 1:0.99.18+dfsg.1-13)
+Conflicts: apt (<< 0.7.7), aptitude (<< 0.4.7-1), dpkg-dev (<< 1.14.16), dpkg-iasearch (<< 0.11), sysvinit (<< 2.82-1)
+Conffiles:
+ /etc/dpkg/dpkg.cfg f4413ffb515f8f753624ae3bb365b81b
+ /etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
+ /etc/cron.daily/dpkg b6b8dc21210ea50db7cc4636f521758f
+ /etc/logrotate.d/dpkg 9e25c8505966b5829785f34a548ae11f
+Description: Debian package management system
+ This package provides the low-level infrastructure for handling the
+ installation and removal of Debian software packages.
+ .
+ For Debian package development tools, install dpkg-dev.
+Homepage: http://wiki.debian.org/Teams/Dpkg
+Original-Maintainer: Dpkg Developers <debian-dpkg@lists.debian.org>
+
+Package: libpcre3
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 456
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pcre3
+Version: 7.8-3build1
+Depends: libc6 (>= 2.4)
+Conflicts: libpcre3-dev (<= 4.3-3)
+Description: Perl 5 Compatible Regular Expression Library - runtime files
+ This is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ .
+ This package contains the runtime libraries.
+Original-Maintainer: Mark Baker <mark@mnb.org.uk>
+
+Package: aptitude
+Status: install ok installed
+Priority: important
+Section: admin
+Installed-Size: 9828
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.4.11.11-1ubuntu10
+Depends: libapt-pkg-libc6.10-6-4.8, libc6 (>= 2.4), libcwidget3, libept0 (>= 0.5.30), libgcc1 (>= 1:4.1.1), libncursesw5 (>= 5.6+20071006-3), libsigc++-2.0-0c2a (>= 2.0.2), libstdc++6 (>= 4.4.0), libxapian15, zlib1g (>= 1:1.1.4)
+Recommends: libparse-debianchangelog-perl
+Suggests: aptitude-doc-en | aptitude-doc, tasksel, debtags
+Conffiles:
+ /etc/apt/apt.conf.d/05aptitude 85b39c8f9413a8f29ddcce844d026929
+ /etc/cron.daily/aptitude f934222d5eb13cb132e2751bdb023318
+ /etc/logrotate.d/aptitude fb66bc5dc8c13edbcb83cea15ff86959
+Description: terminal-based package manager
+ aptitude is a terminal-based package manager with a number of useful
+ features, including: a mutt-like syntax for matching packages in a
+ flexible manner, dselect-like persistence of user actions, the
+ ability to retrieve and display the Debian changelog of most
+ packages, and a command-line mode similar to that of apt-get.
+ .
+ aptitude is also Y2K-compliant, non-fattening, naturally cleansing,
+ and housebroken.
+Original-Maintainer: Daniel Burrows <dburrows@debian.org>
+
+Package: libept0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 528
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libept
+Version: 0.5.30
+Depends: libapt-pkg-libc6.10-6-4.8, libc6 (>= 2.8), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.4.0), libxapian15, zlib1g (>= 1:1.1.4)
+Description: High-level library for managing Debian package information
+ The library defines a very minimal framework in which many sources of data
+ about Debian packages can be implemented and queried together.
+ .
+ The library includes four data sources:
+ .
+ * APT: access the APT database
+ * Debtags: access the Debtags tag information
+ * Popcon: access Popcon package scores
+ * The Xapian index built by apt-xapian-index
+ .
+ This is the shared library.
+Original-Maintainer: Enrico Zini <enrico@debian.org>
+
+Package: libncursesw5
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 556
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: ncurses
+Version: 5.7+20090803-2ubuntu3
+Depends: libc6 (>= 2.4)
+Recommends: libgpm2
+Description: shared libraries for terminal handling (wide character support)
+ This package contains the shared libraries necessary to run programs
+ compiled with ncursesw, which includes support for wide characters.
+Homepage: ftp://invisible-island.net/ncurses/
+Original-Maintainer: Debian QA Group <packages@qa.debian.org>
+
+Package: liblocale-gettext-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1.05-6
+Depends: libc6 (>= 2.2.5)
+Pre-Depends: perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: Using libc functions for internationalization in Perl
+ The gettext module permits access from perl to the gettext() family of
+ functions for retrieving message strings from databases constructed
+ to internationalize software.
+ .
+ It provides gettext(), dgettext(), dcgettext(), textdomain(),
+ bindtextdomain(), bind_textdomain_codeset(), ngettext(), dcngettext()
+ and dngettext().
+Original-Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
+Homepage: http://search.cpan.org/dist/gettext/gettext.pm
+
+Package: ubuntu-keyring
+Status: install ok installed
+Priority: important
+Section: misc
+Installed-Size: 60
+Maintainer: Michael Vogt <michael.vogt@canonical.com>
+Architecture: all
+Version: 2010.11.09
+Depends: gnupg (>= 1.0.6-4)
+Description: GnuPG keys of the Ubuntu archive
+ The Ubuntu project digitally signs its Release files. This package
+ contains the archive keys used for that.
+
+Package: xbitmaps
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 476
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 1.1.0-1
+Description: Base X bitmaps
+ This package contains the base X bitmaps, which are used in many legacy X
+ clients.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: busybox-initramfs
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 344
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: busybox
+Version: 1:1.13.3-1ubuntu11
+Replaces: busybox-cvs-initramfs
+Depends: libc6 (>= 2.11)
+Conflicts: busybox-cvs-initramfs
+Description: Standalone shell setup for initramfs
+ BusyBox combines tiny versions of many common UNIX utilities into a single
+ small executable. It provides minimalist replacements for the most common
+ utilities you would usually find on your desktop system (i.e., ls, cp, mv,
+ mount, tar, etc.). The utilities in BusyBox generally have fewer options than
+ their full-featured GNU cousins; however, the options that are included
+ provide the expected functionality and behave very much like their GNU
+ counterparts.
+ .
+ busybox-initramfs provides a statically linked simple stand alone shell
+ that provides only the basic utilities needed for the initramfs.
+Original-Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
+
+Package: xserver-xorg-video-s3
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 148
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:0.6.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-s3
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-s3
+Description: X.Org X server -- legacy S3 display driver
+ This package provides the driver for certain legacy S3 video card chipsets,
+ including the Trio64 and 96x cards. It does not provide support for
+ ViRGE/Trio3D or Savage chipsets; support for these cards is provided by
+ xserver-xorg-video-s3virge and xserver-xorg-driver-savage, respectively.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-s3 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ttf-dejavu-core
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 2564
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: ttf-dejavu
+Version: 2.30-2
+Replaces: ttf-dejavu (<< 2.20-1)
+Conflicts: ttf-dejavu (<< 2.20-1)
+Description: Vera font family derivative with additional characters
+ DejaVu provides an expanded version of the Vera font family aiming for
+ quality and broader Unicode coverage while retaining the original Vera
+ style. DejaVu currently works towards conformance with the Multilingual
+ European Standards (MES-1 and MES-2) for Unicode coverage. The DejaVu
+ fonts provide serif, sans and monospaced variants.
+ .
+ This package only contains the sans, sans-bold, serif, serif-bold,
+ mono and mono-bold variants. For additional variants, see the
+ ttf-dejavu-extra package.
+ .
+ DejaVu fonts are intended for use on low-resolution devices (mainly
+ computer screens) but can be used in printing as well.
+Original-Maintainer: Debian Fonts Task Force <pkg-fonts-devel@lists.alioth.debian.org>
+Homepage: http://dejavu-fonts.org/
+
+Package: xserver-xorg-video-trident
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 244
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.3.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-trident
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-trident
+Description: X.Org X server -- Trident display driver
+ This package provides the driver for Trident Blade/Image/ProVidia/TGUI/9xxx
+ video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-trident driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libbz2-1.0
+Status: install ok installed
+Priority: important
+Section: libs
+Installed-Size: 128
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: bzip2
+Version: 1.0.5-4
+Depends: libc6 (>= 2.4)
+Description: high-quality block-sorting file compressor library - runtime
+ This package contains libbzip2 which is used by the bzip2 compressor.
+ .
+ bzip2 is a freely available, patent free, high-quality data compressor.
+ It typically compresses files to within 10% to 15% of the best available
+ techniques, whilst being around twice as fast at compression and six
+ times faster at decompression.
+ .
+ bzip2 compresses files using the Burrows-Wheeler block-sorting text
+ compression algorithm, and Huffman coding. Compression is generally
+ considerably better than that achieved by more conventional
+ LZ77/LZ78-based compressors, and approaches the performance of the PPM
+ family of statistical compressors.
+ .
+ The archive file format of bzip2 (.bz2) is incompatible with that of its
+ predecessor, bzip (.bz).
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://www.bzip.org/
+
+Package: xserver-xorg-video-chips
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 232
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.2-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-chips
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-chips
+Description: X.Org X server -- Chips display driver
+ This package provides the driver for the Chips & Technologies family
+ of video cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-chips driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-intel
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1688
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2:2.9.1-3ubuntu5
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), libdrm-intel1 (>= 2.4.11), libdrm2 (>= 2.4.3), libpciaccess0 (>= 0.8.0+git20071002), libxext6 (>= 0), libxfixes3 (>= 1:4.0.1), libxv1, libxvmc1, xserver-xorg-core (>= 2:1.6.99.900)
+Recommends: intel-gpu-tools
+Conflicts: 915resolution, xserver-xorg-driver-i810, xserver-xorg-video-i810 (<< 2:1.9.91-1), xserver-xorg-video-i810-modesetting, xserver-xorg-video-intel-modesetting
+Description: X.Org X server -- Intel i8xx, i9xx display driver
+ This package provides the driver for the Intel i8xx and i9xx family
+ of chipsets, including i810, i815, i830, i845, i855, i865, i915, i945
+ and i965 series chips.
+ .
+ This package also provides XvMC (XVideo Motion Compensation) drivers
+ for i810/i815 and i9xx and newer chipsets.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-intel driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-mach64
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 388
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 6.8.2-2
+Replaces: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-video-ati (<= 1:6.8.0-1)
+Description: X.Org X server -- ATI Mach64 display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for the ATI Mach64 series.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-mach64 driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: console-terminus
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 784
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xfonts-terminus
+Version: 4.30-2
+Recommends: kbd | console-tools
+Suggests: console-setup
+Conflicts: console-cyrillic (<= 0.9-11)
+Description: Fixed-width fonts for fast reading on the Linux console
+ This package installs in /usr/share/consolefonts several console
+ variants of the Terminus font. If you have to work for extended time
+ in front of monitor (i.e. over eight hours), you may find that using
+ of these fonts reduces your eyes-fatigue.
+ .
+ The following charsets are supported: western European Latin, central
+ European Latin, Turkish Latin, Romanian Latin, Slavic Cyrillic and
+ Asian Cyrillic (Bashkyr, Kazakh, Mongolian and others).
+Original-Maintainer: Anton Zinoviev <zinoviev@debian.org>
+
+Package: libdrm-intel1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 476
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: libdrm
+Version: 2.4.18-1ubuntu3
+Depends: libc6 (>= 2.3.4), libdrm2 (>= 2.4.1)
+Description: Userspace interface to intel-specific kernel DRM services -- runtime
+ This library implements the userspace interface to the intel-specific kernel
+ DRM services. DRM stands for "Direct Rendering Manager", which is the
+ kernelspace portion of the "Direct Rendering Infrastructure" (DRI). The DRI is
+ currently used on Linux to provide hardware-accelerated OpenGL drivers.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libpciaccess0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 112
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libpciaccess
+Version: 0.11.0-1
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4)
+Suggests: pciutils
+Description: Generic PCI access library for X
+ Provides functionality for X to access the PCI bus and devices
+ in a platform-independent way.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libc-bin
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1784
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: eglibc
+Version: 2.11.1-0ubuntu7
+Replaces: libc0.1, libc0.3, libc6, libc6.1
+Breaks: libc0.1 (<< 2.10), libc0.3 (<< 2.10), libc6 (<< 2.10), libc6.1 (<< 2.10)
+Conffiles:
+ /etc/bindresvport.denylist 154db0e55fa99051ff1bd99e5b2c0584
+ /etc/ld.so.conf.d/libc.conf d4d833fd095fb7b90e1bb4a547f16de6
+ /etc/gai.conf 4b3389be7132a6a8805f3df8d0ff00f6
+Description: Embedded GNU C Library: Binaries
+ This package contains utility programs related to the GNU C Library.
+ .
+ * catchsegv: catch segmentation faults in programs
+ * getconf: query system configuration variables
+ * getent: get entries from administrative databases
+ * iconv, iconvconfig: convert between character encodings
+ * ldd, ldconfig: print/configure shared library dependencies
+ * locale, localedef: show/generate locale definitions
+ * rpcinfo: report RPC information
+ * tzselect, zdump, zic: select/dump/compile time zones
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: libldap-2.4-2
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 496
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: openldap
+Version: 2.4.21-0ubuntu5
+Replaces: libldap-2.3-0, libldap2
+Depends: libc6 (>= 2.4), libgnutls26 (>= 2.7.14-0), libgssapi-krb5-2 (>= 1.7+dfsg), libsasl2-2
+Conflicts: ldap-utils (<= 2.1.23-1)
+Conffiles:
+ /etc/ldap/ldap.conf 7fac807f65d84394410881bc16f1198a
+Description: OpenLDAP libraries
+ These are the run-time libraries for the OpenLDAP (Lightweight Directory
+ Access Protocol) servers and clients.
+Homepage: http://www.openldap.org/
+Original-Maintainer: Debian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org>
+
+Package: sysvinit-utils
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 300
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: sysvinit
+Version: 2.87dsf-4ubuntu17
+Replaces: last, sysvconfig (<< 0.80ubuntu1), sysvinit (<= 2.86.ds1-65), sysvutils (<< 2.86.ds1-56ubuntu1)
+Provides: sysvutils
+Depends: libc6 (>= 2.8), libselinux1 (>= 1.32), libsepol1 (>= 1.14)
+Recommends: upstart (>= 0.6.3-4)
+Suggests: sash
+Conflicts: chkconfig (<< 11.0-79.1-1ubuntu1), last, sysvconfig
+Description: System-V-like utilities
+ This package contains the important System-V-like utilities.
+ .
+ Specifically, this package includes:
+ killall5, last, lastb, mesg, pidof, service, sulogin
+Homepage: http://freshmeat.net/projects/sysvinit/
+Original-Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
+
+Package: xserver-xorg-input-all
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 24
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Source: xorg
+Version: 1:7.5+5ubuntu1
+Depends: xserver-xorg-input-evdev, xserver-xorg-input-synaptics, xserver-xorg-input-vmmouse, xserver-xorg-input-wacom, x11-common
+Description: the X.Org X server -- input driver metapackage
+ This package depends on the full suite of input drivers for the X.Org X server
+ (Xorg). It does not provide any drivers itself, and may be removed if you wish
+ to only have certain drivers installed.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: fontconfig-config
+Status: install ok installed
+Priority: optional
+Section: fonts
+Installed-Size: 428
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: fontconfig
+Version: 2.8.0-2ubuntu1
+Replaces: fontconfig (<< 2.3.2-2)
+Depends: ucf (>= 0.29), ttf-dejavu-core | ttf-bitstream-vera | ttf-freefont | gsfonts-x11
+Conflicts: fontconfig (<< 2.3.2-2)
+Conffiles:
+ /etc/fonts/fonts.conf 4c841acd3dd065819b23a0fc077d783c
+ /etc/fonts/fonts.dtd 9a099c7722190e00548c0d8375bdc24b
+ /etc/fonts/conf.d/README 296384642206e0c9952d5c73a5451eec
+ /etc/fonts/conf.avail/10-antialias.conf d77e6cfb9608490da012671c25213fe4
+ /etc/fonts/conf.avail/10-autohint.conf 5fe723b1fde478085868af26461bcf58
+ /etc/fonts/conf.avail/10-hinting-full.conf 65b0e8b7e1392797850856d8411d7272
+ /etc/fonts/conf.avail/10-hinting-medium.conf b663214dd84d0f5c4e279b153e0b38f9
+ /etc/fonts/conf.avail/10-hinting-slight.conf 4d7df8529053d526a503b472ee42b2b3
+ /etc/fonts/conf.avail/10-hinting.conf 4d1fb88a99c516270526c8dca5764df8
+ /etc/fonts/conf.avail/10-no-sub-pixel.conf d06c13e792afb20a06528d23e6542459
+ /etc/fonts/conf.avail/10-sub-pixel-bgr.conf cacb7572b778448d592501d03a7f96fd
+ /etc/fonts/conf.avail/10-sub-pixel-rgb.conf 60ef22ca1f56543131eddee764383b46
+ /etc/fonts/conf.avail/10-sub-pixel-vbgr.conf d526b41cd9b4d5e09ab4044a39b4c038
+ /etc/fonts/conf.avail/10-sub-pixel-vrgb.conf a3198f34365f978c1fb5355a92e4ef94
+ /etc/fonts/conf.avail/10-unhinted.conf 7bdecdf76d7bb22cd39e3b18bcbcc28d
+ /etc/fonts/conf.avail/11-lcd-filter-lcddefault.conf 34d7cffd14602241d09f23b0d1a39521
+ /etc/fonts/conf.avail/20-fix-globaladvance.conf fbad2da072b8609477d89a59a167705a
+ /etc/fonts/conf.avail/20-unhint-small-vera.conf b975a96cc427cde633cbdedc4012aa22
+ /etc/fonts/conf.avail/25-unhint-nonlatin.conf 62953912e2a45ea9a1ef4d8a400b2894
+ /etc/fonts/conf.avail/30-metric-aliases.conf 64accc211b62e4fb7da141d8c1c271b3
+ /etc/fonts/conf.avail/30-urw-aliases.conf c6c33cfde9f637e1d2b8cad9353df6dc
+ /etc/fonts/conf.avail/40-nonlatin.conf c78f533d9546bfc3a78f85d96f9eccf7
+ /etc/fonts/conf.avail/45-latin.conf 8d9a57e7891ecc9d6f0806a3e7c204a1
+ /etc/fonts/conf.avail/49-sansserif.conf 22278b0b48e5864d9c7fcbc178da0db3
+ /etc/fonts/conf.avail/50-user.conf 0165add6524289f6eb0461ba0be73be2
+ /etc/fonts/conf.avail/51-local.conf a2fa562c168c2c4cc0c2480bfdc0f8eb
+ /etc/fonts/conf.avail/53-monospace-lcd-filter.conf a6737024098d0bdc74b70846d4b99fe9
+ /etc/fonts/conf.avail/60-latin.conf 2a898e836efee4347362e1e7f09cd0d6
+ /etc/fonts/conf.avail/65-fonts-persian.conf 7df3a06989afcf1ecd9a8f44c9bf5d63
+ /etc/fonts/conf.avail/65-khmer.conf ce66ea0c26f43091ab70092f3f7024d4
+ /etc/fonts/conf.avail/65-nonlatin.conf 12a4cb7a2d642497f73f338abf988235
+ /etc/fonts/conf.avail/69-unifont.conf 49a6cb52e1cf23e0f691807a3e8c105d
+ /etc/fonts/conf.avail/70-no-bitmaps.conf dccfa658875eea3b30514d7a8bc306bc
+ /etc/fonts/conf.avail/70-yes-bitmaps.conf 91c414090c7d8bfe557785fe845cb6bd
+ /etc/fonts/conf.avail/80-delicious.conf 1c0cbfdceb6bc7a55668c11f03b0710b
+ /etc/fonts/conf.avail/90-synthetic.conf 7659edb861f44ff8e9f4e31567d24e47
+ /etc/fonts/conf.avail/70-force-bitmaps.conf 6423e63e204d4ea4629cd3f58636fcdc
+Description: generic font configuration library - configuration
+ Fontconfig is a font configuration and customization library, which
+ does not depend on the X Window System. It is designed to locate
+ fonts within the system and select them according to requirements
+ specified by applications.
+ .
+ This package contains the configuration files and scripts for fontconfig.
+Original-Maintainer: Keith Packard <keithp@debian.org>
+
+Package: libxtst6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 84
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxtst
+Version: 2:1.1.0-2
+Depends: libc6 (>= 2.4), libx11-6, libxext6, libxi6, x11-common
+Description: X11 Testing -- Resource extension library
+ libXtst provides an X Window System client interface to the Record
+ extension to the X protocol.
+ .
+ The Record extension allows X clients to synthesise input events, which
+ is useful for automated testing.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXtst
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-input-mouse
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 160
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.5.0-1
+Replaces: xserver-xorg (<< 6.8.2-35)
+Provides: xserver-xorg-input-7
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Description: X.Org X server -- mouse input driver
+ This package provides the driver for mouse input devices.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-input-mouse driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libice6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libice
+Version: 2:1.0.6-1
+Depends: libc6 (>= 2.4), x11-common
+Description: X11 Inter-Client Exchange library
+ This package provides the main interface to the X11 Inter-Client Exchange
+ library, which allows for communication of data between X clients.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libICE
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libnih-dbus1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 80
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Source: libnih
+Version: 1.0.1-1
+Depends: libnih1 (= 1.0.1-1), libc6 (>= 2.3.4), libdbus-1-3 (>= 1.2.16)
+Description: NIH D-Bus Bindings Library
+ libnih-dbus is a D-Bus bindings library that integrates with the main
+ loop provided by libnih.
+ .
+ This package contains the shared library.
+
+Package: libx11-data
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 2500
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: all
+Source: libx11
+Version: 2:1.3.2-1ubuntu3
+Replaces: libx11-6 (<= 2:1.0.0-1)
+Description: X11 client-side library
+ This package provides the locale data files for libx11.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libselinux1
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libselinux
+Version: 2.0.89-4
+Depends: libc6 (>= 2.8)
+Description: SELinux runtime shared libraries
+ This package provides the shared libraries for Security-enhanced
+ Linux that provides interfaces (e.g. library functions for the
+ SELinux kernel APIs like getcon(), other support functions like
+ getseuserbyname()) to SELinux-aware applications. Security-enhanced
+ Linux is a patch of the Linux kernel and a number of utilities with
+ enhanced security functionality designed to add mandatory access
+ controls to Linux. The Security-enhanced Linux kernel contains new
+ architectural components originally developed to improve the security
+ of the Flask operating system. These architectural components provide
+ general support for the enforcement of many kinds of mandatory access
+ control policies, including those based on the concepts of Type
+ Enforcement, Role-based Access Control, and Multi-level Security.
+ .
+ libselinux1 provides an API for SELinux applications to get and set
+ process and file security contexts and to obtain security policy
+ decisions. Required for any applications that use the SELinux
+ API. libselinux may use the shared libsepol to manipulate the binary
+ policy if necessary (e.g. to downgrade the policy format to an older
+ version supported by the kernel) when loading policy.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+
+Package: libc6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 10208
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: eglibc
+Version: 2.11.1-0ubuntu7
+Replaces: belocs-locales-bin
+Provides: glibc-2.10-1
+Depends: libc-bin (= 2.11.1-0ubuntu7), debconf (>= 0.5) | debconf-2.0, libgcc1, tzdata, findutils (>= 4.4.0-2ubuntu2)
+Suggests: glibc-doc, locales
+Breaks: nscd (<< 2.9)
+Conflicts: belocs-locales-bin, tzdata (<< 2007k-1), tzdata-etch
+Conffiles:
+ /etc/ld.so.conf.d/x86_64-linux-gnu.conf 593ad12389ab2b6f952e7ede67b8fbbf
+Description: Embedded GNU C Library: Shared libraries
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+Homepage: http://www.eglibc.org
+Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+
+Package: xserver-xorg-video-nv
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 304
+Maintainer: Ubuntu X-SWAT <ubuntu-x@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:2.1.15-1ubuntu3
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Provides: xf86-video-driver-riva128, xserver-xorg-video-6
+Depends: libc6 (>= 2.4), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-nv, xserver-xorg-video-riva128
+Description: X.Org X server -- NV display driver
+ This driver for the X.Org X server (see xserver-xorg for a further description)
+ provides support for NVIDIA Riva, TNT, GeForce, and Quadro cards.
+ .
+ Note that this is not the same as the binary-only 'nvidia' driver, which
+ adds 3D support, but is binary-only and not supported.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-nv driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libsm6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libsm
+Version: 2:1.1.1-1
+Depends: libc6 (>= 2.4), libice6 (>= 1:1.0.0), libuuid1 (>= 2.16-1)
+Description: X11 Session Management library
+ This package provides the main interface to the X11 Session Management
+ library, which allows for applications to both manage sessions, and make use
+ of session managers to save and restore their state for later use.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libSM
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libxxf86vm1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 76
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxxf86vm
+Version: 1:1.1.0-2
+Depends: libc6 (>= 2.2.5), libx11-6, libxext6
+Description: X11 XFree86 video mode extension library
+ libXxf86vm provides an interface to the XFree86-VidModeExtension
+ extension, which allows client applications to get and set video mode
+ timings in extensive detail. It is used by the xvidtune program in
+ particular.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXxf86vm
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libpng12-0
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 336
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libpng
+Version: 1.2.42-1ubuntu2
+Replaces: libpng12-dev (<= 1.2.8rel-7)
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Conflicts: libpng12-dev (<= 1.2.8rel-7), mzscheme (<= 1:209-5), pngcrush (<= 1.5.10-2), pngmeta (<= 1.11-3), povray-3.5 (<= 3.5.0c-10), qemacs (<= 0.3.1-5)
+Description: PNG library - runtime
+ libpng is a library implementing an interface for reading and writing
+ PNG (Portable Network Graphics) format files.
+ .
+ This package contains the runtime library files needed to run software
+ using libpng.
+Homepage: http://libpng.org/pub/png/libpng.html
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+
+Package: udev
+Status: install ok installed
+Priority: required
+Section: admin
+Installed-Size: 1584
+Maintainer: Scott James Remnant <scott@ubuntu.com>
+Architecture: amd64
+Version: 151-12
+Replaces: hotplug, ifrename, initramfs-tools (<< 0.040ubuntu1), udev-extras (<= 20090618)
+Depends: libacl1 (>= 2.2.11-1), libc6 (>= 2.9), libglib2.0-0 (>= 2.16.0), libselinux1 (>= 1.32), libusb-0.1-4 (>= 2:0.1.12), upstart-job, module-init-tools (>= 3.2.1-0ubuntu3), initramfs-tools (>= 0.92bubuntu63), procps, adduser, util-linux (>> 2.15~rc2)
+Suggests: watershed
+Breaks: casper (<< 1.174), consolekit (<= 0.4.1), dmsetup (<= 2:1.02.27-4ubuntu5), initramfs-tools (<< 0.92bubuntu30), lvm2 (<= 2.02.39-0ubuntu9), mdadm (<= 2.6.7.1-1ubuntu8)
+Conflicts: hotplug, ifrename, libdevmapper1.02 (<< 2:1.02.08-1ubuntu7), udev-extras (<= 20090618)
+Conffiles:
+ /etc/udev/rules.d/README 3b6de9f3f911176734c66903b4f8735c
+ /etc/udev/udev.conf 8b024b79a468658332fbf2586737907e
+ /etc/init/udev.conf 57d33a5ba9c438b3be4275e908213535
+ /etc/init/udev-finish.conf 28ebb3ad2d2c6ca545d72f3f0769f448
+ /etc/init/udevtrigger.conf 16f1ef5e6e1a9c589fa6993af7ea9ff5
+ /etc/init/udevmonitor.conf b541dfb5aa4958e9a5336ecaec00ca15
+Description: rule-based device node and kernel event manager
+ udev is a collection of tools and a daemon to manage events received from
+ the kernel and deal with them in user-space. Primarily this involves
+ creating and removing device nodes in /dev when hardware is discovered or
+ removed from the system.
+ .
+ Events are received via kernel netlink messaged and processed according to
+ rules in /etc/udev/rules.d and /lib/udev/rules.d, altering the name of the
+ device node, creating additional symlinks or calling other tools and programs
+ including those to load kernel modules and initialise the device.
+
+Package: libpixman-1-0
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 504
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: pixman
+Version: 0.16.4-1ubuntu2
+Depends: libc6 (>= 2.4)
+Description: pixel-manipulation library for X and cairo
+ A library for manipulating pixel regions -- a set of Y-X banded
+ rectangles, image compositing using the Porter/Duff model
+ and implicit mask generation for geometric primitives including
+ trapezoids, triangles, and rectangles.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: bash
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: shells
+Installed-Size: 3612
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 4.1-2ubuntu3
+Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
+Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
+Pre-Depends: dash, libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3)
+Recommends: bash-completion (>= 20060301-0)
+Suggests: bash-doc
+Conflicts: bash-completion (<< 20060301-0)
+Conffiles:
+ /etc/skel/.bashrc 65c464307b8370db7fd43189f237dbd6
+ /etc/skel/.profile ecb6d3479ac3823f1da7f314d871989b
+ /etc/skel/.bash_logout 22bfb8c1dd94b5f3813a2b25da67463f
+ /etc/bash.bashrc 856b64d15f052027a6807413e9035d3f
+Description: The GNU Bourne Again SHell
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ Bash is ultimately intended to be a conformant implementation of the
+ IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
+ .
+ The Programmable Completion Code, by Ian Macdonald, is now found in
+ the bash-completion package.
+Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: make
+Status: install ok installed
+Priority: standard
+Section: devel
+Installed-Size: 1224
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: make-dfsg
+Version: 3.81-7ubuntu1
+Suggests: make-doc
+Description: An utility for Directing compilation.
+ GNU Make is an utility which controls the generation of executables and
+ other target files of a program from the program's source files. It
+ determines automatically which pieces of a large program need to be
+ (re)created, and issues the commands to (re)create them. Make is not
+ limited to programs and executable, it can be applied to any task
+ where a set of target files must be created based on a set of input
+ files, based on dependency and processing rules. Indeed, Make is a
+ general purpose dependency solver.
+Original-Maintainer: Manoj Srivastava <srivasta@debian.org>
+Homepage: http://www.gnu.org/software/make/
+
+Package: util-linux
+Essential: yes
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 2344
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.17.2-0ubuntu1
+Replaces: e2fsprogs (<= 1.41.8-1ubuntu1), fdisk, linux32, miscutils, schedutils, setterm, sparc-utils
+Provides: linux32, schedutils
+Depends: upstart-job, lsb-base (>= 3.0-6), tzdata (>= 2006c-2), dpkg (>= 1.15.4) | install-info
+Pre-Depends: libblkid1 (>= 2.17), libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3), libselinux1 (>= 1.32), libslang2 (>= 2.0.7-1), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
+Suggests: util-linux-locales, kbd | console-tools, dosfstools
+Breaks: udev (<< 136-1)
+Conflicts: console-tools (<< 1:0.2.3-21), fdisk, kbd (<< 1.05-3), linux32, schedutils, setterm
+Conffiles:
+ /etc/init/hwclock.conf 132aa3db7e5a8cf55168e4866052208a
+ /etc/init/hwclock-save.conf 4a002046525e338fc23e4418602865c9
+Description: Miscellaneous system utilities
+ This package contains a number of important utilities, most of which
+ are oriented towards maintenance of your system. Some of the more
+ important utilities included in this package allow you to partition
+ your hard disk, view kernel messages, and create new filesystems.
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+
+Package: libxcursor1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 92
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxcursor
+Version: 1:1.1.10-1
+Depends: libc6 (>= 2.4), libx11-6, libxfixes3 (>= 1:4.0.1), libxrender1
+Description: X cursor management library
+ Xcursor is a simple library designed to help locate and load cursors for the
+ X Window System. Cursors can be loaded from files or memory and can exist in
+ several sizes; the library automatically picks the best size. When using
+ images loaded from files, Xcursor prefers to use the Render extension's
+ CreateCursor request for rendering cursors. Where the Render extension is
+ not supported, Xcursor maps the cursor image to a standard X cursor and uses
+ the core X protocol CreateCursor request.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xfonts-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 528
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:7.5+2
+Replaces: fonttosfnt (<< 1.0.4), xutils (<< 1:1.0.1-1)
+Depends: libc6 (>= 2.8), libfontenc1, libfreetype6 (>= 2.2.1), libxfont1 (>= 1:1.2.9), zlib1g (>= 1:1.1.4), x11-common, xfonts-encodings
+Description: X Window System font utility programs
+ xfonts-utils provides a set of utility programs shipped with the X Window
+ System that are needed for font management.
+ .
+ The programs in this package include:
+ - bdftopcf, which converts BDF fonts to PCF fonts;
+ - bdftruncate and ucs2any, tools to generate fonts with various encodings
+ from ISO 10646-encoded fonts
+ - mkfontdir, a program to generate fonts.dir files;
+ - mkfontscale, a program to generate fonts.scale files;
+ - fonttosfnt, a program to wrap bitmap fonts in a sfnt (TrueType) wrapper.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libfontenc1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 88
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libfontenc
+Version: 1:1.0.5-1
+Depends: libc6 (>= 2.7), zlib1g (>= 1:1.1.4)
+Description: X11 font encoding library
+ libfontenc is a library which helps font libraries portably determine
+ and deal with different encodings of fonts.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libfontenc
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: cpio
+Status: install ok installed
+Priority: required
+Section: utils
+Installed-Size: 872
+Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.10-1ubuntu2
+Replaces: cpio-mt
+Depends: libc6 (>= 2.6)
+Conflicts: cpio-mt, mt-st (<< 0.6)
+Description: GNU cpio -- a program to manage archives of files
+ GNU cpio is a tool for creating and extracting archives, or copying
+ files from one place to another. It handles a number of cpio formats
+ as well as reading and writing tar files.
+Original-Maintainer: Clint Adams <schizo@debian.org>
+
+Package: libstdc++6
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 1268
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.4), libgcc1
+Conflicts: scim (<< 1.4.2-1)
+Description: The GNU Standard C++ Library v3
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: x11-xfs-utils
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 7.4+1build2
+Replaces: fslsfonts, fstobdf, showfont, xbase-clients (<= 1:7.2.ds2-3), xfsinfo, xutils (<= 1:7.1.ds.3-1)
+Depends: libc6 (>= 2.4), libfs6, libx11-6 (>= 0)
+Pre-Depends: x11-common (>= 1:7.0.0)
+Conflicts: fslsfonts, fstobdf, showfont, xfsinfo
+Description: X font server utilities
+ x11-xfs-utils provides a set of utility programs useful on a system that uses
+ an X font server.
+ .
+ The programs in this package include:
+ - fslsfonts, a tool that lists fonts served by an X font server;
+ - fstobdf, a tool which retrieves a font in BDF format from an X font server;
+ - showfont, a font dumper for use with an X font server;
+ - xfsinfo, an X font server information utility.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: ca-certificates
+Status: install ok installed
+Priority: optional
+Section: misc
+Installed-Size: 736
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Version: 20090814
+Depends: openssl, debconf (>= 0.5) | debconf-2.0
+Enhances: libssl0.9.8, openssl
+Description: Common CA certificates
+ This package includes PEM files of CA certificates to allow SSL-based
+ applications to check for the authenticity of SSL connections.
+ .
+ It includes, among others, certificate authorities used by the Debian
+ infrastructure and those shipped with Mozilla's browsers.
+ .
+ Please note that certificate authorities whose certificates are
+ included in this package are not in any way audited for
+ trustworthiness and RFC 3647 compliance, and that full responsibility
+ to assess them belongs to the local system administrator.
+Original-Maintainer: Philipp Kern <pkern@debian.org>
+
+Package: vim-tiny
+Status: install ok installed
+Priority: important
+Section: editors
+Installed-Size: 840
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: vim
+Version: 2:7.2.330-1ubuntu3
+Replaces: vim-common (<< 1:7.1.293-2)
+Provides: editor
+Depends: vim-common (= 2:7.2.330-1ubuntu3), libc6 (>= 2.11), libncurses5 (>= 5.6+20071006-3), libselinux1 (>= 1.32)
+Suggests: indent
+Conflicts: vim-common (<< 1:7.1.293-2), vim-runtime (<< 1:7.1-056+1)
+Conffiles:
+ /etc/vim/vimrc.tiny 3b4112567ad92c78ccc16c670df381e9
+Description: Vi IMproved - enhanced vi editor - compact version
+ Vim is an almost compatible version of the UNIX editor Vi.
+ .
+ Many new features have been added: multi level undo, syntax
+ highlighting, command line history, on-line help, filename
+ completion, block operations, folding, Unicode support, etc.
+ .
+ This package contains a minimal version of vim compiled with no
+ GUI and a small subset of features in order to keep small the
+ package size. This package does not depend on the vim-runtime
+ package, but installing it you will get its additional benefits
+ (online documentation, plugins, ...).
+Homepage: http://www.vim.org/
+Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+
+Package: xorg-docs-core
+Status: install ok installed
+Priority: optional
+Section: doc
+Installed-Size: 108
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: xorg-docs
+Version: 1:1.5-1
+Replaces: xorg-docs (<< 1:1.4-5)
+Suggests: xorg-docs
+Description: Core documentation for the X.org X Window System
+ This package contains core documentation for the X.org X Window
+ System. This currently includes only a set of manpages which are
+ standard for the system.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-ati
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 320
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:6.13.0-1ubuntu5
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), libpciaccess0 (>= 0), xserver-xorg-core (>= 2:1.6.99.900), xserver-xorg-video-r128, xserver-xorg-video-mach64, xserver-xorg-video-radeon
+Description: X.Org X server -- AMD/ATI display driver wrapper
+ This package provides the 'ati' driver for the AMD/ATI Mach64, Rage128,
+ Radeon, FireGL, FireMV, FirePro and FireStream series. This driver is
+ actually a wrapper that loads one of the 'mach64', 'r128' or 'radeon'
+ sub-drivers depending on the hardware.
+ These sub-drivers are brought through package dependencies.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-ati driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: xserver-xorg-video-siliconmotion
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 228
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.7.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-siliconmotion
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.7), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-siliconmotion
+Description: X.Org X server -- SiliconMotion display driver
+ This package provides the driver for the SiliconMotion Lynx and Cougar family
+ of chipsets, commonly found in laptops.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-siliconmotion driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: binutils
+Status: install ok installed
+Priority: optional
+Section: devel
+Installed-Size: 10176
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 2.20.1-3ubuntu5
+Replaces: binutils-gold (<< 2.20-5)
+Provides: elf-binutils
+Depends: libc6 (>= 2.11), zlib1g (>= 1:1.1.4)
+Suggests: binutils-doc (>= 2.20.1-3ubuntu5)
+Conflicts: elf-binutils, gas, modutils (<< 2.4.19-1)
+Description: The GNU assembler, linker and binary utilities
+ The programs in this package are used to assemble, link and manipulate
+ binary and object files. They may be used in conjunction with a compiler
+ and various libraries to build programs.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: libglib2.0-0
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 2428
+Maintainer: Ubuntu Desktop Team <ubuntu-desktop@lists.ubuntu.com>
+Architecture: amd64
+Source: glib2.0
+Version: 2.24.0-0ubuntu4
+Replaces: libglib2.0-dev (<< 2.23.2-2)
+Depends: libc6 (>= 2.9), libpcre3 (>= 7.7), libselinux1 (>= 1.32), zlib1g (>= 1:1.1.4)
+Recommends: libglib2.0-data, shared-mime-info
+Conflicts: libpango1.0-0 (<< 1.11)
+Description: The GLib library of C routines
+ GLib is a library containing many useful C routines for things such
+ as trees, hashes, lists, and strings. It is a useful general-purpose
+ C library used by projects such as GTK+, GIMP, and GNOME.
+ .
+ This package contains the shared libraries.
+Homepage: http://www.gtk.org/
+Original-Maintainer: Loic Minier <lool@dooz.org>
+
+Package: libgomp1
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 96
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Depends: gcc-4.4-base (= 4.4.3-4ubuntu5), libc6 (>= 2.6)
+Description: GCC OpenMP (GOMP) support library
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
+ in the GNU Compiler Collection.
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: xserver-xorg-video-tseng
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 136
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 1:1.2.3-1
+Replaces: xserver-xorg (<< 6.8.2-35), xserver-xorg-driver-tseng
+Provides: xserver-xorg-video-6
+Depends: libc6 (>= 2.2.5), xserver-xorg-core (>= 2:1.6.99.900)
+Conflicts: xserver-xorg-driver-tseng
+Description: X.Org X server -- Tseng display driver
+ This package provides the driver for Tseng Labs cards.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This package is built from the X.org xf86-video-tseng driver module.
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: libtext-charwidth-perl
+Status: install ok installed
+Priority: required
+Section: perl
+Installed-Size: 96
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Version: 0.04-6
+Depends: libc6 (>= 2.2.5), perl-base (>= 5.10.0-24ubuntu4), perlapi-5.10.0
+Description: get display widths of characters on the terminal
+ This module permits perl software to get the display widths of characters
+ and strings on the terminal, using wcwidth() and wcswidth() from libc.
+ .
+ It provides mbwidth(), mbswidth(), and mblen().
+Original-Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
+Homepage: http://search.cpan.org/search?module=Text::CharWidth
+
+Package: libxt6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 468
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxt
+Version: 1:1.0.7-1
+Depends: libc6 (>= 2.7), libice6 (>= 1:1.0.0), libsm6, libx11-6
+Description: X11 toolkit intrinsics library
+ libXt provides the X Toolkit Intrinsics, an abstract widget library upon
+ which other toolkits are based. Xt is the basis for many toolkits, including
+ the Athena widgets (Xaw), and LessTif (a Motif implementation).
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXt
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
+Package: readline-common
+Status: install ok installed
+Priority: important
+Section: utils
+Installed-Size: 132
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: all
+Source: readline6
+Version: 6.1-1
+Replaces: libreadline-common, libreadline4 (<< 4.3-16), libreadline5 (<< 5.0-11)
+Depends: dpkg (>= 1.15.4) | install-info
+Conflicts: libreadline-common, libreadline5 (<< 5.0-11)
+Description: GNU readline and history libraries, common files
+ The GNU readline library aids in the consistency of user interface
+ across discrete programs that need to provide a command line
+ interface.
+ .
+ The GNU history library provides a consistent user interface for
+ recalling lines of previously typed input.
+Original-Maintainer: Matthias Klose <doko@debian.org>
+
+Package: gnupg-curl
+Status: install ok installed
+Priority: optional
+Section: utils
+Installed-Size: 156
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gnupg
+Version: 1.4.10-2ubuntu1
+Depends: libc6 (>= 2.4), libcurl3-gnutls (>= 7.16.2-1), libldap-2.4-2 (>= 2.4.7), gnupg
+Description: GNU privacy guard - a free PGP replacement (cURL)
+ GnuPG is GNU's tool for secure communication and data storage.
+ It can be used to encrypt data and to create digital signatures.
+ It includes an advanced key management facility and is compliant
+ with the proposed OpenPGP Internet standard as described in RFC2440.
+ .
+ This package contains the keyserver helper tools built with libcurl,
+ which replace the ones in the gnupg package built with the "curl shim"
+ variant of gnupg. This package provides support for HKPS keyservers.
+ .
+ GnuPG does not use any patented algorithms. This means it cannot be
+ compatible with PGP2, because that uses IDEA (which is patented in
+ a number of countries).
+Homepage: http://www.gnupg.org
+Original-Maintainer: Debian GnuPG-Maintainers <pkg-gnupg-maint@lists.alioth.debian.org>
+
+Package: gcc-4.4-base
+Status: install ok installed
+Priority: required
+Section: libs
+Installed-Size: 172
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: gcc-4.4
+Version: 4.4.3-4ubuntu5
+Description: The GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+Homepage: http://gcc.gnu.org/
+Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
+
+Package: libkrb5-3
+Status: install ok installed
+Priority: standard
+Section: libs
+Installed-Size: 964
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: krb5
+Version: 1.8.1+dfsg-2
+Replaces: libkrb53 (<< 1.6.dfsg.4~beta1-7)
+Depends: libc6 (>= 2.9), libcomerr2 (>= 1.34), libk5crypto3 (>= 1.8+dfsg), libkeyutils1, libkrb5support0 (= 1.8.1+dfsg-2)
+Suggests: krb5-doc, krb5-user
+Conflicts: libapache-mod-auth-kerb (<= 4.996-5.0-rc6-2), libapache2-mod-auth-kerb (<= 4.996-5.0-rc6-2), ssh-krb5 (<< 3.8.1p1-10)
+Description: MIT Kerberos runtime libraries
+ Kerberos is a system for authenticating users and services on a network.
+ Kerberos is a trusted third-party service. That means that there is a
+ third party (the Kerberos server) that is trusted by all the entities on
+ the network (users and services, usually called "principals").
+ .
+ This is the MIT reference implementation of Kerberos V5.
+ .
+ This package contains the runtime library for the main Kerberos v5 API
+ used by applications and Kerberos clients.
+Original-Maintainer: Sam Hartman <hartmans@debian.org>
+Homepage: http://web.mit.edu/kerberos/
+
+Package: libxau6
+Status: install ok installed
+Priority: optional
+Section: libs
+Installed-Size: 72
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Architecture: amd64
+Source: libxau
+Version: 1:1.0.5-1
+Depends: libc6 (>= 2.4)
+Description: X11 authorisation library
+ This package provides the main interface to the X11 authorisation handling,
+ which controls authorisation for X connections, both client-side and
+ server-side.
+ .
+ More information about X.Org can be found at:
+ <URL:http://www.X.org>
+ <URL:http://xorg.freedesktop.org>
+ <URL:http://lists.freedesktop.org/mailman/listinfo/xorg>
+ .
+ This module can be found at
+ git://anongit.freedesktop.org/git/xorg/lib/libXau
+Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+
diff --git a/test/integration/status-xorg-break-providers b/test/integration/status-xorg-break-providers
new file mode 100644
index 0000000..c637351
--- /dev/null
+++ b/test/integration/status-xorg-break-providers
@@ -0,0 +1,22 @@
+Package: xserver-xorg-core
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 4436
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Source: xorg-server
+Version: 2:1.7.7-8
+Breaks: xserver-xorg-video-5
+Description: Xorg X server - core server
+
+Package: xserver-xorg-video-intel
+Status: install ok installed
+Priority: optional
+Section: x11
+Installed-Size: 1268
+Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
+Architecture: i386
+Version: 2:2.13.0-2
+Provides: xserver-xorg-video-6
+Description: X.Org X server -- Intel i8xx, i9xx display driver
diff --git a/test/integration/test-00-commands-have-help b/test/integration/test-00-commands-have-help
new file mode 100755
index 0000000..f91238d
--- /dev/null
+++ b/test/integration/test-00-commands-have-help
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# this test does double duty: The obvious is checking for --help and co,
+# but it also checks if the binary can find all methods in the library.
+# The later is quite handy for manual testing of non-abibreaking changes
+export LD_BIND_NOW=1
+# german variant of klingon used for testing usage of non-existent l10n
+export LC_ALL=tlh_DE.UTF-8
+
+checkversionmessage() {
+ testsuccess grep '^apt .* (' ${1}-help.output
+}
+
+checkhelpmessage() {
+ checkversionmessage "$1"
+ testsuccess grep '^Usage:' ${1}-help.output
+}
+
+checkoptions() {
+ testsuccess $1 --help
+ cp -f rootdir/tmp/testsuccess.output ${1}-help.output
+ checkhelpmessage "$1"
+
+ testsuccess $1 --version
+ cp -f rootdir/tmp/testsuccess.output ${1}-help.output
+ checkversionmessage "$1"
+}
+
+for CMD in 'apt-cache' 'apt-cdrom' 'apt-config' \
+ 'apt-extracttemplates' 'apt-get' 'apt-helper' \
+ 'apt-mark' 'apt-sortpkgs' 'apt' 'apt-ftparchive'; do
+ cmd="$(echo "$CMD" | tr -d '-')"
+ msgtest 'Test for failure with no parameters calling' "$CMD"
+ if $cmd > ${cmd}-help.output 2>&1; then
+ echo
+ cat ${cmd}-help.output
+ msgfail 'zero exit'
+ else
+ msgpass
+ fi
+ checkhelpmessage "$cmd"
+ checkoptions "$cmd"
+done
+
+
+rred() {
+ runapt "${METHODSDIR}/rred" "$@"
+}
+for CMD in 'apt-dump-solver' 'apt-internal-solver' 'apt-internal-planner' 'rred'; do
+ checkoptions "$(echo "$CMD" | tr -d '-')"
+done
+
+# in times of need, we all look for super cow to save the day
+testsuccess aptget moo
+testsuccess aptget moo -q=2
+testsuccess aptget moo moo
+testsuccess aptget moo moo -q=2
+testsuccess aptget moo moo --color
+testsuccess aptget moo moo moo
+testsuccess aptget moo moo moo -q=2
+testsuccess aptget moo moo moo moo
+testsuccess aptget moo moo moo moo -q=2
+
+export SOURCE_DATE_EPOCH=moo
+testwarningmsg 'W: Environment variable SOURCE_DATE_EPOCH was ignored as it has an invalid value: "moo"' apt moo
+testmoo() {
+ export SOURCE_DATE_EPOCH="$(date -d "$1" +'%s')"
+ testsuccess aptget moo
+ cp rootdir/tmp/testsuccess.output moo.output
+ testsuccess grep "$2" moo.output
+ testsuccessequal "$2" apt moo -qqq
+ unset SOURCE_DATE_EPOCH
+}
+testmoo '@0' 'Have you mooed today?'
+# the year 0 is too early for 32bit architectures
+testmoo '2000-12-25' 'Happy package management day!'
+testmoo '1930-02-18' "It's a Bird ... It's a Plane ... It's Super Cow!"
+testmoo '1966-11-07' 'Whoever needs milk, bows to the animal.'
+testmoo '1988-03-29' 'Have you mooed today?'
+testmoo '1993-08-16' 'Three moos for Debian!'
+testmoo '1998-04-01' 'Have you smashed some milk today?'
+testmoo '@1484822790' 'Have you mooed today?'
+testmoo '@1484822791' 'Have you mooed today?'
+testmoo '@1484822792' 'Have you mooed today?'
+testmoo '@1484822793' 'Have you mooed today?'
+
+# that also helps with reproducibility of output…
+export COLUMNS=80
+testsuccess aptget moo
+export COLUMNS=0
+testwarning aptget moo
+export COLUMNS=80a
+testwarning aptget moo
+export COLUMNS=a80
+testwarning aptget moo
+export COLUMNS=
+testwarning aptget moo
+unset COLUMNS
diff --git a/test/integration/test-acquire-binary-all b/test/integration/test-acquire-binary-all
new file mode 100755
index 0000000..379348e
--- /dev/null
+++ b/test/integration/test-acquire-binary-all
@@ -0,0 +1,142 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo-1' 'all' '2' 'unstable'
+buildsimplenativepackage 'foo-2' 'amd64' '2' 'unstable'
+setupaptarchive --no-update
+
+cat >rootdir/etc/apt/apt.conf.d/get-contents <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+ KeepCompressed "true";
+};
+EOF
+cp -a rootdir/etc/apt/sources.list.d rootdir/etc/apt/sources.list.d.bak
+
+msgmsg 'Releasefile with Architectures field and all included'
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+listcurrentlistsdirectory > lists.before
+testsuccess grep '_binary-all_Packages' lists.before
+testsuccess grep '_Contents-all\.' lists.before
+
+configarchitecture 'amd64' 'i386'
+testsuccessequal "All packages are up to date.
+N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'file:$(readlink -f ./aptarchive) unstable InRelease' doesn't support architecture 'i386'" apt update -o quiet::NoProgress=1
+testfileequal lists.before "$(listcurrentlistsdirectory)"
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field and all included, but arch-=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch-=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccesswithnotice apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile has all, but forbids its usage'
+configarchitecture 'amd64'
+sed -i '/^Architectures: / a\
+No-Support-for-Architecture-all: Packages' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+sed -i '/^No-Support-for-Architecture-all: / d' $(find ./aptarchive -name 'Release')
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile has all, forbids its usage, but it is forced with arch=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field but without all'
+configarchitecture 'amd64' 'i386'
+getarchitecturesfromreleasefile() { echo "$(getarchitectures)"; }
+generatereleasefiles
+signreleasefiles
+testsuccessequal 'All packages are up to date.' apt update -o quiet::NoProgress=1
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+configarchitecture 'amd64'
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testfailure grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile with Architectures field but without all forced with arch+=all'
+sed -i 's#^deb\(-src\)\? #deb\1 [arch+=all] #' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile without Architectures field'
+getarchitecturesfromreleasefile() { echo -n ''; }
+generatereleasefiles
+signreleasefiles
+testfailure grep '^Architectures: ' $(find ./aptarchive -name 'Release')
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+# apt doesn't know supported archs, so missing a configured arch is a problem
+configarchitecture 'amd64' 'i386'
+testwarningmsg "W: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'file:$(readlink -f ./aptarchive) unstable InRelease' does not seem to provide it (sources.list entry misspelt?)" apt update
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
+
+rm -rf rootdir/var/lib/apt/lists
+msgmsg 'Releasefile no Architectures all, but forbids its usage'
+configarchitecture 'amd64'
+sed -i '/^Date: / a\
+No-Support-for-Architecture-all: Packages' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testsuccess apt update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testfailure grep '^Get.* all Packages ' aptupdate.output
+testsuccess grep '^Get.* all Contents ' aptupdate.output
+sed -i '/^No-Support-for-Architecture-all: / d' $(find ./aptarchive -name 'Release')
+
+msgmsg 'No Releasefile'
+rm -rf rootdir/var/lib/apt/lists
+find aptarchive -name '*Release*' -delete
+configarchitecture 'amd64'
+testfailure apt update
+testwarning apt update --allow-insecure-repositories
+testequal 'foo-1
+foo-2' aptcache pkgnames foo-
diff --git a/test/integration/test-acquire-same-file-multiple-times b/test/integration/test-acquire-same-file-multiple-times
new file mode 100755
index 0000000..fc82412
--- /dev/null
+++ b/test/integration/test-acquire-same-file-multiple-times
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TESTFILE="$TESTDIR/framework"
+cp "$TESTFILE" aptarchive/foo
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+filedown() {
+ msgtest 'Downloading the same URI twice over file' "$1"
+ testsuccess --nomsg apthelper download-file "file://$APTARCHIVE/foo" './downloaded/foo1' '' \
+ "file://$APTARCHIVE/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTFILE" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+
+testrun() {
+ $1 'no partial'
+ cp "$TESTFILE" ./downloaded/foo1
+ $1 'complete partial 1'
+ cp "$TESTFILE" ./downloaded/foo2
+ $1 'complete partial 2'
+ cp "$TESTFILE" ./downloaded/foo1
+ cp "$TESTFILE" ./downloaded/foo2
+ $1 'complete partial 1+2'
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ $1 'partial partial 1'
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ $1 'partial partial 2'
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ $1 'partial partial 1+2'
+}
+testrun 'filedown'
+
+changetowebserver -o aptwebserver::redirect::replace::/foo2=/foo
+
+httpdown() {
+ msgtest 'Downloading the same URI to different files' 'twice over http'
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+testrun 'httpdown'
+
+httpredirectdown() {
+ msgtest 'Redirect leads' 'first URI to the second URI'
+ for i in 1 2 3 4 5 6 7 8 9 10; do
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo2" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo2' '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
+
+ if grep -q '103%20Redirect' ./download.log; then
+ break
+ fi
+ done
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '103%20Redirect' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1 ./downloaded/foo2
+}
+testrun 'httpredirectdown'
+
+httpsamedown() {
+ msgtest 'Downloading two files via the same URI to' 'the same file'
+ testsuccess --nomsg apthelper download-file "http://localhost:${APTHTTPPORT}/foo" "./downloaded/foo1" '' \
+ "http://localhost:${APTHTTPPORT}/foo" './downloaded/foo1' '' -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testsuccess.output download.log
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
+ testequal '1' grep -c '200%20URI%20Start' ./download.log
+ testequal '1' grep -c '201%20URI%20Done' ./download.log
+ rm -f ./downloaded/foo1
+}
+testrun 'httpsamedown'
diff --git a/test/integration/test-allow b/test/integration/test-allow
new file mode 100755
index 0000000..2cc57bc
--- /dev/null
+++ b/test/integration/test-allow
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# Test for --allow-remove-essential and friends replacing --force-yes
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname $0)")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'downgrade' 'all' '1'
+insertinstalledpackage 'downgrade' 'all' '2'
+
+insertpackage 'unstable' 'hold' 'all' '2'
+insertinstalledpackage 'hold' 'all' '1'
+
+insertinstalledpackage 'essential' 'all' '1' 'Essential: yes'
+
+setupaptarchive
+
+testsuccess aptmark hold hold
+
+# Test --allow-remove--essential
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essential
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ essential
+0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+E: Essential packages were removed and -y was used without --allow-remove-essential.' aptget remove essential -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essential
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ essential
+0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+Remv essential [1]' aptget remove essential -y --allow-remove-essential -s
+
+# Test --allow-change-held-packages (should not influence dist-upgrade, but an install)
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ hold
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --allow-change-held-packages -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+E: Held packages were changed and -y was used without --allow-change-held-packages.' aptget install hold -y -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+E: Held packages were changed and -y was used without --allow-change-held-packages.' aptget install hold -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following held packages will be changed:
+ hold
+The following packages will be upgraded:
+ hold
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst hold [1] (2 unstable [all])
+Conf hold (2 unstable [all])' aptget install hold -y -s --allow-change-held-packages
+
+# Test --allow-downgrades
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be DOWNGRADED:
+ downgrade
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 1 not upgraded.
+E: Packages were downgraded and -y was used without --allow-downgrades.' aptget install downgrade=1 -y -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be DOWNGRADED:
+ downgrade
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 1 not upgraded.
+Inst downgrade [2] (1 unstable [all])
+Conf downgrade (1 unstable [all])' aptget install downgrade=1 --allow-downgrades -y -s
diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types
new file mode 100755
index 0000000..999efc0
--- /dev/null
+++ b/test/integration/test-allow-scores-for-all-dependency-types
@@ -0,0 +1,154 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unversioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev
+Conflicts: libdb5.1-dev'
+insertpackage 'unversioned' 'libdb5.1-dev' 'amd64' '5.1.29-7'
+insertpackage 'unversioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev'
+
+insertpackage 'unversioned' 'foo' 'amd64' '1'
+insertpackage 'unversioned' 'bar' 'amd64' '1'
+insertpackage 'unversioned' 'foo' 'amd64' '2' 'Conflicts: bar'
+insertpackage 'unversioned' 'bar' 'amd64' '2' 'Conflicts: foo'
+insertpackage 'unversioned' 'baz' 'amd64' '2' 'Depends: bar | foo'
+
+insertpackage 'versioned' 'libdb-dev' 'amd64' '5.3.0' 'Depends: libdb5.3-dev
+Conflicts: libdb5.1-dev (<< 5.2)'
+insertpackage 'versioned' 'libdb5.3-dev' 'amd64' '5.3.28-3' 'Conflicts: libdb5.1-dev (<< 5.2)'
+
+insertpackage 'versioned' 'foo' 'amd64' '2' 'Conflicts: bar (<= 2)'
+insertpackage 'versioned' 'bar' 'amd64' '2' 'Conflicts: foo (<= 2)'
+insertpackage 'versioned' 'baz' 'amd64' '2' 'Depends: bar (>= 2) | foo (>= 2)'
+
+insertpackage 'multipleno' 'foo' 'amd64' '2.1' 'Conflicts: bar (<= 3)'
+insertpackage 'multipleno' 'bar' 'amd64' '2.1' 'Conflicts: foo (<= 3), foo (<= 1)'
+
+insertpackage 'multipleyes' 'foo' 'amd64' '2.2' 'Conflicts: bar (<= 3)'
+# having foo multiple times as conflict is a non-advisable hack in general
+insertpackage 'multipleyes' 'bar' 'amd64' '2.2' 'Conflicts: foo (<= 3), foo (<= 3)'
+
+#774924 - slightly simplified
+insertpackage 'jessie' 'login' 'amd64' '2' 'Pre-Depends: libaudit1 (>= 0)'
+insertpackage 'jessie' 'libaudit1' 'amd64' '2' 'Depends: libaudit-common (>= 0)'
+insertpackage 'jessie' 'libaudit-common' 'amd64' '2' 'Breaks: libaudit0, libaudit1 (<< 2)'
+
+setupaptarchive
+
+insertinstalledpackage 'libdb-dev' 'amd64' '5.1.7' 'Depends: libdb5.1-dev'
+insertinstalledpackage 'libdb5.1-dev' 'amd64' '5.1.29-7'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdb5.1-dev
+The following NEW packages will be installed:
+ libdb5.3-dev
+The following packages will be upgraded:
+ libdb-dev
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
+Inst libdb-dev [5.1.7] (5.3.0 unversioned [amd64]) []
+Inst libdb5.3-dev (5.3.28-3 unversioned [amd64])
+Conf libdb-dev (5.3.0 unversioned [amd64])
+Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])' aptget dist-upgrade -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdb5.1-dev
+The following NEW packages will be installed:
+ libdb5.3-dev
+The following packages will be upgraded:
+ libdb-dev
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libdb5.1-dev [5.1.29-7] [libdb-dev:amd64 ]
+Inst libdb-dev [5.1.7] (5.3.0 versioned [amd64]) []
+Inst libdb5.3-dev (5.3.28-3 versioned [amd64])
+Conf libdb-dev (5.3.0 versioned [amd64])
+Conf libdb5.3-dev (5.3.28-3 versioned [amd64])' aptget dist-upgrade -st versioned
+
+rm -f rootdir/var/lib/dpkg/status
+insertinstalledpackage 'foo' 'amd64' '1'
+insertinstalledpackage 'bar' 'amd64' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st versioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ bar foo
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -st multipleno
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ foo
+The following packages will be upgraded:
+ bar
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo [1]
+Inst bar [1] (2.2 multipleyes [amd64])
+Conf bar (2.2 multipleyes [amd64])' aptget dist-upgrade -st multipleyes
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ baz
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst baz (2 unversioned [amd64])
+Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following packages will be REMOVED:
+ foo
+The following NEW packages will be installed:
+ baz
+The following packages will be upgraded:
+ bar
+1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv foo [1]
+Inst bar [1] (2 versioned [amd64])
+Inst baz (2 versioned [amd64])
+Conf bar (2 versioned [amd64])
+Conf baz (2 versioned [amd64])' aptget install baz -st versioned
+
+# recreating the exact situation is hard, so we pull tricks to get the score
+rm -f rootdir/var/lib/dpkg/status
+insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0'
+insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes'
+insertinstalledpackage 'libaudit0' 'amd64' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ gdm3 libaudit0
+The following NEW packages will be installed:
+ libaudit-common libaudit1
+The following packages will be upgraded:
+ login
+1 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv gdm3 [1]
+Remv libaudit0 [1]
+Inst libaudit-common (2 jessie [amd64])
+Conf libaudit-common (2 jessie [amd64])
+Inst libaudit1 (2 jessie [amd64])
+Conf libaudit1 (2 jessie [amd64])
+Inst login [1] (2 jessie [amd64])
+Conf login (2 jessie [amd64])' aptget dist-upgrade -st jessie
diff --git a/test/integration/test-apt-acquire-additional-files b/test/integration/test-apt-acquire-additional-files
new file mode 100755
index 0000000..928c703
--- /dev/null
+++ b/test/integration/test-apt-acquire-additional-files
@@ -0,0 +1,246 @@
+#!/bin/sh
+set -e
+# Cause umask failures
+umask 000
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# note that in --print-uri we talk about .xz because that is the default.
+# This doesn't mean it is actually attempt to download it.
+configcompression '.' 'gz'
+LOWCOSTEXT='lz4'
+
+buildsimplenativepackage 'foo' 'amd64' '1' 'unstable'
+buildsimplenativepackage 'bar' 'all' '1' 'unstable'
+
+setupaptarchive --no-update
+changetowebserver
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} unstable InRelease [$(stat -c%s aptarchive/dists/unstable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} unstable/main Sources [$(stat -c%s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages [$(stat -c%s aptarchive/dists/unstable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} unstable/main all Packages [$(stat -c%s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} unstable/main Translation-en [$(stat -c%s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+testempty find rootdir/var/lib/apt/lists -name '*Contents*'
+
+msgmsg "Normal Contents file"
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+};
+EOF
+
+readfile() {
+ while [ -n "$1" ]; do
+ readlink -f "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_${1}"
+ shift
+ done
+}
+
+testequal "$(readfile Contents-amd64 Contents-all)" aptget indextargets --no-release-info --format '$(FILENAME)' 'Identifier: Contents'
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+# lets fake the existence of a compressed Contents file
+touch "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz"
+chmod 644 "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz"
+testequal "$(readfile Contents-amd64.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+touch "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz"
+chmod 644 "./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz"
+testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all 0 " aptget update --print-uris
+
+# apt believes the Contents files we faked are good
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+find rootdir/var/lib/apt/lists -name '*Contents*' -delete
+
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all 0 " aptget update --print-uris
+
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+testequal "$(readfile Contents-amd64 Contents-all)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" 'aptarchive/dists/unstable/main/Contents-amd64'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" 'aptarchive/dists/unstable/main/Contents-all'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 \
+ ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+# if we asked for keeping it compressed, keep it
+msgmsg "Normal Contents file with KeepCompressed"
+echo 'Acquire::IndexTargets::deb::Contents::KeepCompressed "true";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+testequal "$(readfile Contents-amd64.$LOWCOSTEXT Contents-all.$LOWCOSTEXT)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testequal "$(apthelper cat-file rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT)" apthelper cat-file 'aptarchive/dists/unstable/main/Contents-amd64.gz'
+testequal "$(apthelper cat-file rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT)" apthelper cat-file 'aptarchive/dists/unstable/main/Contents-all.gz'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.$LOWCOSTEXT
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.$LOWCOSTEXT
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+
+msgmsg "Compressed Contents file"
+# and no automatic uncompress based on the name please,
+# only if we downloaded a compressed file, but target was uncompressed
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE).gz";
+ ShortDescription "Contents.gz";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents.gz";
+};
+EOF
+
+runthistest() {
+ # the last lines are utter bogus of course, but how should apt know…
+ testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.gz.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-all.gz.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz 0 " aptget update --print-uris
+
+ testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} unstable/main all Contents.gz [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+
+ testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz" find rootdir/var/lib/apt/lists -name '*Contents-amd64*'
+ testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz" find rootdir/var/lib/apt/lists -name '*Contents-all*'
+ testequal "$(readfile Contents-amd64.gz Contents-all.gz)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+ testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz" 'aptarchive/dists/unstable/main/Contents-amd64.gz'
+ testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz" 'aptarchive/dists/unstable/main/Contents-all.gz'
+}
+runthistest
+
+msgmsg "Compressed Contents file from native architecture"
+echo 'Acquire::IndexTargets::deb::Contents::MetaKey "$(COMPONENT)/Contents-$(NATIVE_ARCHITECTURE).gz";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+runthistest
+
+msgmsg "Contents with 3 MetaKeys, first match"
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64.gz
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all.gz
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents3 {
+ MetaKey "main/Contents-all";
+ ShortDescription "Contents3";
+ Description "\$(RELEASE) all Contents3";
+ Fallback-Of "Contents2";
+ Identifier "Contents";
+};
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-amd64";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) amd64 Contents";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "Contents-all";
+ ShortDescription "Contents2";
+ Description "\$(RELEASE) all Contents2";
+ Fallback-Of "Contents";
+ Identifier "Contents";
+};
+EOF
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-amd64.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64 0 " aptget update --print-uris
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable/main amd64 Contents [$(stat -c%s aptarchive/dists/unstable/main/Contents-amd64.gz) B]
+Reading package lists..." aptget update
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" find rootdir/var/lib/apt/lists -name '*Contents*'
+testequal "$(readfile Contents-amd64)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64" 'aptarchive/dists/unstable/main/Contents-amd64'
+
+msgmsg "Contents with 3 MetaKeys, third match"
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-amd64
+testempty aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+echo 'Acquire::IndexTargets::deb::Contents::MetaKey "$(COMPONENT)/Contents-i386";' >> rootdir/etc/apt/apt.conf.d/content-target.conf
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-i386.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-i386 0 " aptget update --print-uris
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Get:2 http://localhost:${APTHTTPPORT} unstable all Contents3 [$(stat -c%s aptarchive/dists/unstable/main/Contents-all.gz) B]
+Reading package lists..." aptget update
+testequal "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" find rootdir/var/lib/apt/lists -name '*Contents*'
+testequal "$(readfile Contents-all)" aptget indextargets --format '$(FILENAME)' 'Identifier: Contents'
+testsuccess cmp "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all" 'aptarchive/dists/unstable/main/Contents-all'
+
+rm ./rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_Contents-all
+msgmsg "No Contents file"
+cat > rootdir/etc/apt/apt.conf.d/content-target-notdefault.conf <<EOF
+Acquire::IndexTargets::deb::Contents::DefaultEnabled "no";
+Acquire::IndexTargets::deb::Contents2::DefaultEnabled "no";
+Acquire::IndexTargets::deb::Contents3::DefaultEnabled "no";
+EOF
+testequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_unstable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_unstable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+
+testempty find rootdir/var/lib/apt/lists -name '*Contents*'
+
+msgmsg "Order of Contents files"
+sameupdateoutput() {
+ testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/unstable/InRelease' localhost:${APTHTTPPORT}_dists_unstable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/unstable/main/Contents-i386.xz' localhost:${APTHTTPPORT}_dists_unstable_main_Contents-i386 0 " aptget update --print-uris
+}
+sed -i -e 's#deb\(-src\)\? http#deb\1 [target=Contents3,Contents2,Contents] http#' rootdir/etc/apt/sources.list.d/*
+sameupdateoutput
+sed -i -e 's#deb\(-src\)\? \[target=[^]]\+\] http#deb\1 [target=Contents2,Contents3,Contents] http#' rootdir/etc/apt/sources.list.d/*
+sameupdateoutput
+sed -i -e 's#deb\(-src\)\? \[target=[^]]\+\] http#deb\1 [target=Contents3,Contents,Contents2] http#' rootdir/etc/apt/sources.list.d/*
+sameupdateoutput
+sed -i -e 's#deb\(-src\)\? \[target=[^]]\+\] http#deb\1 [target=Contents,Contents3,Contents2] http#' rootdir/etc/apt/sources.list.d/*
+sameupdateoutput
diff --git a/test/integration/test-apt-acquire-additional-files-duplicates b/test/integration/test-apt-acquire-additional-files-duplicates
new file mode 100755
index 0000000..b0b6460
--- /dev/null
+++ b/test/integration/test-apt-acquire-additional-files-duplicates
@@ -0,0 +1,105 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents1 {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+Acquire::IndexTargets::deb::Contentsflat {
+ MetaKey "Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE) Contents";
+ DefaultEnabled "false";
+};
+EOF
+
+mkdir -p ./rootdir/var/lib/apt/lists
+APTLISTS="$(readlink -f ./rootdir/var/lib/apt/lists)"
+APTETC="$(readlink -f ./rootdir/etc/apt)"
+cat > rootdir/etc/apt/sources.list <<EOF
+deb http://example.org/debian stable main rocks
+deb-src http://example.org/debian stable main rocks
+EOF
+testsuccessequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en" aptget indextargets --no-release-info --format '$(FILENAME)'
+
+cat >> rootdir/etc/apt/sources.list <<EOF
+deb http://example.org/debian stable main rocks
+EOF
+rm -r rootdir/var/cache/apt/*.bin
+testwarning aptcache gencaches
+testwarningequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en
+W: Target Packages (main/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (main/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (rocks/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3" aptget indextargets --no-release-info --format '$(FILENAME)'
+
+cat >> rootdir/etc/apt/sources.list <<EOF
+deb [target=Contents1,Contents2,Contentsflat arch=amd64] http://example.org/debian stable main rocks
+deb-src [target=Contents1,Contents2,Contentsflat arch=amd64] http://example.org/debian stable main rocks
+EOF
+rm -r rootdir/var/cache/apt/*.bin
+testwarning aptcache gencaches
+testwarningequal "${APTLISTS}/example.org_debian_dists_stable_main_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_rocks_source_Sources
+${APTLISTS}/example.org_debian_dists_stable_main_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_main_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-amd64_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-i386_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_binary-all_Packages
+${APTLISTS}/example.org_debian_dists_stable_rocks_i18n_Translation-en
+${APTLISTS}/example.org_debian_dists_stable_main_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_main_Contents-all
+${APTLISTS}/example.org_debian_dists_stable_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_Contents-all
+${APTLISTS}/example.org_debian_dists_stable_rocks_Contents-amd64
+${APTLISTS}/example.org_debian_dists_stable_rocks_Contents-all
+W: Target Packages (main/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (main/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (main/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-amd64/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-i386/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Packages (rocks/binary-all/Packages) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Translations (rocks/i18n/Translation-en) is configured multiple times in ${APTETC}/sources.list:1 and ${APTETC}/sources.list:3
+W: Target Contents2 wants to acquire the same file (main/Contents-amd64) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (main/Contents-all) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (rocks/Contents-amd64) as Contents1 from source ${APTETC}/sources.list:4
+W: Target Contents2 wants to acquire the same file (rocks/Contents-all) as Contents1 from source ${APTETC}/sources.list:4" aptget indextargets --no-release-info --format '$(FILENAME)'
diff --git a/test/integration/test-apt-by-hash-update b/test/integration/test-apt-by-hash-update
new file mode 100755
index 0000000..65c3766
--- /dev/null
+++ b/test/integration/test-apt-by-hash-update
@@ -0,0 +1,107 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'SHA512'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'bar' 'i386' '1.0'
+
+setupaptarchive --no-update
+
+# make Packages *only* accessible by-hash for this test
+makebyhashonly() {
+ local NORMAL="$(readlink -f "./aptarchive/dists/unstable/main/${1}")"
+ local BYHASH="${NORMAL}/by-hash/SHA512"
+ mkdir -p "${BYHASH}"
+ find "${NORMAL}/" -maxdepth 1 -name "${2}*" -exec mv '{}' "$BYHASH" \;
+ ln -s "${BYHASH}/${2}.gz" "${BYHASH}/$(sha512sum "${BYHASH}/${2}.gz" | cut -f1 -d' ')"
+}
+makebyhashonly 'binary-i386' 'Packages'
+makebyhashonly 'binary-all' 'Packages'
+makebyhashonly 'source' 'Sources'
+
+ensureitsbroken() {
+ rm -rf rootdir/var/lib/apt/lists
+ # we moved the Packages file away, normal update won't work
+ testfailure aptget update "$@"
+ # ensure we do not know about "foo"
+ testfailureequal "Reading package lists...
+Building dependency tree...
+E: Unable to locate package foo" aptget install -q -s foo
+}
+ensureitsbroken
+ensureitsbroken -o Acquire::By-Hash=1
+
+ensureitworks() {
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update "$@" -o Acquire::Languages=none
+ testfailure grep '^Ign' rootdir/tmp/testsuccess.output
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update "$@"
+ cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess grep '^Ign' rootdir/tmp/aptupdate.output
+ testsuccessequal "Inst foo (1.0 unstable [all])
+Conf foo (1.0 unstable [all])" aptget install -qq -s foo
+ testsuccessequal "Inst bar (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])" aptget install -qq -s bar
+}
+msgmsg 'Test by-hash via' 'config option'
+ensureitworks -o Acquire::By-Hash=force
+
+msgmsg 'Test by-hash via' 'release option'
+cp -a aptarchive/dists aptarchive/dists.bak
+# add magic string to Release file ...
+sed -i '/^Suite: / a \
+Acquire-By-Hash: yes' aptarchive/dists/unstable/Release
+signreleasefiles
+ensureitworks
+ensureitsbroken -o Acquire::By-Hash=0
+
+msgmsg 'Test by-hash via' 'sources option'
+sed -i "s#^\(deb\(-src\)\?\) #\1 [by-hash=yes] #" rootdir/etc/apt/sources.list.d/*
+ensureitworks
+#ensureitsbroken -o Acquire::By-Hash=0
+
+rm -rf aptarchive/dists
+cp -a aptarchive/dists.bak aptarchive/dists
+#ensureitworks -o Acquire::By-Hash=force
+ensureitsbroken -o Acquire::By-Hash=1
+ensureitsbroken -o Acquire::By-Hash=0
+
+sed -i "s#^\(deb\(-src\)\?\) \[by-hash=yes\] #\1 [by-hash=force] #" rootdir/etc/apt/sources.list.d/*
+ensureitworks
+#ensureitsbroken -o Acquire::By-Hash=0
+
+
+
+msgmsg 'Test InRelease by-hash via' 'sources option'
+
+rm -rf aptarchive/dists
+cp -a aptarchive/dists.bak aptarchive/dists
+mkdir -p aptarchive/dists/unstable/by-hash/SHA256
+inrelease_hash=$(sha256sum aptarchive/dists/unstable/InRelease | awk '{print $1}')
+mv aptarchive/dists/unstable/InRelease aptarchive/dists/unstable/by-hash/SHA256/$inrelease_hash
+#ensureitworks -o Acquire::By-Hash=force
+ensureitsbroken -o Acquire::By-Hash=1
+ensureitsbroken -o Acquire::By-Hash=0
+
+sed -i "s#^\(deb\(-src\)\?\) \[by-hash=force\] #\1 [by-hash=force inrelease-path=by-hash/SHA256/$inrelease_hash] #" rootdir/etc/apt/sources.list.d/*
+ensureitworks
+#ensureitsbroken -o Acquire::By-Hash=0
+
+msgmsg 'Test InRelease by-hash with' 'no fallback'
+
+rm -rf aptarchive/dists
+cp -a aptarchive/dists.bak aptarchive/dists
+
+testfailureequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease
+Err:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease
+ File not found - ${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/by-hash/SHA256/${inrelease_hash} (2: No such file or directory)
+Reading package lists...
+E: Failed to fetch file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease File not found - ${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/by-hash/SHA256/${inrelease_hash} (2: No such file or directory)" aptget update
diff --git a/test/integration/test-apt-cache b/test/integration/test-apt-cache
new file mode 100755
index 0000000..c003fba
--- /dev/null
+++ b/test/integration/test-apt-cache
@@ -0,0 +1,183 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+DESCR='Some description
+ That has multiple lines'
+insertpackage 'unstable' 'fancy' 'all' '1'
+insertpackage 'unstable,installed' 'foo' 'all' '1' 'Depends: bar
+Conflicts: foobar
+Recommends: cool (>= 2) | cooler (<< 5)' "$DESCR"
+insertpackage 'unstable' 'bar' 'all' '1' 'Depends: bar
+Breaks: foo (<< 1)
+Replaces: foo (<< 1)' "$DESCR"
+insertpackage 'unstable' 'specific' 'all' '1' 'Depends: bar:i386, specific:amd64
+Breaks: foo:amd64 (<< 1)
+Replaces: foo:i386 (<< 1)' "$DESCR"
+
+setupaptarchive
+
+insertinstalledpackage 'awesome' 'all' '1'
+testdpkginstalled 'awesome'
+testempty aptcache unmet awesome
+
+# FIXME: Find some usecase for unmet as it seems kinda useless/broken
+#testsuccess aptcache unmet
+#testsuccess aptcache unmet foo
+
+# not too useful to test, but makes coverage green…
+testsuccess aptcache stats
+cp rootdir/tmp/testsuccess.output stats.output
+testsuccess test -s stats.output
+testfailureequal 'E: apt-cache stats does not take any arguments' aptcache stats foo
+testsuccess aptcache xvcg foo
+cp rootdir/tmp/testsuccess.output xvcg.output
+testsuccess test -s xvcg.output
+testsuccess aptcache dotty foo
+cp rootdir/tmp/testsuccess.output dotty.output
+testsuccess test -s dotty.output
+# for this, even the sourcecode says it is useless (expect debugging)
+testsuccess aptcache dump
+cp rootdir/tmp/testsuccess.output dump.output
+testsuccess test -s dump.output
+
+testsuccessequal 'bar
+foo
+awesome
+specific
+fancy' aptcache pkgnames
+testsuccessequal 'bar' aptcache pkgnames bar
+testsuccessequal 'foo
+fancy' aptcache pkgnames f
+
+testsuccessequal " foo | 1 | file:$(readlink -f .)/aptarchive unstable/main all Packages" aptcache madison foo
+
+### depends
+
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>' aptcache depends foo
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>' aptcache depends foo --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ Recommends: <cool>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1 --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool> (>= 2)
+ Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool> (>= 2)
+ Recommends: <cooler> (<< 5)' aptcache depends foo -o APT::Cache::ShowVersion=1 --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>' aptcache depends foo --no-recommends
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>' aptcache depends foo --no-recommends --implicit
+testsuccessequal 'foo
+ Depends: bar' aptcache depends foo --important --implicit
+testsuccessequal 'foo
+ Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts
+testsuccessequal 'foo
+ Conflicts: <foobar>' aptcache depends foo --important --no-depends --conflicts --implicit
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>
+bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+<foobar>
+<cool>
+<cooler>' aptcache depends foo --recurse
+testsuccessequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ |Recommends: <cool>
+ Recommends: <cooler>
+bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+ Breaks: <foo:i386>
+ Replaces: <foo:i386>
+<foobar>
+<cool>
+<cooler>
+<foo:i386>' aptcache depends foo --recurse --implicit
+testsuccessequal 'foo
+ Depends: bar
+bar
+ Depends: bar
+ Replaces: foo' aptcache depends foo --recurse --important --replaces
+testsuccessequal 'foo
+ Depends: bar
+bar
+ Depends: bar
+ Replaces: foo
+ Replaces: <foo:i386>
+<foo:i386>' aptcache depends foo --recurse --important --replaces --implicit
+testsuccessequal 'bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo' aptcache depends bar
+testsuccessequal 'bar
+ Depends: bar
+ Breaks: foo
+ Replaces: foo
+ Breaks: <foo:i386>
+ Replaces: <foo:i386>' aptcache depends bar --implicit
+
+testsuccessequal 'specific
+ Depends: <bar:i386>
+ Depends: <specific:amd64>
+ specific
+ Breaks: <foo:amd64>
+ Replaces: <foo:i386>' aptcache depends specific
+testsuccessequal 'specific
+ Depends: <bar:i386>
+ Depends: <specific:amd64>
+ specific
+ Breaks: <foo:amd64>
+ Replaces: <foo:i386>' aptcache depends specific --implicit
+
+## rdepends
+
+# Note that specific does not appear in this list as it doesn't depend on foo,
+# but on an arch-specific foo!
+testsuccessequal 'foo
+Reverse Depends:
+ bar
+ bar' aptcache rdepends foo
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar
+ Replaces: bar' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar (<< 1)
+ Replaces: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1
+testsuccessequal 'foo
+Reverse Depends:
+ Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1 --important --breaks
diff --git a/test/integration/test-apt-cache-remapping b/test/integration/test-apt-cache-remapping
new file mode 100755
index 0000000..19647a6
--- /dev/null
+++ b/test/integration/test-apt-cache-remapping
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'amd64' '1'
+insertinstalledpackage 'bar' 'all' '1'
+
+# the default is 1MB – too much for our simple tests
+echo 'APT::Cache-Grow "1000";' > rootdir/etc/apt/apt.conf.d/limit-cachegrow.conf
+
+# experiment with cache remapping
+rm -f rootdir/var/cache/apt/*.bin
+testsuccess apt install ./incoming/foo_1_amd64.deb -s
+msgtest 'Cache files are generated in tests'
+if [ ! -e rootdir/var/cache/apt/srcpkgcache.bin -o ! -e rootdir/var/cache/apt/pkgcache.bin ]; then
+ msgfail 'files do not exist'
+ ls -l rootdir/var/cache/apt/*.bin
+ exit 1
+else
+ msgpass
+fi
+
+SLSIZE="$(stat -c '%s' rootdir/var/cache/apt/srcpkgcache.bin)"
+STSIZE="$(stat -c '%s' rootdir/var/cache/apt/pkgcache.bin)"
+rm -f rootdir/var/cache/apt/*.bin
+testfailure apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$SLSIZE" -o APT::Cache-Grow=0
+testfailure test -e rootdir/var/cache/apt/pkgcache.bin
+rm -f rootdir/var/cache/apt/*.bin
+testfailure apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$SLSIZE" -o APT::Cache-Limit="$SLSIZE"
+testfailure test -e rootdir/var/cache/apt/pkgcache.bin
+rm -f rootdir/var/cache/apt/*.bin
+testsuccess apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$SLSIZE"
+testsuccess test -e rootdir/var/cache/apt/srcpkgcache.bin -a -e rootdir/var/cache/apt/pkgcache.bin
+
+rm -f rootdir/var/cache/apt/*.bin
+testfailure apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$STSIZE" -o APT::Cache-Grow=0
+rm -f rootdir/var/cache/apt/*.bin
+testfailure apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$STSIZE" -o APT::Cache-Limit="$SLSIZE"
+rm -f rootdir/var/cache/apt/*.bin
+testfailure apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$STSIZE" -o APT::Cache-Limit="$STSIZE"
+rm -f rootdir/var/cache/apt/*.bin
+testsuccess apt install ./incoming/foo_1_amd64.deb -s -o APT::Cache-Start="$STSIZE"
+testsuccess test -e rootdir/var/cache/apt/srcpkgcache.bin -a -e rootdir/var/cache/apt/pkgcache.bin
diff --git a/test/integration/test-apt-cache-showsrc b/test/integration/test-apt-cache-showsrc
new file mode 100755
index 0000000..d3f61d9
--- /dev/null
+++ b/test/integration/test-apt-cache-showsrc
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# we have a foo source package
+insertsource 'unstable' 'foo' 'all' '1.0' '' 'foo-binary'
+
+# and a similar one that builds a foo binary package
+insertsource 'unstable' 'unrelated' 'all' '1.0' '' 'foo'
+
+# just here to workaround the need for a authenticated package
+insertpackage 'unstable' 'workaround' 'all' '1.0'
+
+setupaptarchive
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testsuccess grep "Package: unrelated" output.txt
+
+# by default apt-cache showsrc will look into "binary" and "source" names
+# and show all matches
+aptcache showsrc --only-source foo > output.txt
+testsuccess grep "Package: foo" output.txt
+testfailure grep "Package: unrelated" output.txt
diff --git a/test/integration/test-apt-cdrom b/test/integration/test-apt-cdrom
new file mode 100755
index 0000000..01680c4
--- /dev/null
+++ b/test/integration/test-apt-cdrom
@@ -0,0 +1,158 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive --no-update
+
+changetocdrom 'Debian APT Testdisk 0.8.15'
+
+# -de is not in the Release file, but picked up anyway for compatibility
+cd rootdir/media/cdrom-unmounted/dists/stable/main/i18n
+chmod +w .
+sed -e '/^Description-en:/ d' -e '/^ / d' -e '/^$/ d' Translation-en > Translation-de
+echo 'Description-de: automatisch generiertes Testpaket testing=0.8.15/stable
+ Diese Pakete sind nur für das testen von APT gedacht,
+ sie erfüllen keinen Zweck auf einem normalen System…
+' >> Translation-de
+compressfile Translation-de
+rm -f Translation-en Translation-de
+chmod -R 555 .
+cd - > /dev/null
+
+aptcdromlog() {
+ rm -f rootdir/tmp/apt-cdrom.log
+ test ! -e rootdir/media/cdrom || echo "CD-ROM is mounted, but shouldn't be!"
+ test -e rootdir/media/cdrom-unmounted || echo "Unmounted CD-ROM doesn't exist, but it should!"
+ aptcdrom "$@" -o quiet=1 >rootdir/tmp/apt-cdrom.log 2>&1 </dev/null
+ sed -e '/gpgv\?:\s*Signature made/ d' \
+ -e '/gpgv\?:\s*Good signature/ d' \
+ -e '/gpgv\?:\s*using RSA key/ d' \
+ -e '/gpgv\?:\s*issuer/ d' \
+ -e '/^Identifying/ d' \
+ -e '/Reading / d' rootdir/tmp/apt-cdrom.log
+ test ! -e rootdir/media/cdrom || echo "CD-ROM is mounted, but shouldn't be!"
+ test -e rootdir/media/cdrom-unmounted || echo "Unmounted CD-ROM doesn't exist, but it should!"
+}
+aptautotest_aptcdromlog_add() { aptautotest_aptget_update "$@"; }
+
+CDROM_PRE="Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/
+Unmounting CD-ROM...
+Waiting for disc...
+Please insert a Disc in the drive and press [Enter]
+Mounting CD-ROM...
+Scanning disc for index files..."
+CDROM_POST="This disc is called:
+'Debian APT Testdisk 0.8.15'
+Writing new source list
+Source list entries for this disc are:
+deb cdrom:[Debian APT Testdisk 0.8.15]/ stable main
+deb-src cdrom:[Debian APT Testdisk 0.8.15]/ stable main
+Unmounting CD-ROM...
+Repeat this process for the rest of the CDs in your set."
+
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 1 translation indexes and 1 signatures
+Found label 'Debian APT Testdisk 0.8.15'
+$CDROM_POST" aptcdromlog add
+
+testsuccessequal "Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/
+Mounting CD-ROM...
+Stored label: Debian APT Testdisk 0.8.15
+Unmounting CD-ROM..." aptcdromlog ident
+
+# apt-setup uses these commands (expect the tr in the id) to find id and label
+ident="$(LC_ALL=C aptcdrom ident 2>&1 )"
+CD_ID="$(echo "$ident" | grep "^Identifying" | head -n1 | cut -d" " -f2 | tr --delete '[]')"
+CD_LABEL="$(echo "$ident" | grep "^Stored label:" | head -n1 | sed "s/^[^:]*: //")"
+testfileequal rootdir/var/lib/apt/cdroms.list "CD::${CD_ID} \"${CD_LABEL}\";
+CD::${CD_ID}::Label \"${CD_LABEL}\";"
+
+testcdromusage() {
+ touch rootdir/var/lib/apt/extended_states
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ testing
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testing (0.8.15 stable [amd64])
+Conf testing (0.8.15 stable [amd64])' aptget install testing -s
+
+ testdpkgnotinstalled testing
+ testsuccess aptget install testing -y
+ testdpkginstalled testing
+ testsuccess aptget purge testing -y
+ testdpkgnotinstalled testing
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ testing:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testing:i386 (0.8.15 stable [i386])
+Conf testing:i386 (0.8.15 stable [i386])' aptget install testing:i386 -s
+
+ testdpkgnotinstalled testing:i386
+ testsuccess aptget install testing:i386 -y
+ testdpkginstalled testing:i386
+ testsuccess aptget purge testing:i386 -y
+ testdpkgnotinstalled testing:i386
+
+ cd downloaded
+ rm -f testing_0.8.15_amd64.deb
+ testsuccess aptget download testing
+ testsuccess test -s testing_0.8.15_amd64.deb
+ rm -f testing_0.8.15_amd64.deb
+
+ rm -f testing_0.8.15.dsc
+ testsuccess aptget source testing --dsc-only
+ testsuccess test -s testing_0.8.15.dsc
+ rm -f testing_0.8.15.dsc
+ cd - >/dev/null
+}
+testcdromusage
+
+# check Idempotence of apt-cdrom (and disabling of Translation dropping)
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 2 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add -o APT::CDROM::DropTranslation=0
+
+# take Translations from previous runs as needed
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 2 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add
+msgtest 'Test for the german description translation of' 'testing'
+aptcache show testing -o Acquire::Languages=de | grep -q '^Description-de: ' && msgpass || msgfail
+rm -rf rootdir/var/lib/apt/lists
+testsuccessequal "$CDROM_PRE
+Found 3 package indexes, 1 source indexes, 1 translation indexes and 1 signatures
+$CDROM_POST" aptcdromlog add
+msgtest 'Test for the english description translation of' 'testing'
+aptcache show testing -o Acquire::Languages=en | grep -q '^Description-en: ' && msgpass || msgfail
+
+# ensure cdrom method isn't trying to mount the cdrom
+mv rootdir/media/cdrom-unmounted rootdir/media/cdrom-ejected
+msgmsg "ensure an update doesn't mess with cdrom sources"
+testsuccess aptget update
+testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease
+Reading package lists...'
+mv rootdir/media/cdrom-ejected rootdir/media/cdrom-unmounted
+testcdromusage
+
+msgmsg 'and again to check that it withstands the temptation even if it could mount'
+testsuccess aptget update
+testfileequal rootdir/tmp/testsuccess.output 'Hit:1 cdrom://Debian APT Testdisk 0.8.15 stable InRelease
+Reading package lists...'
+testcdromusage
+
+msgmsg 'Check that nothing touched our' 'CD-ROM'
+for file in $(find rootdir/media/cdrom-unmounted/dists); do
+ testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:555"
+done
diff --git a/test/integration/test-apt-cli-json-hooks b/test/integration/test-apt-cli-json-hooks
new file mode 100755
index 0000000..9a3208c
--- /dev/null
+++ b/test/integration/test-apt-cli-json-hooks
@@ -0,0 +1,340 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+getoriginfromsuite() { echo 'Oranges'; }
+getlabelfromsuite() { echo 'Lemons'; }
+getversionfromsuite() { echo 'Volkamer'; }
+
+setupenvironment
+configarchitecture "i386"
+
+DESCR='Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE'
+DESCR2='Some other description with the unusual aabbcc only'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR
+ Long description of stuff and such, with lines
+ .
+ and paragraphs and everything."
+insertpackage 'testing' 'bar' 'i386' '2.0' '' '' "$DESCR2"
+insertpackage 'testing' 'upgrade' 'i386' '2.0'
+insertinstalledpackage 'upgrade' 'i386' '1.0'
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+export TEST_HOOK_VERSION=0.2
+
+cat >> json-hook.sh << EOF
+#!/bin/bash
+trap '' SIGPIPE
+while true; do
+ read request <&\$APT_HOOK_SOCKET || exit 1
+
+ if echo "\$request" | grep -q ".hello"; then
+ echo "HOOK: HELLO"
+ fi
+
+ if echo "\$request" | grep -q ".bye"; then
+ echo "HOOK: BYE"
+ exit 0;
+ fi
+
+ echo HOOK: request \$request
+
+ read empty <&\$APT_HOOK_SOCKET || exit 1
+
+ echo HOOK: empty \$empty
+
+ if echo "\$request" | grep -q ".hello"; then
+ printf '{"jsonrpc": "2.0", "result": {"version": "'\$TEST_HOOK_VERSION'"}, "id": 0}\n\n' >&\$APT_HOOK_SOCKET 2>/dev/null || exit 1
+ fi
+
+
+done
+EOF
+
+chmod +x json-hook.sh
+
+HOOK="$(readlink -f ./json-hook.sh)"
+
+# Setup all hooks
+cat >> rootdir/etc/apt/apt.conf.d/99-json-hooks << EOF
+ AptCli::Hooks::Install:: "$HOOK";
+ AptCli::Hooks::Upgrade:: "$HOOK";
+ AptCli::Hooks::Search:: "$HOOK";
+EOF
+
+
+############################# Success search #######################
+testsuccessequal 'HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}}
+HOOK: empty
+HOOK: BYE
+Sorting...
+Full Text Search...
+foo/unstable 1.0 all
+ Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE
+
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.post","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}}
+HOOK: empty
+HOOK: BYE' apt search foo
+
+############################# Failed search #######################
+testsuccessequal 'HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}}
+HOOK: empty
+HOOK: BYE
+Sorting...
+Full Text Search...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.fail","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}}
+HOOK: empty
+HOOK: BYE' apt search foox
+
+
+############################# Failed install #######################
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.fail","params":{"command":"install","search-terms":["foxxx"],"unknown-packages":["foxxx"],"packages":[]}}
+HOOK: empty
+HOOK: BYE
+E: Unable to locate package foxxx' apt install foxxx
+
+############################# Success install #######################
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}}
+HOOK: empty
+HOOK: BYE
+The following NEW packages will be installed:
+ foo
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}}
+HOOK: empty
+HOOK: BYE
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}}
+HOOK: empty
+HOOK: BYE
+Inst foo (1.0 Lemons:unstable [all])
+Conf foo (1.0 Lemons:unstable [all])
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}}
+HOOK: empty
+HOOK: BYE' apt install foo -s
+
+############################# Failed dist-upgrade #######################
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.fail","params":{"command":"dist-upgrade","search-terms":["foxxx"],"unknown-packages":["foxxx"],"packages":[]}}
+HOOK: empty
+HOOK: BYE
+E: Unable to locate package foxxx' apt dist-upgrade foxxx
+
+############################# Success install #######################
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+The following packages will be upgraded:
+ upgrade
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+Inst upgrade [1.0] (2.0 Lemons:testing [i386])
+Conf upgrade (2.0 Lemons:testing [i386])
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE' apt dist-upgrade -s
+
+
+################## version 0.1 #########################
+TEST_HOOK_VERSION=0.1
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+The following packages will be upgraded:
+ upgrade
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE
+Inst upgrade [1.0] (2.0 Lemons:testing [i386])
+Conf upgrade (2.0 Lemons:testing [i386])
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}}
+HOOK: empty
+HOOK: BYE' apt dist-upgrade -s
+
+
+################## Wrong version #########################
+TEST_HOOK_VERSION=42
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+HOOK: HELLO
+HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}}
+HOOK: empty
+E: Unknown hook version in handshake from hook '$HOOK': {"jsonrpc": "2.0", "result": {"version": "42"}, "id": 0}
+E: Sub-process '$HOOK' returned an error code (1)
+E: Failure running hook '$HOOK'
+E: Unknown hook version in handshake from hook '$HOOK': {"jsonrpc": "2.0", "result": {"version": "42"}, "id": 0}
+E: Sub-process '$HOOK' returned an error code (1)
+E: Failure running hook '$HOOK'' apt dist-upgrade -s
+################## Error in hello response #########################
+
+cat > json-hook.sh << EOF
+#!/bin/bash
+exec 2>/dev/null
+trap '' SIGPIPE
+while true; do
+ read request <&\$APT_HOOK_SOCKET
+ read empty <&\$APT_HOOK_SOCKET
+
+ if echo "\$request" | grep -q ".hello"; then
+ printf '{"jsonrpc": "2.0", "error": {"version": "0.1"}, "id": 0}\n\n' >&\$APT_HOOK_SOCKET
+ break
+ fi
+done
+exit 0
+EOF
+
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Hook '$HOOK' reported an error during hello: {"jsonrpc": "2.0", "error": {"version": "0.1"}, "id": 0}
+E: Hook '$HOOK' reported an error during hello: {"jsonrpc": "2.0", "error": {"version": "0.1"}, "id": 0}' apt install foo -s
+
+################## Missing separator line #########################
+cat > json-hook.sh << EOF
+#!/bin/bash
+exec 2>/dev/null
+trap '' SIGPIPE
+while true; do
+ read request <&\$APT_HOOK_SOCKET
+ read empty <&\$APT_HOOK_SOCKET
+
+ if echo "\$request" | grep -q ".hello"; then
+ printf '{"jsonrpc": "2.0", "result": {"version": "0.1"}, "id": 0}\n' >&\$APT_HOOK_SOCKET
+ break
+ fi
+done
+exit 0
+EOF
+
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Could not read message separator line after handshake from '$HOOK': end of file
+E: Could not read message separator line after handshake from '$HOOK': end of file' apt install foo -s
+
+################## Wrong separator line #########################
+cat > json-hook.sh << EOF
+#!/bin/bash
+exec 2>/dev/null
+trap '' SIGPIPE
+while true; do
+ read request <&\$APT_HOOK_SOCKET
+ read empty <&\$APT_HOOK_SOCKET
+
+ if echo "\$request" | grep -q ".hello"; then
+ printf '{"jsonrpc": "2.0", "result": {"version": "0.1"}, "id": 0}\nXX' >&\$APT_HOOK_SOCKET
+ break
+ fi
+done
+exit 0
+EOF
+
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Expected empty line after handshake from '$HOOK', received XX
+E: Expected empty line after handshake from '$HOOK', received XX' apt install foo -s
+
+##################### Removed hook || true ############################
+cat > rootdir/etc/apt/apt.conf.d/99-json-hooks << EOF
+ AptCli::Hooks::Install:: "true";
+ AptCli::Hooks::Search:: "true";
+EOF
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foo (1.0 Lemons:unstable [all])
+Conf foo (1.0 Lemons:unstable [all])' apt install foo -s
+
+
+
diff --git a/test/integration/test-apt-cli-list b/test/integration/test-apt-cli-list
new file mode 100755
index 0000000..e81a3b7
--- /dev/null
+++ b/test/integration/test-apt-cli-list
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'armel'
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertinstalledpackage 'bar' 'i386' '1.0'
+
+insertinstalledpackage 'foobar' 'i386' '1.0'
+insertpackage 'unstable' 'foobar' 'i386' '2.0'
+
+insertinstalledpackage 'baz' 'all' '0.1'
+insertpackage 'testing' 'baz' 'all' '1.0'
+insertpackage 'unstable' 'baz' 'all' '2.0'
+
+insertinstalledpackage 'foreign' 'armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foreign' 'i386,armel' '2.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'lib' 'i386,armel' '2.0' 'Multi-Arch: same'
+
+setupaptarchive
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+baz/unstable 2.0 all [upgradable from: 0.1]
+foo/unstable 1.0 all
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foreign/unstable 2.0 armel [upgradable from: 1.0]
+foreign/unstable 2.0 i386
+lib/unstable 2.0 armel
+lib/unstable 2.0 i386" apt list
+
+testsuccessequal "Listing...
+foo/unstable 1.0 all
+foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list "foo*"
+
+testsuccessequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foreign/unstable 2.0 armel [upgradable from: 1.0]" apt list --upgradable
+
+# FIXME: hm, hm - does it make sense to have this different? shouldn't
+# we use "installed,upgradable" consistently?
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+baz/now 0.1 all [installed,upgradable to: 2.0]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]
+foreign/now 1.0 armel [installed,upgradable to: 2.0]" apt list --installed
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foobar/now 1.0 i386 [installed,upgradable to: 2.0]
+" apt list bar foobar --all-versions
+
+testsuccessequal "Listing...
+bar/now 1.0 i386 [installed,local]
+ an autogenerated dummy bar=1.0/installed
+" apt list bar --verbose
+
+# test for dpkg ^rc state
+insertinstalledpackage 'conf-only' 'i386' '1.0' '' '' 'deinstall ok config-files'
+testsuccessequal "Listing...
+conf-only/now 1.0 i386 [residual-config]" apt list conf-only
+
+# ensure that the users learns about multiple versions too
+testsuccessequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+N: There are 2 additional versions. Please use the '-a' switch to see them." apt list baz -o quiet=0
+testsuccessequal 'Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+baz/testing 1.0 all
+baz/now 0.1 all [installed,upgradable to: 2.0]
+' apt list baz -o quiet=0 -a
+
+# test format strings for machine parseable output
+testsuccessequal 'bar - 1.0 - 1.0
+baz - 0.1 - 2.0' apt list -qq bar baz -o APT::Cmd::use-format=true -o APT::Cmd::format="\${Package} - \${installed:Version} - \${candidate:Version}"
+
+
+insertinstalledpackage 'lib' 'i386,armel' '1.0' 'Multi-Arch: same'
+testsuccessequal 'Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+foobar/unstable 2.0 i386 [upgradable from: 1.0]
+foreign/unstable 2.0 armel [upgradable from: 1.0]
+lib/unstable 2.0 armel [upgradable from: 1.0]
+lib/unstable 2.0 i386 [upgradable from: 1.0]' apt list --upgradeable
diff --git a/test/integration/test-apt-cli-search b/test/integration/test-apt-cli-search
new file mode 100755
index 0000000..6457ece
--- /dev/null
+++ b/test/integration/test-apt-cli-search
@@ -0,0 +1,79 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+DESCR='Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE'
+DESCR2='Some other description with the unusual aabbcc only'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR
+ Long description of stuff and such, with lines
+ .
+ and paragraphs and everything."
+insertpackage 'testing' 'bar' 'i386' '2.0' '' '' "$DESCR2"
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+testfailureequal 'E: You must give at least one search pattern' aptcache search
+testfailureequal 'E: You must give at least one search pattern' apt search
+
+# with OP progress
+testsuccessequal "Sorting...
+Full Text Search...
+foo/unstable 1.0 all
+ $DESCR
+" apt search xxyyzz
+
+# without op progress
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq xxyyzz
+testempty apt search -qq --names-only xxyyzz
+
+# search name
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq foo
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq --names-only foo
+
+# search with multiple words is a AND search
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq aabbcc xxyyzz
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'a+b+c+' 'i*xxy{0,2}zz'
+
+# search is not case-sensitive by default
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq uppercase
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'up[pP]erc[Aa]se'
+
+# search is done in the long description
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq 'long description'
+testsuccessequal "foo/unstable 1.0 all
+ $DESCR
+ Long description of stuff and such, with lines
+ .
+ and paragraphs and everything.
+" apt search --full -qq 'long description'
+
+# output is sorted and search word finds both package
+testsuccessequal "bar/testing 2.0 i386
+ $DESCR2
+
+foo/unstable 1.0 all
+ $DESCR
+" apt search -qq aabbcc
diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show
new file mode 100755
index 0000000..05a801f
--- /dev/null
+++ b/test/integration/test-apt-cli-show
@@ -0,0 +1,201 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+generatelotsofnames() {
+ for i in $(seq 0 10000); do
+ printf ', this-is-a-long-pkg-name-%s (= 0.a.long.version)' "$i"
+ done
+}
+
+DESCR='Some description
+ That has multiple lines'
+insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
+insertpackage 'unstable' 'bar' 'i386,amd64' '1' '' '' "$DESCR"
+insertpackage 'unstable' 'big' 'i386,amd64' '1' 'Installed-Size: 4129421' '' "$DESCR"
+insertpackage 'unstable' 'large' 'all' '1' "Provides: pkga$(generatelotsofnames)" '' "$DESCR"
+insertpackage 'unstable' 'large2' 'all' '1' "Provides: foobar, pkga$(generatelotsofnames)" '' "$DESCR"
+insertpackage 'unstable' 'multi' 'all' '1.0' '' '' "$DESCR"
+insertpackage 'unstable' 'multi' 'all' '2.0' '' '' "$DESCR"
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+# note that we do not display Description-md5 with the "apt" cmd
+# and also show some additional fields that are calculated
+testsuccessequal "Package: foo
+Version: 1.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Manual-Installed: yes
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show foo
+testsuccessequal "Package: foo
+Version: 1.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Filename: pool/main/foo/foo_1.0_all.deb
+SHA256: 0000000000000000000000000000000000000000000000000000000000000000
+Download-Size: 42 B
+APT-Manual-Installed: yes
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show foo --full
+testsuccessequal "Package: bar
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main i386 Packages
+Description: Some description
+ That has multiple lines
+" apt show bar
+testsuccessequal "Package: bar:amd64
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main amd64 Packages
+Description: Some description
+ That has multiple lines
+" apt show bar:amd64
+testsuccessequal "Package: big:amd64
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 4229 MB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main amd64 Packages
+Description: Some description
+ That has multiple lines
+" apt show big:amd64
+
+testsuccessequal "Package: large
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Provides: pkga$(generatelotsofnames)
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show large
+testsuccessequal "Package: large2
+Version: 1
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Provides: foobar, pkga$(generatelotsofnames)
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show large2
+
+# Test for multiple versions
+testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+
+N: There is 1 additional record. Please use the '-a' switch to see it" apt show multi
+
+testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+
+Package: multi
+Version: 1.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt show multi -a
+
+# test apt info
+testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+
+N: There is 1 additional record. Please use the '-a' switch to see it" apt info multi
+
+testsuccessequal "Package: multi
+Version: 2.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+
+Package: multi
+Version: 1.0
+Priority: optional
+Section: other
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 43.0 kB
+Download-Size: 42 B
+APT-Sources: file:$APTARCHIVE unstable/main all Packages
+Description: Some description
+ That has multiple lines
+" apt info multi -a
+
+# this is the default, but disabled by the testcases
+testsuccess apt show foo -o Apt::Cmd::Disable-Script-Warning=0
+cp rootdir/tmp/testsuccess.output aptshow.output
+testsuccess grep '^WARNING: ' aptshow.output
+
+if [ "$(id -u)" != '0' ]; then
+ testsuccess apt install foo -s -o APT::Get::Show-User-Simulation-Note=1
+ cp rootdir/tmp/testsuccess.output aptshow.output
+ testsuccess grep '^NOTE: ' aptshow.output
+fi
diff --git a/test/integration/test-apt-cli-update b/test/integration/test-apt-cli-update
new file mode 100755
index 0000000..8102215
--- /dev/null
+++ b/test/integration/test-apt-cli-update
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'all' '2.0'
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive --no-update
+
+testfailuremsg 'E: The update command takes no arguments' apt update arguments
+
+testempty apt update -qq -o pkgCacheFile::Generate=false
+testsuccessequal "1 package can be upgraded. Run 'apt list --upgradable' to see it." apt update -qq
+
+rm -f rootdir/var/lib/dpkg/status
+insertinstalledpackage 'foo' 'all' '2.0'
+testsuccessequal 'All packages are up to date.' apt update -qq
diff --git a/test/integration/test-apt-cli-upgrade b/test/integration/test-apt-cli-upgrade
new file mode 100755
index 0000000..705c163
--- /dev/null
+++ b/test/integration/test-apt-cli-upgrade
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'all' '2.0' 'Depends: foo-new-dependency'
+insertpackage 'unstable' 'foo-new-dependency' 'all' '2.0'
+insertinstalledpackage 'foo' 'all' '1.0'
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+# default is to allow new dependencies
+testsuccessequal "The following NEW packages will be installed:
+ foo-new-dependency
+The following packages will be upgraded:
+ foo
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-new-dependency (2.0 unstable [all])
+Inst foo [1.0] (2.0 unstable [all])
+Conf foo-new-dependency (2.0 unstable [all])
+Conf foo (2.0 unstable [all])" apt upgrade -qq -s
+
+# ensure the 'old' way works as well
+testsuccessequal "The following packages have been kept back:
+ foo
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt upgrade -qq -s --no-new-pkgs
diff --git a/test/integration/test-apt-config b/test/integration/test-apt-config
new file mode 100755
index 0000000..12df63d
--- /dev/null
+++ b/test/integration/test-apt-config
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+testsuccess aptconfig dump
+testsuccessequal 'APT::Architecture "amd64";' aptconfig dump APT::Architecture
+testempty aptconfig dump config::which::does::not::exist
+
+testsuccessequal 'APT::Architectures "";
+APT::Architectures:: "amd64";' aptconfig dump APT::Architectures
+testsuccessequal 'APT::Architectures:: "amd64";' aptconfig dump --no-empty APT::Architectures
+testsuccessequal 'amd64' aptconfig dump --no-empty --format='%v%n' APT::Architectures
+
+testempty aptconfig shell
+testfailureequal 'E: Arguments not in pairs' aptconfig shell APT::Architecture
+testempty aptconfig shell APT::Architecture ARCH # incorrect order
+testsuccessequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture
+
+ROOTDIR="$(readlink -f rootdir)"
+testsuccessequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f
+testsuccessequal "CONFIG='etc/apt'" aptconfig shell CONFIG Dir::Etc
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style
+testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d
+
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+export DEB_BUILD_PROFILES='nodoc stage1'
+testsuccessequal 'nodoc
+stage1' aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+unset DEB_BUILD_PROFILES
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+
+cat > spaces.conf <<EOF
+Spaces::Test::"Foo Bar" "1 1";
+Spaces::Test2::" Bar Baz " "B B" {
+ A%20B "C C";
+ "B C" "A A";
+};
+EOF
+testsuccessequal 'Spaces::Test "";
+Spaces::Test::Foo%20Bar "1 1";
+Spaces::Test2 "";
+Spaces::Test2::%20Bar%20Baz%20 "B B";
+Spaces::Test2::%20Bar%20Baz%20::A%20B "C C";
+Spaces::Test2::%20Bar%20Baz%20::B%20C "A A";' aptconfig dump -c spaces.conf Spaces::Test Spaces::Test2
diff --git a/test/integration/test-apt-edit-sources b/test/integration/test-apt-edit-sources
new file mode 100755
index 0000000..58742e9
--- /dev/null
+++ b/test/integration/test-apt-edit-sources
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+echo 'Dir::Bin::Editor "cat";' > rootdir/etc/apt/apt.conf.d/editor.conf
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/rocks.list
+testsuccessequal "$(cat rootdir/etc/apt/sources.list.d/rocks.list)" apt edit-sources rocks.list
+
+cat >editor.sh <<EOF
+#!/bin/sh
+umask 077
+touch "\$@"
+EOF
+chmod +x ./editor.sh
+echo 'Dir::Bin::Editor "./editor.sh";' > rootdir/etc/apt/apt.conf.d/editor.conf
+testsuccess apt edit-sources blub.list
+testfailure test -e 'rootdir/etc/apt/sources.list.d/blub.list'
+
+cat >editor.sh <<EOF
+#!/bin/sh
+umask 077
+echo '#comment' > "\$1"
+EOF
+testsuccess apt edit-sources blub.list
+testfilestats 'rootdir/etc/apt/sources.list.d/blub.list' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+
+echo 'Dir::Bin::Editor "cat";' > rootdir/etc/apt/apt.conf.d/editor.conf
+echo 'blub' > rootdir/etc/apt/sources.list.d/blub.list
+testfailure apt edit-sources blub.list --assume-no
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/blub.list
+touch -m -d 'now + 1 hour' rootdir/etc/apt/sources.list.d/blub.list
+testwarning apt edit-sources blub.list --assume-no
diff --git a/test/integration/test-apt-extracttemplates b/test/integration/test-apt-extracttemplates
new file mode 100755
index 0000000..a47257c
--- /dev/null
+++ b/test/integration/test-apt-extracttemplates
@@ -0,0 +1,78 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# apt-extracttemplates needs this
+insertinstalledpackage 'pkg-with-template' 'amd64' '1.0'
+
+# build a simple package that contains a config and a template
+mkdir -p DEBIAN
+CONFIG_STR="#!/bin/sh
+random shell stuff
+"
+echo "$CONFIG_STR" > DEBIAN/config
+chmod 755 DEBIAN/config
+
+testrun() {
+ local TEMPLATE_STR='Template: foo/bar
+Type: string
+Description: Some bar var
+'
+ echo "$TEMPLATE_STR" > DEBIAN/templates
+ buildsimplenativepackage "$1" 'amd64' '0.8.15' 'stable' "$2" 'pkg with template' '' '' './DEBIAN'
+
+ cp dpkg.status rootdir/var/lib/dpkg/status
+ insertinstalledpackage 'debconf' 'amd64' '3'
+
+ # ensure we get the right stuff out of the file
+ rm -rf extracttemplates-out rootdir/var/cache/apt
+ mkdir extracttemplates-out
+ testsuccess aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
+ OUT='rootdir/tmp/testsuccess.output'
+ testequal "$1" cut -f1 -d' ' $OUT
+ if [ -n "$2" ]; then
+ testequal '' cut -s -f2 -d' ' $OUT
+ else
+ testequal '1.0' cut -f2 -d' ' $OUT
+ fi
+ TEMPLATE=$(cut -f3 -d' ' $OUT)
+ testfileequal "$TEMPLATE" "$TEMPLATE_STR"
+ CONFIG=$(cut -f4 -d' ' $OUT)
+ testfileequal "$CONFIG" "$CONFIG_STR"
+ msgtest 'No extra files or directories in extraction directory'
+ if [ "$(find ./extracttemplates-out | wc -l)" = '3' ]; then
+ msgpass
+ else
+ msgfail
+ ls -l ./extracttemplates-out
+ fi
+
+ # ensure that the format of the output string has the right number of dots
+ for s in "$CONFIG" "$TEMPLATE"; do
+ NR_DOTS=$(basename "$s" | tr -c -d '.')
+ testequal '..' echo $NR_DOTS
+ done
+
+ if [ -n "$2" ]; then
+ rm -rf extracttemplates-out rootdir/var/cache/apt
+ mkdir extracttemplates-out
+ cp dpkg.status rootdir/var/lib/dpkg/status
+ insertinstalledpackage 'debconf' 'amd64' '1'
+ testempty aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
+ fi
+}
+
+cp rootdir/var/lib/dpkg/status dpkg.status
+testrun 'pkg-with-template' ''
+testrun 'pkg-with-template-depends' 'Depends: debconf (>= 2)'
+testrun 'pkg-with-template-predepends' 'Pre-Depends: debconf (>= 2)'
+
+# test with no debconf installed
+cp dpkg.status rootdir/var/lib/dpkg/status
+testfailure aptextracttemplates -t ./extracttemplates-out incoming/pkg-with-template-depends*.deb
+testfileequal 'rootdir/tmp/testfailure.output' 'E: Cannot get debconf version. Is debconf installed?'
diff --git a/test/integration/test-apt-ftparchive b/test/integration/test-apt-ftparchive
new file mode 100755
index 0000000..378b059
--- /dev/null
+++ b/test/integration/test-apt-ftparchive
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+buildsimplenativepackage 'baz' 'all' '1'
+buildsimplenativepackage 'foo' 'all' '1'
+buildsimplenativepackage 'bar' 'all' '2'
+buildsimplenativepackage 'bar' 'all' '1'
+
+EXPECT_PKG='Package: bar
+Version: 1
+Package: bar
+Version: 2
+Package: baz
+Version: 1
+Package: foo
+Version: 1'
+EXPECT_SRC="$EXPECT_PKG"
+
+linkfiles() {
+ ln -s "../incoming/${2}.dsc" "${1}/${2}.dsc"
+ ln -s "../incoming/${2}.tar.xz" "${1}/${2}.tar.xz"
+ ln -s "../incoming/${2}_all.deb" "${1}/${2}_all.deb"
+}
+genoptions() {
+ echo 'baz_1'
+ echo 'foo_1'
+ echo 'bar_2'
+ echo 'bar_1'
+}
+gencombos() {
+ for a in $(genoptions); do
+ for b in $(genoptions); do
+ if [ "$a" = "$b" ]; then continue; fi
+ for c in $(genoptions); do
+ if [ "$a" = "$c" -o "$b" = "$c" ]; then continue; fi
+ for d in $(genoptions); do
+ if [ "$a" = "$d" -o "$b" = "$d" -o "$c" = "$d" ]; then continue; fi
+ echo "${a};${b};${c};${d}"
+ done
+ done
+ done
+ done
+}
+for combo in $(gencombos); do
+ msgmsg 'Running apt-ftparchive in configuration' "$combo"
+ incomedir="incoming${combo}"
+ mkdir "$incomedir"
+ for i in $(echo "$combo" | tr ';' '\n'); do
+ linkfiles "$incomedir" "$i"
+ done
+
+ testsuccess aptftparchive packages "$incomedir"
+ cp rootdir/tmp/testsuccess.output aptarchive/Packages
+ testsuccessequal "$EXPECT_PKG" grep -e '^Package: ' -e '^Version: ' aptarchive/Packages
+
+ testsuccess aptftparchive -qq sources "$incomedir"
+ cp rootdir/tmp/testsuccess.output aptarchive/Sources
+ testsuccessequal "$EXPECT_SRC" grep -e '^Package: ' -e '^Version: ' aptarchive/Sources
+done
diff --git a/test/integration/test-apt-ftparchive-by-hash b/test/integration/test-apt-ftparchive-by-hash
new file mode 100755
index 0000000..ccfc627
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-by-hash
@@ -0,0 +1,70 @@
+#!/bin/sh
+set -e
+
+verify_by_hash() {
+ for hash_gen in SHA256:sha256sum SHA512:sha512sum; do
+ hash=$(echo ${hash_gen} | cut -f1 -d:)
+ gen=$(echo ${hash_gen} | cut -f2 -d:)
+ testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
+ testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/$hash/$($gen aptarchive/dists/unstable/main/binary-i386/Packages.gz | cut -f1 -d' ')
+ done
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz' '.'
+confighashes 'SHA256' 'SHA512'
+
+# enable by-hash in apt-ftparchive
+echo 'APT::FTPArchive::DoByHash "1";' >> aptconfig.conf
+
+# build one package
+buildsimplenativepackage 'foo' 'i386' '1' 'unstable'
+buildaptarchivefromincoming
+
+# verify initial run
+verify_by_hash
+previous_hash=$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages | cut -f1 -d' ')
+
+# insert new package
+buildsimplenativepackage 'bar' 'i386' '1' 'unstable'
+# and build again
+buildaptarchivefromincoming
+
+# ensure the new package packag is there
+testsuccess zgrep "Package: bar" aptarchive/dists/unstable/main/binary-i386/Packages.gz
+
+# ensure we have the by-hash stuff
+verify_by_hash
+
+# ensure the old hash is still there
+testsuccess stat aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/$previous_hash
+
+# ensure we have it in the Release file
+testsuccess grep "Acquire-By-Hash: yes" aptarchive/dists/unstable/*Release
+
+# now ensure gc work
+for i in $(seq 3); do
+ buildsimplenativepackage 'bar' 'i386' "$i" 'unstable'
+ buildaptarchivefromincoming
+done
+
+hash_count=$(ls aptarchive/dists/unstable/main/binary-i386/by-hash/SHA256/|wc -l)
+# we have 2 files (uncompressed, gz) per run, 5 runs in total
+# by default apt-ftparchive keeps three generations (current plus 2 older)
+msgtest "Check that gc for by-hash works… "
+if [ "$hash_count" = "6" ]; then
+ msgpass
+else
+ echo "Got $hash_count expected 6"
+ msgfail
+fi
+
+# ensure the current generation is still there
+verify_by_hash
+
diff --git a/test/integration/test-apt-ftparchive-cachedb b/test/integration/test-apt-ftparchive-cachedb
new file mode 100755
index 0000000..73d762c
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-cachedb
@@ -0,0 +1,103 @@
+#!/bin/sh
+set -e
+
+ensure_correct_packages_file() {
+ testequal "Package: foo
+Architecture: i386
+Version: 1
+Priority: optional
+Section: others
+Maintainer: Joe Sixpack <joe@example.org>
+$(dpkg-deb -I ./aptarchive/pool/main/foo_1_i386.deb | grep 'Installed-Size:' | sed 's#^ ##')
+Filename: pool/main/foo_1_i386.deb" head -n8 ./aptarchive/dists/test/main/binary-i386/Packages
+}
+
+ensure_correct_contents_file() {
+ testfileequal ./aptarchive/dists/test/Contents-i386 "usr/bin/foo-i386 others/foo
+usr/share/doc/foo/FEATURES others/foo
+usr/share/doc/foo/changelog others/foo
+usr/share/doc/foo/copyright others/foo"
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+mkdir -p aptarchive/dists/test/main/i18n/
+mkdir -p aptarchive/dists/test/main/source/
+mkdir -p aptarchive/dists/test/main/binary-i386
+mkdir -p aptarchive/pool/main
+
+mkdir aptarchive-overrides
+mkdir aptarchive-cache
+cat > ftparchive.conf <<"EOF"
+Dir {
+ ArchiveDir "./aptarchive";
+ OverrideDir "./aptarchive-overrides";
+ CacheDir "./aptarchive-cache";
+};
+
+Default {
+ Packages::Compress ". gzip bzip2";
+ Contents::Compress ". gzip bzip2";
+ LongDescription "false";
+};
+
+TreeDefault {
+ BinCacheDB "packages-$(SECTION)-$(ARCH).db";
+
+ Directory "pool/$(SECTION)";
+ SrcDirectory "pool/$(SECTION)";
+
+ Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
+ Contents "$(DIST)/Contents-$(ARCH)";
+};
+
+Tree "dists/test" {
+ Sections "main";
+ Architectures "i386";
+
+};
+EOF
+
+# build one package
+buildsimplenativepackage 'foo' 'i386' '1' 'test'
+mv incoming/* aptarchive/pool/main/
+
+# generate (empty cachedb)
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 2
+ dists/test/Contents-i386: New 402 B Misses in Cache: 0' grep Misses stats-out.txt
+
+# generate again
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 0
+ dists/test/Contents-i386: Misses in Cache: 0' grep Misses stats-out.txt
+
+# and again (with removing the Packages file)
+rm -f ./aptarchive/dists/test/main/binary-i386/*
+rm -f ./aptarchive/dists/test/Contents-i386
+testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+ensure_correct_packages_file
+ensure_correct_contents_file
+testsuccessequal ' Misses in Cache: 0
+ dists/test/Contents-i386: New 402 B Misses in Cache: 0' grep Misses stats-out.txt
+
+# and clean
+rm -rf aptarchive/pool/main/*
+testsuccessequal "packages-main-i386.db" aptftparchive clean ftparchive.conf
+testsuccess aptftparchive clean ftparchive.conf -o Debug::APT::FTPArchive::Clean=1
+cp rootdir/tmp/testsuccess.output clean-out.txt
+testsuccessequal "0 Number of unique keys in the tree" grep unique clean-out.txt
+testsuccessequal "packages-main-i386.db" grep packages-main-i386.db clean-out.txt
diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466
new file mode 100755
index 0000000..b0bcae8
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466
@@ -0,0 +1,59 @@
+#!/bin/sh
+set -e
+
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+db_dump=db_dump
+if command -v db_dump-5 >/dev/null 2>&1; then
+ db_dump=db_dump-5
+fi
+
+# gather the db and the deb, ensure mtime is not modified as its saved in the DB
+cp -p "$TESTDIR/deb-lp1274466-cachedb.deb" foo_1_i386.deb
+cp -p "$TESTDIR/cachedb-lp1274466-old-format.db" old-format.db
+
+# verify that the format is different
+testsuccess aptftparchive --db new-format.db packages .
+$db_dump new-format.db > new-format.dump
+$db_dump old-format.db > old-format.dump
+testfailure diff -u old-format.dump new-format.dump
+
+# ensure the new format as the sha512
+testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c new-format.dump
+# but the old format does not
+testfailure grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump
+
+# regression test for corruption with previous generation of cachedb
+testsuccessequal "Package: foo
+Architecture: i386
+Version: 1
+Priority: optional
+Section: others
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 29
+Filename: ./foo_1_i386.deb
+Size: 1270
+MD5sum: 85d0e908c1a897700e2c5dea72d7e3c0
+SHA1: 858b09169032b7925a0e463f46b6634243fc40ce
+SHA256: 3750a2c9c6b5beee7f307564be3d51d3ec7cbb78fa4f0b47f84a7c41477bff59
+SHA512: 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c
+Description: an autogenerated dummy foo=1/test
+ If you find such a package installed on your system,
+ something went horribly wrong! They are autogenerated
+ und used only by testcases and surf no other propose…
+" aptftparchive --db old-format.db packages .
+
+# ensure that the db is updated and contains the new sha512
+$db_dump old-format.db > old-format.dump
+
+testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump
+
+
diff --git a/test/integration/test-apt-ftparchive-notautomatic b/test/integration/test-apt-ftparchive-notautomatic
new file mode 100755
index 0000000..b2f65cc
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-notautomatic
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+getnotautomaticfromsuite() {
+ case "$1" in
+ experimental|backports) echo 'yes';;
+ esac
+}
+getbutautomaticupgradesfromsuite() {
+ case "$1" in
+ backports) echo 'yes';;
+ esac
+}
+
+insertpackage 'unstable' 'foo' 'i386' '1'
+insertpackage 'backports' 'foo' 'i386' '3~bpo1'
+insertpackage 'experimental' 'foo' 'i386' '3'
+setupaptarchive
+
+# check no unstable NotAutomatic field
+testfailure grep "NotAutomatic:" aptarchive/dists/unstable/*Release
+# check backports NotAutomatic field
+testsuccess grep "NotAutomatic: yes" aptarchive/dists/backports/*Release
+# check experimental NotAutomatic field
+testsuccess grep "NotAutomatic: yes" aptarchive/dists/experimental/*Release
+
+# check no unstable ButAutomaticUpgrades field
+testfailure grep "ButAutomaticUpgrades:" aptarchive/dists/unstable/*Release
+# check backports ButAutomaticUpgrades field
+testsuccess grep "ButAutomaticUpgrades: yes" aptarchive/dists/backports/*Release
+# check no experimental ButAutomaticUpgrades field
+testfailure grep "ButAutomaticUpgrades:" aptarchive/dists/experimental/*Release
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [i386])
+Conf foo (1 unstable [i386])' apt install foo -s
+
+insertinstalledpackage 'foo' 'i386' '2'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be upgraded:
+ foo
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst foo [2] (3~bpo1 backports [i386])
+Conf foo (3~bpo1 backports [i386])' apt install foo -s
diff --git a/test/integration/test-apt-ftparchive-src-cachedb b/test/integration/test-apt-ftparchive-src-cachedb
new file mode 100755
index 0000000..8bab1fd
--- /dev/null
+++ b/test/integration/test-apt-ftparchive-src-cachedb
@@ -0,0 +1,191 @@
+#!/bin/sh
+set -e
+
+assert_correct_sources_file() {
+ testsuccessequal "Package: bar
+Format: 3.0 (native)
+Binary: bar
+Architecture: all
+Version: 1.0
+Directory: pool/main
+Package-List:
+ bar deb admin extra
+Files:
+ 7b57dd065e51de5905288a5104d4bef5 406 bar_1.0.dsc
+ d41d8cd98f00b204e9800998ecf8427e 0 bar_1.0.tar.gz
+Checksums-Sha1:
+ 17a40b76715f393ab7fd6485c9392a02f1adf903 406 bar_1.0.dsc
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 bar_1.0.tar.gz
+Checksums-Sha256:
+ d9d7507f66a89258b6920aca47747d7a30e0e64b09ecabbf02b2efbdabf840a9 406 bar_1.0.dsc
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 bar_1.0.tar.gz
+Checksums-Sha512:
+ ee0a9bfb6614159b45203fc29487d4f37387993ca0e6d6f27b80010498f3731d75753188ece307508ae9af0259bd11a6af15a1a38f0b87dbd5ea1273b7a7d53e 406 bar_1.0.dsc
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 bar_1.0.tar.gz
+
+Package: foo
+Format: 3.0 (native)
+Binary: foo
+Architecture: all
+Version: 1.0
+Directory: pool/main
+Package-List:
+ foo deb admin extra
+Files:
+ d144826e6f02831c1933e910c92cd7e0 171 foo_1.0.dsc
+ d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
+Checksums-Sha1:
+ 979306aa3ccff3d61bba062bb6977e2493c6f907 171 foo_1.0.dsc
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 foo_1.0.tar.gz
+Checksums-Sha256:
+ 8c780af8b5a6d5b3c2e2f9518940beebea52ac6d6ad7b52c082dc925cfe5b532 171 foo_1.0.dsc
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 foo_1.0.tar.gz
+Checksums-Sha512:
+ 3da0240fd764657c2f3661b4d750578a9a99b0580591b133756379d48117ebda87a5ed2467f513200d6e7eaf51422cbe91c15720eef7fb4bba2cc8ff81ebc547 171 foo_1.0.dsc
+ cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 0 foo_1.0.tar.gz
+" aptsortpkgs ./aptarchive/dists/test/main/source/Sources -o APT::SortPkgs::Source=true
+}
+
+create_source_files() {
+ NAME="$1"
+ REQUEST_CLEARSIGN="$2"
+
+ TARFILE="aptarchive/pool/main/${NAME}_1.0.tar.gz"
+ DSC_FILE="aptarchive/pool/main/${NAME}_1.0.dsc"
+ touch $TARFILE
+ if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
+ printf -- "-----BEGIN PGP SIGNED MESSAGE-----\n\n" > $DSC_FILE
+ fi
+ cat >> $DSC_FILE << EOF
+Format: 3.0 (native)
+Source: $NAME
+Binary: $NAME
+Architecture: all
+Version: 1.0
+Package-List:
+ $NAME deb admin extra
+Files:
+ $(md5sum $TARFILE|cut -f1 -d' ') $(stat --print="%s" $TARFILE) ${NAME}_1.0.tar.gz
+EOF
+ if [ "$REQUEST_CLEARSIGN" = "CLEARSIGN" ]; then
+ cat >> $DSC_FILE <<EOF
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+iEYEARECAAYFAk3k/VoACgkQliSD4VZixzQxlgCgpav7j68z48qNTDFuT9fLqwT5
+DFwAoIXatJFENEC371bMKTkUKlwZxQEk
+=iI9V
+-----END PGP SIGNATURE-----
+EOF
+ fi
+}
+
+create_clearsigned_source_files() {
+ NAME="$1"
+ create_source_files "$NAME" "CLEARSIGN"
+}
+
+#
+# main()
+#
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
+
+mkdir -p aptarchive/pool/main
+create_source_files foo
+create_clearsigned_source_files bar
+
+mkdir -p aptarchive/dists/test/main/i18n/
+mkdir -p aptarchive/dists/test/main/source/
+
+mkdir aptarchive-overrides
+mkdir aptarchive-cache
+
+msgtest 'generate with --db option'
+cd aptarchive
+aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
+testsuccess grep Misses stats-out.txt
+testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 2'
+cd ..
+assert_correct_sources_file
+
+msgtest 'generate with --db option (again to ensure its in the cache)'
+cd aptarchive
+aptftparchive --db ./test.db sources pool/main/ -o APT::FTPArchive::ShowCacheMisses=1 > dists/test/main/source/Sources 2>stats-out.txt && msgpass || msgfail
+testsuccess grep Misses stats-out.txt
+testfileequal '../rootdir/tmp/testsuccess.output' ' Misses in Cache: 0'
+cd ..
+assert_correct_sources_file
+
+# get ready for the "apt-ftparchive generate" command
+cat > apt-ftparchive.conf <<"EOF"
+Dir {
+ ArchiveDir "./aptarchive";
+ OverrideDir "./aptarchive-overrides";
+ CacheDir "./aptarchive-cache";
+};
+
+Default {
+ Packages::Compress ". gzip bzip2";
+ Contents::Compress ". gzip bzip2";
+ LongDescription "false";
+};
+
+TreeDefault {
+ BinCacheDB "packages-$(SECTION)-$(ARCH).db";
+ SrcCacheDB "sources-$(SECTION).db";
+
+ Directory "pool/$(SECTION)";
+ SrcDirectory "pool/$(SECTION)";
+
+ Sources "$(DIST)/$(SECTION)/source/Sources";
+};
+
+Tree "dists/test" {
+ Sections "main";
+ Architectures "source";
+
+};
+EOF
+
+msgtest 'generate (empty cachedb)'
+testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+testsuccess grep Misses stats-out.txt
+testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 2'
+assert_correct_sources_file
+
+msgtest 'generate again out of the cache'
+rm -f ./aptarchive/dists/test/main/source/Sources
+testsuccess aptftparchive generate apt-ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1
+cp rootdir/tmp/testsuccess.output stats-out.txt
+testsuccess grep Misses stats-out.txt
+testfileequal rootdir/tmp/testsuccess.output ' Misses in Cache: 0'
+assert_correct_sources_file
+
+# generate invalid files
+mkdir aptarchive/pool/invalid
+printf "meep" > aptarchive/pool/invalid/invalid_1.0.dsc
+testequal "
+E: Could not find a record in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
+rm -f aptarchive/pool/invalid/invalid_1.0.dsc
+
+printf "meep: yes" > aptarchive/pool/invalid/invalid_1.0.dsc
+testequal "
+E: Could not find a Source entry in the DSC 'aptarchive/pool/invalid/invalid_1.0.dsc'" aptftparchive sources aptarchive/pool/invalid
+rm -f aptarchive/pool/invalid/invalid_1.0.dsc
+
+# ensure clean works
+rm -f aptarchive/pool/main/*
+testsuccess aptftparchive clean apt-ftparchive.conf -o Debug::APT::FTPArchive::Clean=1
+cp rootdir/tmp/testsuccess.output clean-out.txt
+testsuccess grep unique clean-out.txt
+testfileequal 'rootdir/tmp/testsuccess.output' "0 Number of unique keys in the tree"
+testsuccess grep sources-main.db clean-out.txt
+testfileequal 'rootdir/tmp/testsuccess.output' "sources-main.db"
diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove
new file mode 100755
index 0000000..66257f4
--- /dev/null
+++ b/test/integration/test-apt-get-autoremove
@@ -0,0 +1,260 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'unrelated' 'all' '1' 'unstable'
+buildsimplenativepackage 'po-debconf' 'all' '1.0.16' 'unstable'
+buildsimplenativepackage 'debhelper' 'all' '8.0.0' 'unstable' 'Depends: po-debconf'
+buildsimplenativepackage 'base-files' 'all' '10' 'unstable' 'Essential: yes'
+buildsimplenativepackage 'fdisk' 'all' '2.30.2' 'unstable' 'XB-Important: yes'
+buildsimplenativepackage 'linux-image' 'all' '4.9.80' 'unstable'
+buildsimplenativepackage 'hold-me' 'all' '1.0' 'unstable'
+buildsimplenativepackage 'remove-me' 'all' '1.0' 'unstable'
+buildsimplenativepackage 'system-base' 'all' '1.0' 'unstable' 'Depends: unrelated, base-files, fdisk, linux-image, hold-me, remove-me'
+setupaptarchive
+
+testsuccess aptget install unrelated debhelper -y
+testdpkginstalled 'unrelated' 'debhelper' 'po-debconf'
+
+testmarkedauto 'po-debconf'
+testsuccess aptget remove debhelper -y
+testdpkgnotinstalled 'debhelper'
+testdpkginstalled 'po-debconf' 'unrelated'
+echo 'unrelated purge' | dpkg --set-selections
+testdpkgstatus 'pi' '1' 'unrelated'
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+echo 'APT::NeverAutoRemove { "^debc.*nf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget autoremove -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s --autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget upgrade -s --autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s '?garbage-'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget remove -s '?garbage'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget upgrade -s '?garbage-'
+echo 'APT::Get::AutomaticRemove "true";' > rootdir/etc/apt/apt.conf.d/autoremoval
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+rm -f rootdir/etc/apt/apt.conf.d/autoremoval
+
+testdpkginstalled 'po-debconf'
+
+echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkginstalled 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+
+echo 'APT::NeverAutoRemove { "^po-.*$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkginstalled "po-debconf"
+testdpkgstatus 'pi' '1' 'unrelated'
+
+rm rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget autoremove -y
+testdpkgnotinstalled 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+testmarkedauto
+
+sed rootdir/var/log/apt/history.log -e '/^Commandline: / d' \
+ -e '/^Start-Date: / d' -e '/^End-Date: / d' \
+ -e '/^Requested-By: / d' \
+ -e 's#), #)\nInstall: #g' | sort -u > apt-history.log
+testfileequal 'apt-history.log' '
+Install: debhelper:i386 (8.0.0)
+Install: po-debconf:i386 (1.0.16, automatic)
+Install: unrelated:i386 (1)
+Remove: debhelper:i386 (8.0.0)
+Remove: po-debconf:i386 (1.0.16)'
+
+testsuccess aptget install debhelper -y
+testdpkgstatus 'pi' '1' 'unrelated'
+testdpkginstalled 'debhelper' 'po-debconf'
+testsuccess aptmark auto debhelper
+
+testmarkedauto 'debhelper' 'po-debconf'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ debhelper po-debconf
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv debhelper [8.0.0]
+Remv po-debconf [1.0.16]' aptget autoremove -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ debhelper po-debconf
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+2 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+
+testsuccess aptmark hold debhelper
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget autoremove -s
+
+testsuccess aptget autoremove debhelper -y --allow-change-held-packages
+testdpkgnotinstalled 'po-debconf' 'debhelper'
+testdpkgstatus 'pi' '1' 'unrelated'
+testmarkedauto
+testsuccess aptget install debhelper --solver apt -y -o Debug::pkgDepCache::Marker=1
+testmarkedauto 'po-debconf'
+testdpkgstatus 'pi' '1' 'unrelated'
+
+testsuccess aptget install system-base debhelper -y
+testdpkginstalled 'debhelper' 'po-debconf' 'system-base' 'base-files' 'fdisk' 'linux-image' 'hold-me' 'remove-me'
+testsuccess aptmark hold 'hold-me'
+echo 'APT::NeverAutoRemove { "^linux-image$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove
+testsuccess aptget remove system-base -y
+testsuccess aptget autoremove -y -o Debug::pkgAutoRemove=yes
+DEBUGLOG=${TMPWORKINGDIRECTORY}/rootdir/tmp/autoremove.debuglog
+cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: fdisk:i386 2.30.2 (Important)' "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: base-files:i386 10 (Essential)' "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: unrelated:i386 1 (Manual-Installed)' "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: hold-me:i386 1.0 (Hold)' "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: po-debconf:i386 1.0.16 (Dependency)' "$DEBUGLOG"
+testsuccess grep -Fx 'Marking: linux-image:i386 4.9.80 (Blacklisted [APT::NeverAutoRemove])' "$DEBUGLOG"
+testdpkginstalled 'debhelper' 'po-debconf' 'base-files' 'fdisk' 'linux-image'
+testdpkgstatus 'hi' '1' 'hold-me'
+testdpkgnotinstalled 'remove-me'
+testdpkgstatus 'pi' '1' 'unrelated'
+
+insertinstalledpackage 'bar' 'all' '1' 'Depends: foo-provider'
+insertinstalledpackage 'foo-multi1-1' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (1)'
+insertinstalledpackage 'foo-multi1-2' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (2)'
+insertinstalledpackage 'foo-multi1-3' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (3)'
+insertinstalledpackage 'foo-multi2-1' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (1)'
+insertinstalledpackage 'foo-multi2-2' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (2)'
+insertinstalledpackage 'foo-multi2-3' 'all' '1' 'Provides: foo-provider
+Source: foo-multi (3)'
+insertinstalledpackage 'foo-plus-1' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (1)'
+insertinstalledpackage 'foo-plus-2' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (2)'
+insertinstalledpackage 'foo-plus-3' 'all' '1' 'Provides: foo-provider
+Source: foo-plus (3)'
+insertinstalledpackage 'foo-single-1' 'all' '1' 'Provides: foo-provider'
+insertinstalledpackage 'foo-single-2' 'all' '1' 'Provides: foo-provider'
+
+testsuccess aptmark auto 'foo-*'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ foo-multi1-1 foo-multi1-2 foo-multi2-1 foo-multi2-2 foo-plus-1 foo-plus-2
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Remv foo-multi1-1 [1]
+Remv foo-multi1-2 [1]
+Remv foo-multi2-1 [1]
+Remv foo-multi2-2 [1]
+Remv foo-plus-1 [1]
+Remv foo-plus-2 [1]' apt autoremove -s
+
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ foo-multi1-1* foo-multi1-2* foo-multi2-1* foo-multi2-2* foo-plus-1*
+ foo-plus-2*
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Purg foo-multi1-1 [1]
+Purg foo-multi1-2 [1]
+Purg foo-multi2-1 [1]
+Purg foo-multi2-2 [1]
+Purg foo-plus-1 [1]
+Purg foo-plus-2 [1]' apt autopurge -s
+
+testdpkgstatus 'pi' '1' 'unrelated'
+testsuccess apt purge unrelated -y
diff --git a/test/integration/test-apt-get-autoremove-kernel-module-providers b/test/integration/test-apt-get-autoremove-kernel-module-providers
new file mode 100755
index 0000000..76c0030
--- /dev/null
+++ b/test/integration/test-apt-get-autoremove-kernel-module-providers
@@ -0,0 +1,103 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'old-kernel-modules-0.8' 'all' '1' 'Depends: linux-image-0.8
+Provides: old-module
+Source: kernel-module'
+insertinstalledpackage 'old-kernel-modules-0.9' 'all' '1' 'Depends: linux-image-0.9
+Provides: old-module
+Source: kernel-module'
+insertinstalledpackage 'kernel-modules-1.0' 'all' '1' 'Depends: linux-image-1.0
+Provides: module
+Source: kernel-module'
+insertinstalledpackage 'kernel-modules-1.1' 'all' '2' 'Depends: linux-image-1.1
+Provides: module
+Source: kernel-module'
+insertinstalledpackage 'kernel-modules-1.2' 'all' '2' 'Depends: linux-image-1.2
+Provides: module
+Source: kernel-module'
+insertinstalledpackage 'kernel-modules-2.0' 'all' '2' 'Depends: linux-image-2.0
+Provides: module
+Source: kernel-module'
+insertinstalledpackage 'kernel-modules-2.1' 'all' '2' 'Depends: linux-image-2.1
+Provides: module
+Source: kernel-module'
+insertinstalledpackage 'texteditor-gtk' 'all' '2' 'Provides: editor
+Source: texteditor'
+insertinstalledpackage 'texteditor-kde' 'all' '2' 'Provides: editor
+Source: texteditor'
+
+insertinstalledpackage 'linux-image-0.8' 'all' '0.8' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-0.9' 'all' '0.9' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-1.0' 'all' '1.0' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-1.1' 'all' '1.1' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-1.2' 'all' '1.2' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-2.0' 'all' '2.0' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'linux-image-2.1' 'all' '2.1' 'Provides: linux-image
+Source: linux-image'
+insertinstalledpackage 'has-needs' 'all' '1' 'Depends: editor, module, linux-image'
+insertinstalledpackage 'old-needs' 'all' '1' 'Depends: old-module'
+
+testsuccess aptmark auto 'linux-image-*' 'old-kernel-modules-*' 'kernel-modules-*' 'texteditor-*'
+testsuccessequal 'kernel-modules-1.0
+kernel-modules-1.1
+kernel-modules-1.2
+kernel-modules-2.0
+kernel-modules-2.1
+linux-image-0.8
+linux-image-0.9
+linux-image-1.0
+linux-image-1.1
+linux-image-1.2
+linux-image-2.0
+linux-image-2.1
+old-kernel-modules-0.8
+old-kernel-modules-0.9
+texteditor-gtk
+texteditor-kde' aptmark showauto
+
+testsuccess aptget check -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ kernel-modules-1.0 kernel-modules-1.1 kernel-modules-1.2 linux-image-1.0
+ linux-image-1.1 linux-image-1.2
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Remv kernel-modules-1.0 [1]
+Remv kernel-modules-1.1 [2]
+Remv kernel-modules-1.2 [2]
+Remv linux-image-1.0 [1.0]
+Remv linux-image-1.1 [1.1]
+Remv linux-image-1.2 [1.2]' apt autoremove -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ kernel-modules-1.0 kernel-modules-1.1 kernel-modules-1.2 linux-image-0.8
+ linux-image-0.9 linux-image-1.0 linux-image-1.1 linux-image-1.2
+ old-kernel-modules-0.8 old-kernel-modules-0.9 old-needs
+0 upgraded, 0 newly installed, 11 to remove and 0 not upgraded.
+Remv kernel-modules-1.0 [1]
+Remv kernel-modules-1.1 [2]
+Remv kernel-modules-1.2 [2]
+Remv old-needs [1]
+Remv old-kernel-modules-0.8 [1]
+Remv linux-image-0.8 [0.8]
+Remv old-kernel-modules-0.9 [1]
+Remv linux-image-0.9 [0.9]
+Remv linux-image-1.0 [1.0]
+Remv linux-image-1.1 [1.1]
+Remv linux-image-1.2 [1.2]' apt autoremove -s old-needs-
diff --git a/test/integration/test-apt-get-autoremove-real-virtual-provider b/test/integration/test-apt-get-autoremove-real-virtual-provider
new file mode 100755
index 0000000..4940ab5
--- /dev/null
+++ b/test/integration/test-apt-get-autoremove-real-virtual-provider
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'needs' 'all' '1'
+insertinstalledpackage 'needs-provider1' 'all' '1' 'Provides: needs (= 1)'
+insertinstalledpackage 'needs-provider2' 'all' '1' 'Provides: needs (= 2)'
+insertinstalledpackage 'needs-provider3' 'all' '1' 'Provides: needs (= 3)'
+insertinstalledpackage 'needs-provider4' 'all' '1' 'Provides: needs (= 4)'
+
+insertinstalledpackage 'foo' 'all' '1' 'Depends: needs (= 1), needs (= 2), needs (= 3)'
+
+testsuccess aptmark auto 'needs*'
+testsuccessequal 'needs
+needs-provider1
+needs-provider2
+needs-provider3
+needs-provider4' aptmark showauto
+
+testsuccess aptget check -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ needs-provider4
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv needs-provider4 [1]' aptget autoremove -s
diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep
new file mode 100755
index 0000000..403de8f
--- /dev/null
+++ b/test/integration/test-apt-get-build-dep
@@ -0,0 +1,149 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'build-essential' 'i386' '1'
+insertpackage 'stable' 'build-essential2' 'i386' '1'
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertpackage 'stable' 'build-depends-arch' 'i386' '1'
+insertpackage 'stable' 'build-depends-indep' 'i386' '1'
+insertinstalledpackage 'build-conflicts' 'i386' '1'
+insertinstalledpackage 'build-conflicts-arch' 'i386' '1'
+insertinstalledpackage 'build-conflicts-indep' 'i386' '1'
+
+setupaptarchive
+
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends (>= 1)
+Build-Depends-Indep: build-depends-indep (>= 1)
+Build-Depends-Arch: build-depends-arch (>= 1)
+Build-Conflicts: build-conflicts (>= 1)
+Build-Conflicts-Indep: build-conflicts-indep (>= 1)
+Build-Conflicts-Arch: build-conflicts-arch (>= 1)
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential
+0 upgraded, 4 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential2
+0 upgraded, 4 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential2 (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential="build-essential2"
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep
+0 upgraded, 3 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential=","
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-depends-indep build-essential
+ build-essential2
+0 upgraded, 5 newly installed, 3 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst build-essential2 (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf build-essential2 (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc -o APT::Build-Essential::="build-essential2"
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-arch
+The following NEW packages will be installed:
+ build-depends build-depends-arch build-essential
+0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-arch [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-arch (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-arch (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc --arch-only
+
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflicts build-conflicts-indep
+The following NEW packages will be installed:
+ build-depends build-depends-indep build-essential
+0 upgraded, 3 newly installed, 2 to remove and 0 not upgraded.
+Remv build-conflicts [1]
+Remv build-conflicts-indep [1]
+Inst build-depends (1 stable [i386])
+Inst build-depends-indep (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-depends-indep (1 stable [i386])
+Conf build-essential (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc --indep-only
diff --git a/test/integration/test-apt-get-build-dep-barbarian b/test/integration/test-apt-get-build-dep-barbarian
new file mode 100755
index 0000000..688f7a5
--- /dev/null
+++ b/test/integration/test-apt-get-build-dep-barbarian
@@ -0,0 +1,140 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel' 'mipsel'
+
+insertinstalledpackage 'build-essential' 'all' '1'
+insertpackage 'unstable' 'samey' 'amd64,i386,armel,mipsel' '1' 'Multi-Arch: same'
+insertinstalledpackage 'samey' 'unknown' '1' 'Multi-Arch: same'
+
+insertsource 'unstable' 'cool-foo' 'any' '1' 'Build-Depends: foo, samey'
+insertsource 'unstable' 'bad-amd64-foo' 'any' '1' 'Build-Depends: foo, samey
+Build-Conflicts: foo:amd64'
+insertsource 'unstable' 'bad-armel-foo' 'any' '1' 'Build-Depends: foo, samey
+Build-Conflicts: foo:armel'
+insertsource 'unstable' 'bad-amd64-armel-foo' 'any' '1' 'Build-Depends: foo, samey
+Build-Conflicts: foo:amd64, foo:armel'
+insertsource 'unstable' 'bad-amd64-i386-foo' 'any' '1' 'Build-Depends: foo, samey
+Build-Conflicts: foo:amd64, foo:i386'
+insertsource 'unstable' 'bad-amd64-i386-armel-foo' 'any' '1' 'Build-Depends: foo, samey
+Build-Conflicts: foo:amd64, foo:i386, foo:armel'
+insertpackage 'unstable' 'foo' 'amd64,i386,armel,mipsel' '1' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+installsfoosamey() {
+ local FOO="foo:$1"
+ local SAMEY="samey:$2"
+ if [ "$1" = 'amd64' ]; then FOO='foo'; fi
+ if [ "$2" = 'amd64' ]; then SAMEY='samey'; fi
+ echo "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ $FOO $SAMEY
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst $FOO (1 unstable [$1])
+Inst $SAMEY (1 unstable [$2])
+Conf $FOO (1 unstable [$1])
+Conf $SAMEY (1 unstable [$2])"
+}
+
+testdpkginstalled 'samey:unknown'
+
+testsuccessequal "$(installsfoosamey 'amd64' 'amd64')" apt build-dep cool-foo -s
+testsuccessequal "$(installsfoosamey 'amd64' 'amd64')" apt build-dep cool-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep cool-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep cool-foo -s -a armel
+
+testsuccessequal "$(installsfoosamey 'i386' 'amd64')" apt build-dep bad-amd64-foo -s
+testsuccessequal "$(installsfoosamey 'i386' 'amd64')" apt build-dep bad-amd64-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-foo -s -a armel
+
+testsuccessequal "$(installsfoosamey 'amd64' 'amd64')" apt build-dep bad-armel-foo -s
+testsuccessequal "$(installsfoosamey 'amd64' 'amd64')" apt build-dep bad-armel-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep bad-armel-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep bad-armel-foo -s -a armel
+
+testsuccessequal "$(installsfoosamey 'i386' 'amd64')" apt build-dep bad-amd64-armel-foo -s
+testsuccessequal "$(installsfoosamey 'i386' 'amd64')" apt build-dep bad-amd64-armel-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-armel-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-armel-foo -s -a armel
+
+testsuccessequal "$(installsfoosamey 'armel' 'amd64')" apt build-dep bad-amd64-i386-foo -s
+testsuccessequal "$(installsfoosamey 'armel' 'amd64')" apt build-dep bad-amd64-i386-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'armel' 'i386')" apt build-dep bad-amd64-i386-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'armel' 'armel')" apt build-dep bad-amd64-i386-foo -s -a armel
+
+testsuccessequal "$(installsfoosamey 'mipsel' 'amd64')" apt build-dep bad-amd64-i386-armel-foo -s
+testsuccessequal "$(installsfoosamey 'mipsel' 'amd64')" apt build-dep bad-amd64-i386-armel-foo -s -a amd64
+testsuccessequal "$(installsfoosamey 'mipsel' 'i386')" apt build-dep bad-amd64-i386-armel-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel
+
+
+msgmsg 'BarbarianArchitectures' 'config'
+echo 'APT::BarbarianArchitectures { "mipsel"; "armel"; };' > rootdir/etc/apt/apt.conf.d/99barbarianarchs
+testsuccess aptcache gencaches
+
+testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep cool-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep bad-armel-foo -s -a i386
+testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-armel-foo -s -a i386
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:bad-amd64-i386-foo:i386 : Depends: foo:i386
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:bad-amd64-i386-armel-foo:i386 : Depends: foo:i386
+E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386
+
+testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep cool-foo -s -a armel
+testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-foo -s -a armel
+testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep bad-armel-foo -s -a armel
+testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-armel-foo -s -a armel
+testsuccessequal "$(installsfoosamey 'armel' 'armel')" apt build-dep bad-amd64-i386-foo -s -a armel
+FAILURE='Reading package lists...
+Building dependency tree...
+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:
+ builddeps:bad-amd64-i386-armel-foo:armel : Depends: foo:armel
+E: Unable to correct problems, you have held broken packages.'
+testfailureequal "Reading package lists...
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel
+
+msgmsg 'BarbarianArchitectures' 'cmdline options'
+rm rootdir/etc/apt/apt.conf.d/99barbarianarchs
+testsuccess aptcache gencaches
+
+testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel
+testsuccess aptcache gencaches -o APT::BarbarianArchitectures::=armel
+testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=armel
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel
+testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel
+testfailureequal "Reading package lists...
+$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel
diff --git a/test/integration/test-apt-get-build-dep-file b/test/integration/test-apt-get-build-dep-file
new file mode 100755
index 0000000..88bf10b
--- /dev/null
+++ b/test/integration/test-apt-get-build-dep-file
@@ -0,0 +1,222 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'debhelper' 'i386' '7'
+insertpackage 'stable' 'build-essential' 'i386' '1'
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertsource 'stable' 'unrelated' 'any' '1'
+insertinstalledpackage 'build-conflict' 'i386' '1'
+
+setupaptarchive
+
+msgmsg 'Test with' 'unsigned dsc'
+cat > 2vcard_0.5-3.dsc <<EOF
+Format: 1.0
+Source: 2vcard
+Binary: 2vcard
+Architecture: all
+Version: 0.5-3
+Maintainer: Martin Albisetti <argentina@gmail.com>
+Uploaders: Marcela Tiznado <mlt@debian.org>
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5.0.37)
+Build-Conflicts: build-conflict (<< 2)
+Checksums-Sha1:
+ b7f1ce31ec856414a3f0f1090689f91aa7456d56 9398 2vcard_0.5.orig.tar.gz
+ 5f9acd07ebda6ab00fa6b4fe3198c13e94090862 2036 2vcard_0.5-3.diff.gz
+Checksums-Sha256:
+ efdc22859ac2f8f030d038dc4faa9020082ebae34212498c288968ffd45c9764 9398 2vcard_0.5.orig.tar.gz
+ 82673ff3456af571094066c89bcea87b25c23c87cf1d0050b731e5222563626b 2036 2vcard_0.5-3.diff.gz
+Files:
+ f73a69c170f772f3f6e75f2d11bbb792 9398 2vcard_0.5.orig.tar.gz
+ 1e806d32233af87437258d86b1561f57 2036 2vcard_0.5-3.diff.gz
+EOF
+
+test2vcardbuilddep() {
+ local name="$1"
+ testsuccessequal "Note, using file './$name' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ build-conflict
+The following NEW packages will be installed:
+ build-essential debhelper
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv build-conflict [1]
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep -s ./$name
+testfailure aptget build-dep --simulate $name
+cd downloaded
+testsuccess aptget build-dep --simulate ../$name
+testsuccess aptget build-dep --simulate "$(readlink -f ../$name)"
+cd ..
+}
+test2vcardbuilddep "2vcard_0.5-3.dsc"
+cp "2vcard_0.5-3.dsc" "2VCard_0.5-3.dsc"
+test2vcardbuilddep "2VCard_0.5-3.dsc"
+
+msgmsg 'Test with' 'signed dsc'
+cat > 2vcard_0.5-3.dsc <<EOF
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Format: 1.0
+Source: 2vcard
+Binary: 2vcard
+Architecture: all
+Version: 0.5-3
+Maintainer: Martin Albisetti <argentina@gmail.com>
+Uploaders: Marcela Tiznado <mlt@debian.org>
+Standards-Version: 3.8.0
+Build-Depends: debhelper (>= 5.0.37)
+Build-Conflicts: build-conflict (<< 2)
+Checksums-Sha1:
+ b7f1ce31ec856414a3f0f1090689f91aa7456d56 9398 2vcard_0.5.orig.tar.gz
+ 5f9acd07ebda6ab00fa6b4fe3198c13e94090862 2036 2vcard_0.5-3.diff.gz
+Checksums-Sha256:
+ efdc22859ac2f8f030d038dc4faa9020082ebae34212498c288968ffd45c9764 9398 2vcard_0.5.orig.tar.gz
+ 82673ff3456af571094066c89bcea87b25c23c87cf1d0050b731e5222563626b 2036 2vcard_0.5-3.diff.gz
+Files:
+ f73a69c170f772f3f6e75f2d11bbb792 9398 2vcard_0.5.orig.tar.gz
+ 1e806d32233af87437258d86b1561f57 2036 2vcard_0.5-3.diff.gz
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iEYEARECAAYFAkijKhsACgkQsrBfRdYmq7aA2gCfaOW9riTYVQMx5ajKQVAcctlC
+z2UAn1oXgTai6opwhVfkxrlmJ+iRxzuc
+=4eRd
+-----END PGP SIGNATURE-----
+EOF
+test2vcardbuilddep "2vcard_0.5-3.dsc"
+cp "2vcard_0.5-3.dsc" "2VCard_0.5-3.dsc"
+test2vcardbuilddep "2VCard_0.5-3.dsc"
+
+
+msgmsg 'Test with' 'unpacked source dir'
+mkdir -p foo-1.0/debian
+cat > foo-1.0/debian/control <<'EOF'
+Source: apturl
+Section: admin
+Priority: optional
+Maintainer: Michael Vogt <mvo@ubuntu.com>
+Build-Depends: ,debhelper (>= 7),
+Build-Conflicts: ,,,
+Build-Depends-Indep:
+X-Python3-Version: >= 3.2
+Standards-Version: 3.9.3
+
+Package: apturl-common
+Architecture: any
+Depends: ${python3:Depends},
+ ${shlibs:Depends},
+ ${misc:Depends},
+ python3-apt,
+ python3-update-manager
+Replaces: apturl (<< 0.3.6ubuntu2)
+Description: install packages using the apt protocol - common data
+ AptUrl is a simple graphical application that takes an URL (which follows the
+ apt-protocol) as a command line option, parses it and carries out the
+ operations that the URL describes (that is, it asks the user if he wants the
+ indicated packages to be installed and if the answer is positive does so for
+ him).
+ .
+ This package contains the common data shared between the frontends.
+
+EOF
+
+testsuccessequal "Note, using directory './foo-1.0' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-essential debhelper
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./foo-1.0
+testfailure aptget build-dep --simulate foo-1.0
+cd downloaded
+testsuccess aptget build-dep --simulate ../foo-1.0
+testsuccess aptget build-dep --simulate "$(readlink -f ../foo-1.0)"
+cd ..
+cd foo-1.0
+testsuccess aptget build-dep --simulate './'
+testsuccess aptget build-dep --simulate '.'
+cd debian
+testsuccess aptget build-dep --simulate './../'
+testsuccess aptget build-dep --simulate '../'
+testsuccess aptget build-dep --simulate '..'
+cd ../..
+
+testfailureequal 'E: Must specify at least one package to check builddeps for' aptget build-dep
+testfailureequal "Note, using directory './foo-1.0' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:./foo-1.0:armel : Depends: debhelper:armel (>= 7) but it is not installable
+W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup
+E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel
+testfailureequal 'Reading package lists...
+E: Unable to find a source package for foo' aptget build-dep --simulate foo
+
+msgmsg 'Test with a dsc' 'with comments'
+cat > comments.dsc <<EOF
+# I love comments
+# I love them so much, I give them their own paragraph
+
+#This is my first package
+Format: 3.0 (native)
+Source: comments
+Binary: comments
+Architecture: all
+Version: 1
+#Version: 2
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: debhelper (>= 5),
+# TODO: add more
+ build-depends (= 1),
+Standards-Version: 3.9.6
+# This is the end…
+
+# or this?
+EOF
+testsuccessequal "Note, using file './comments.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends build-essential debhelper
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./comments.dsc
+testsuccessequal "Note, using file './comments.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ build-depends build-essential debhelper
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst build-essential (1 stable [i386])
+Inst debhelper (7 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf build-essential (1 stable [i386])
+Conf debhelper (7 stable [i386])" aptget build-dep --simulate ./comments.dsc --solver apt
diff --git a/test/integration/test-apt-get-changelog b/test/integration/test-apt-get-changelog
new file mode 100755
index 0000000..c0eecba
--- /dev/null
+++ b/test/integration/test-apt-get-changelog
@@ -0,0 +1,146 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'awesome' 'native' '42' 'stable'
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+buildsimplenativepackage 'libbar' 'all' '1.0' 'stable'
+
+getlabelfromsuite() { echo 'Testcases'; }
+getoriginfromsuite() { echo 'Debian'; }
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess aptget update
+
+testsuccessequal "'https://metadata.ftp-master.debian.org/changelogs/main/f/foo/foo_1.0_changelog' foo.changelog
+'https://metadata.ftp-master.debian.org/changelogs/main/libb/libbar/libbar_1.0_changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+releasechanger() {
+ # modifying the Release files in lists… bad stuff. Good that this is only a test…
+ sed -i "s#^${1}: .*#${1}: ${2}#" $(find rootdir/var/lib/apt/lists -name '*Release')
+ rm -f rootdir/var/cache/apt/*.bin
+}
+releasechanger 'Origin' 'Ubuntu'
+testsuccessequal "'https://changelogs.ubuntu.com/changelogs/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'https://changelogs.ubuntu.com/changelogs/pool/main/libb/libbar/libbar_1.0/changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+releasechanger 'Label' 'Debian'
+testsuccessequal "'https://changelogs.ubuntu.com/changelogs/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'https://changelogs.ubuntu.com/changelogs/pool/main/libb/libbar/libbar_1.0/changelog' libbar.changelog" aptget changelog foo libbar --print-uris
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0.changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0.changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+sed -i '/^Origin: / a\
+Changelogs: http://example.org/@CHANGEPATH@-changelog' $(find rootdir/var/lib/apt/lists -name '*Release')
+rm -f rootdir/var/cache/apt/*.bin
+
+testsuccessequal "'http://example.org/main/f/foo/foo_1.0-changelog' foo.changelog
+'http://example.org/main/libb/libbar/libbar_1.0-changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0.changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0.changelog' libbar.changelog" aptget changelog foo libbar --print-uris -o Acquire::Changelogs::URI::Override::Label::Debian="http://localhost:${APTHTTPPORT}/@CHANGEPATH@.changelog"
+
+releasechanger 'Changelogs' 'no'
+testfailuremsg 'E: Failed to fetch changelog:/foo.changelog Changelog unavailable for foo=1.0' aptget changelog foo -d
+
+sed -i '/^Changelogs: / d' $(find rootdir/var/lib/apt/lists -name '*Release')
+releasechanger 'Label' 'Testcases'
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/@CHANGEPATH@/change.txt\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/main/f/foo/foo_1.0/change.txt' foo.changelog
+'http://localhost:${APTHTTPPORT}/main/libb/libbar/libbar_1.0/change.txt' libbar.changelog" aptget changelog foo libbar --print-uris
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/pool/@CHANGEPATH@/changelog\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" aptget changelog foo --print-uris
+
+
+testsuccess aptget changelog foo -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+
+testsuccess aptget changelog foo libbar -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)
+$(cat aptarchive/pool/main/libb/libbar/libbar_1.0/changelog)"
+
+testsuccess aptget changelog foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+rm -f foo.changelog
+
+testsuccess aptget changelog libbar foo -d
+testfilestats 'libbar.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'libbar.changelog' "$(cat aptarchive/pool/main/libb/libbar/libbar_1.0/changelog)"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+rm -f libbar.changelog foo.changelog
+
+# as such bogus, but can happen with multiple binaries from the same source
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog
+'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" aptget changelog foo foo --print-uris
+testsuccess aptget changelog foo foo -qq
+testfileequal 'rootdir/tmp/testsuccess.output' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)
+$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+# we have the file already, confused?
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+echo 'bogus' > foo.changelog
+touch -d 'now + 1 hour' foo.changelog
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testfileequal 'foo.changelog' "$(cat aptarchive/pool/main/f/foo/foo_1.0/changelog)"
+echo -n 'bogus' > foo.changelog
+touch -d "$(stat -c%y aptarchive/pool/main/f/foo/foo_1.0/changelog)" foo.changelog
+testsuccess aptget changelog foo foo -d
+testfilestats 'foo.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+testequal 'bogus1.0) stable; urgency=low' head -n 1 foo.changelog
+rm -f foo.changelog
+
+# no @CHANGEPATH@ in the URI
+testequal 'E: Failed to fetch changelog:/foo.changelog Changelog unavailable for foo=1.0' \
+ aptget changelog foo -qq -d -o Acquire::Changelogs::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/change.txt"
+testfailure test -e foo.changelog
+
+testequal "E: Failed to fetch http://localhost:${APTHTTPPORT}/does/not/exist/main/f/foo/foo_1.0/change.txt Changelog unavailable for foo=1.0 (404 Not Found)" \
+ aptget changelog foo -qq -d -o Acquire::Changelogs::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/does/not/exist/@CHANGEPATH@/change.txt"
+testfailure test -e foo.changelog
+
+testdpkgnotinstalled 'foo'
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" apt changelog foo --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/f/foo/foo_1.0/changelog' foo.changelog" apt changelog foo --print-uris -o Acquire::Changelogs::AlwaysOnline=true
+
+testsuccess apt install awesome -y
+# at this moment, we still have the Releasefile claim to be origin:ubuntu
+echo 'Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "false";' >> rootdir/etc/apt/apt.conf.d/nooriginchangelogs
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/a/awesome/awesome_42/changelog' awesome.changelog" apt changelog awesome --print-uris
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/awesome/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/a/awesome/awesome_42/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=true
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/a/awesome/awesome_42/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu=true
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/awesome/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true
+
+printf '\n# Older entries have been removed from this changelog.' >> rootdir/usr/share/doc/awesome/changelog
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/awesome/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+printf '\n# To read the complete changelog use `apt changelog awesome`.' >> rootdir/usr/share/doc/awesome/changelog
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/a/awesome/awesome_42/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+printf '\n# No guarantees the trigger is the last line' >> rootdir/usr/share/doc/awesome/changelog
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/a/awesome/awesome_42/changelog' awesome.changelog" apt changelog awesome --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+
+testsuccess apt changelog awesome -d
+testfilestats 'awesome.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+head -n 3 awesome.changelog > awesome.change
+testfileequal 'awesome.change' "$(apthelper cat-file 'rootdir/usr/share/doc/awesome/changelog' | head -n 3)"
+rm -f awesome.change awesome.changelog
+
+# no package specified
+testfailureequal 'E: No packages found' aptget changelog
+testfailureequal 'E: Unable to locate package clclclclc
+E: No packages found' aptget changelog clclclclc
diff --git a/test/integration/test-apt-get-clean b/test/integration/test-apt-get-clean
new file mode 100755
index 0000000..32dd3e8
--- /dev/null
+++ b/test/integration/test-apt-get-clean
@@ -0,0 +1,120 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'unstable' 'foo' 'all' '2'
+insertpackage 'experimental' 'foo' 'all' '1:1'
+insertinstalledpackage 'foo' 'all' '3'
+
+setupaptarchive --no-update
+mkdir -p rootdir/var/lib/apt/lists/partial
+testsuccess test -d rootdir/var/lib/apt/lists/partial
+
+# nothing to do always works (part 1)
+for cmd in aptget apt; do
+ for sub in distclean dist-clean; do
+ testsuccess $cmd $sub
+ testsuccess $cmd $sub -s
+ done
+done
+testsuccess test -d rootdir/var/lib/apt/lists/partial
+
+testsuccess apt update
+
+# nothing to do always works (part 2)
+for cmd in aptget apt; do
+ for sub in clean autoclean auto-clean; do
+ testsuccess $cmd $sub
+ testsuccess $cmd $sub -s
+ done
+done
+
+# generate some dirt and clean it up
+generatedirt() {
+ touch rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+ mkdir -p rootdir/var/cache/apt/archives/lost+found
+ touch rootdir/var/cache/apt/archives/foo_1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+ touch rootdir/var/cache/apt/archives/foo_2_all.deb
+ touch rootdir/var/cache/apt/archives/foo_3_all.deb
+ touch rootdir/var/cache/apt/archives/foo_4_all.deb
+}
+
+generatedirt
+testsuccess aptget autoclean
+testsuccess test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+testsuccess test -e rootdir/var/cache/apt/archives/foo_1_all.deb
+testsuccess test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+testsuccess test -e rootdir/var/cache/apt/archives/foo_2_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+
+generatedirt
+testsuccess aptget clean
+testfailure test -e rootdir/var/lib/apt/lists/partial/http.debian.net_debian_dists_sid_main_i18n_Translation-en
+testfailure test -e rootdir/var/cache/apt/archives/foo_1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_1%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2%3a1_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_2_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_3_all.deb
+testfailure test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+
+if [ "$(id -u)" != '0' ]; then
+ msgmsg 'No clean if lock can not be acquired'
+ touch rootdir/var/cache/apt/archives/foo_4_all.deb
+ touch rootdir/var/cache/apt/archives/lock
+ chmod 444 rootdir/var/cache/apt/archives/lock
+ testfailure apt clean
+ testsuccess test -e rootdir/var/cache/apt/archives/foo_4_all.deb
+ chmod 644 rootdir/var/cache/apt/archives/lock
+fi
+
+msgmsg 'distclean'
+listcurrentlistsdirectory > aptdistclean.before
+testsuccessequal '3' grep -c -e 'Release$' aptdistclean.before
+testsuccess grep -e 'Packages$' -e 'Sources$' -e 'Translation-*$' aptdistclean.before
+testsuccess apt distclean
+listcurrentlistsdirectory > aptdistclean.after
+testfailure cmp aptdistclean.before aptdistclean.after
+testsuccessequal '3' grep -c -e 'Release$' aptdistclean.after
+testfailureequal '0' grep -c -e 'Packages$' -e 'Sources$' -e 'Translation-*$' aptdistclean.after
+for dirt in Packages.gz Sources.xz Release2gpg Release_Packages; do
+ touch "rootdir/var/lib/apt/lists/_foo_bar_$dirt"
+done
+listcurrentlistsdirectory > aptdistclean.before
+testsuccess apt distclean
+listcurrentlistsdirectory > aptdistclean.cleaned
+testsuccess cmp aptdistclean.after aptdistclean.cleaned
+
+directorygone() {
+ rm -rf "$1"
+ testsuccess apt autoclean
+ testfailure test -d "$1"
+ testsuccess apt clean
+ # clean creates an empty partial directory via GetLock
+ if [ "$(basename "$1")" = 'partial' ]; then
+ testsuccess test -d "$1"
+ else
+ testfailure test -d "$1"
+ fi
+}
+msgmsg 'Partial directory missing'
+directorygone 'rootdir/var/cache/apt/archives/partial'
+directorygone 'rootdir/var/lib/apt/lists/partial'
+
+msgmsg 'Archives directory missing'
+directorygone 'rootdir/var/cache/apt/archives'
+directorygone 'rootdir/var/lib/apt/lists'
+
+msgmsg 'apt directory missing'
+directorygone 'rootdir/var/cache/apt'
+directorygone 'rootdir/var/lib/apt'
+
diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download
new file mode 100755
index 0000000..ea74ac6
--- /dev/null
+++ b/test/integration/test-apt-get-download
@@ -0,0 +1,113 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+confighashes 'SHA512'
+
+buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
+buildsimplenativepackage 'apt' 'all' '2.0' 'unstable'
+insertinstalledpackage 'vrms' 'all' '1.0'
+
+addtrap 'prefix' "umask $(umask);"
+umask 0027
+setupaptarchive --no-update
+
+# directories should be readable by everyone
+find aptarchive/dists -type d | while read dir; do
+ chmod o+rx "$dir"
+done
+# apt-ftparchive knows how to chmod files
+find aptarchive/dists -name '*Packages*' -type f | while read file; do
+ testaccessrights "$file" '644'
+ chmod 640 "$file"
+done
+# created by the framework without special care
+find aptarchive/dists -name '*Release*' -type f | while read file; do
+ testaccessrights "$file" '640'
+done
+if [ "$(id -u)" = '0' ]; then
+ # Release file can't be accessed by _apt
+ testsuccesswithnotice aptget update
+fi
+
+#everything (too) permissive
+find aptarchive/ -type f | while read file; do
+ chmod 777 "$file"
+done
+find incoming/ -type f | while read file; do
+ chmod 777 "$file"
+done
+testsuccess aptget update
+
+testdownload() {
+ local DEB="$1"
+ shift
+ msgtest "Test download of package file $DEB with" "$@"
+ testsuccess --nomsg aptget download "$@" -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ testsuccess test -f "$DEB"
+ testaccessrights "$DEB" '644'
+ rm -f "$DEB"
+}
+
+# normal case as "root"
+OLDPWD="$(pwd)"
+cd downloaded
+testdownload apt_2.0_all.deb apt
+cd "$OLDPWD"
+
+# simulate normal user with non-existent root-owned directories
+rm -rf rootdir/var/cache/apt/archives/
+mkdir rootdir/var/cache/apt/archives/
+addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/var/cache/apt/archives || true;"
+chmod -R -w rootdir/var/cache/apt/archives
+
+OLDPWD="$(pwd)"
+cd downloaded
+
+# normal case(es)
+testdownload apt_1.0_all.deb apt/stable
+testdownload apt_2.0_all.deb apt
+
+DEBFILE="$(readlink -f ../aptarchive)/pool/apt_2.0_all.deb"
+testequal "'file:${DEBFILE}' apt_2.0_all.deb $(stat -c%s "$DEBFILE") SHA512:$(sha512sum "$DEBFILE" | cut -d' ' -f 1)" aptget download apt --print-uris
+
+# deb:677887
+testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms --print-uris
+testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms
+
+# deb:736962
+testsuccess aptget download apt
+testsuccess test -s apt_2.0_all.deb
+testaccessrights 'apt_2.0_all.deb' '644'
+testsuccess aptget download apt
+testsuccess test -s apt_2.0_all.deb
+testaccessrights 'apt_2.0_all.deb' '644'
+
+rm -f apt_1.0_all.deb apt_2.0_all.deb
+
+# deb:738103
+testdownload apt_2.0_all.deb apt apt apt/unstable apt=2.0
+
+# FIXME: pick up already downloaded deb files for real
+# restore "root" rights
+#cd "$OLDPWD"
+#chmod -f -R +w "$PWD/rootdir/var/cache/apt/archives"
+#rm -rf rootdir/var/cache/apt/archives/
+
+# file: debs aren't copied to archives, so change to http which obviously are
+#changetowebserver
+#testsuccess aptget update
+
+# test with already stored deb
+#testsuccess aptget install -d apt
+#testsuccess test -s rootdir/var/cache/apt/archives/apt_2.0_all.deb
+#testaccessrights 'rootdir/var/cache/apt/archives/apt_2.0_all.deb' '644'
+#mv aptarchive/pool/apt_2.0_all.deb aptarchive/pool/apt_2.0_all.deb.gone
+#cd downloaded
+#testdownload apt_2.0_all.deb apt
+#cd "$OLDPWD"
+#mv aptarchive/pool/apt_2.0_all.deb.gone aptarchive/pool/apt_2.0_all.deb
diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb
new file mode 100755
index 0000000..bcf8bae
--- /dev/null
+++ b/test/integration/test-apt-get-install-deb
@@ -0,0 +1,258 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+# regression test for #754904
+cat > foo.rpm <<EOF
+I'm not a deb, I'm a teapot.
+EOF
+for exe in apt aptget; do
+ for cmd in install remove purge upgrade full-upgrade; do
+ testfailureequal 'E: Unsupported file /dev/null given on commandline' $exe $cmd -qq /dev/null
+ testfailureequal 'E: Unsupported file ./foo.rpm given on commandline' $exe $cmd -qq ./foo.rpm
+ done
+done
+
+# and ensure we fail for invalid debs
+mv foo.rpm foo.deb
+for exe in apt aptget; do
+ for cmd in install remove purge upgrade full-upgrade; do
+ testfailuremsg "E: Invalid archive signature
+E: Internal error, could not locate member control.tar{.zst,.lz4,.gz,.xz,.bz2,.lzma,}
+E: Could not read meta data from ${TMPWORKINGDIRECTORY}/foo.deb
+E: The package lists or status file could not be parsed or opened." $exe $cmd ./foo.deb
+ done
+done
+
+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
+
+testsuccess apt show foo --with-source ./incoming/foo_1.0_amd64.deb
+testequal 'Package: foo
+Version: 1.0' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+testsuccess apt show ./incoming/foo_1.0_amd64.deb
+testequal 'Package: foo
+Version: 1.0' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+testsuccess apt show foo:i386 ./incoming/foo_1.0_amd64.deb --with-source ./incoming/foo_1.0_i386.deb
+testequal 'Package: foo:i386
+Version: 1.0
+Package: foo
+Version: 1.0' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+
+testsuccess aptcache show foo --with-source ./incoming/foo_1.0_amd64.deb
+testequal 'Package: foo
+Version: 1.0
+Architecture: amd64' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+testsuccess aptcache show ./incoming/foo_1.0_amd64.deb
+testequal 'Package: foo
+Version: 1.0
+Architecture: amd64' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+testsuccess aptcache show foo:i386 ./incoming/foo_1.0_amd64.deb --with-source ./incoming/foo_1.0_i386.deb
+testequal 'Package: foo
+Version: 1.0
+Architecture: i386
+Package: foo
+Version: 1.0
+Architecture: amd64' grep -e '^Package:' -e '^Version:' -e '^Architecture:' rootdir/tmp/testsuccess.output
+
+testsuccessequal 'Sorting...
+Full Text Search...
+foo/local-deb 1.0 amd64
+ an autogenerated dummy foo=1.0/unstable
+' apt search foo --with-source ./incoming/foo_1.0_amd64.deb
+testsuccessequal 'foo - an autogenerated dummy foo=1.0/unstable' aptcache search foo --with-source ./incoming/foo_1.0_amd64.deb
+
+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' '' '
+'
+createpkg 'double-trailing-newline' '' '
+
+'
+createpkg 'last-line-parse' '' 'Pre-Depends: pkg-as-it-should-be
+'
+
+echo 'Package: /pkg-/
+Pin: release a=experimental
+Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit
+
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb
+testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb
+testsuccess aptget install ./incoming/pkg-last-line-parse_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
+testsuccess aptget install ./incoming/pkg-double-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%3a0+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
+ln -s pkg-as-it-should-be_0_all.deb incoming/pkg-as-it-should-be_0%3a0+0_all.deb
+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 -o Debug::pkgAcquire::Worker=1
+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%3a0+0_all.ddeb
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0%3a0+0_all.ddeb --reinstall -o Debug::pkgDpkgPm=1
+cp rootdir/tmp/testsuccess.output apt.output
+testsuccess grep "^${TMPWORKINGDIRECTORY}/.*/dpkg.* --recursive .*/apt-dpkg-install-" apt.output
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0%3a0+0_all.ddeb --reinstall -o Debug::pkgDpkgPm=1 -o DPkg::Chroot-Directory="${TMPWORKINGDIRECTORY}/rootdir/"
+cp rootdir/tmp/testsuccess.output apt.output
+testsuccess grep 'dpkg.* --recursive .*/apt-dpkg-install-' apt.output
+testfailure grep "^${TMPWORKINGDIRECTORY}/.*/dpkg.* --recursive .*/apt-dpkg-install-" apt.output
+testfailure grep "dpkg.* --recursive ${TMPWORKINGDIRECTORY}" apt.output
+testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0%3a0+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%3a0+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'
diff --git a/test/integration/test-apt-get-install-update b/test/integration/test-apt-get-install-update
new file mode 100755
index 0000000..33be6e3
--- /dev/null
+++ b/test/integration/test-apt-get-install-update
@@ -0,0 +1,111 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'awesome' 'native' '42' 'stable'
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+buildsimplenativepackage 'libbar' 'all' '1.0' 'stable'
+
+setupaptarchive --no-update
+changetowebserver
+testfailureequal "Reading package lists...
+Building dependency tree...
+E: Unable to locate package awesome" aptget install awesome -s
+
+msgmsg "apt-get {install,remove} {-U, --update}"
+for command in install remove; do
+ for option in -U --update; do
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c %s aptarchive/dists/stable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} stable/main Sources [$(stat -c %s aptarchive/dists/stable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} stable/main amd64 Packages [$(stat -c %s aptarchive/dists/stable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} stable/main all Packages [$(stat -c %s aptarchive/dists/stable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} stable/main Translation-en [$(stat -c %s aptarchive/dists/stable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ awesome
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst awesome (42 stable [amd64])
+Conf awesome (42 stable [amd64])" \
+ aptget $command $option awesome+ -s
+ find rootdir/var/lib/apt/lists/ -type f -delete
+ done
+done
+
+msgmsg "apt {install,remove} {-U, --update}"
+
+for command in install remove; do
+ for option in -U --update; do
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c %s aptarchive/dists/stable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} stable/main Sources [$(stat -c %s aptarchive/dists/stable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} stable/main amd64 Packages [$(stat -c %s aptarchive/dists/stable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} stable/main all Packages [$(stat -c %s aptarchive/dists/stable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} stable/main Translation-en [$(stat -c %s aptarchive/dists/stable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Building dependency tree...
+All packages are up to date.
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ awesome
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst awesome (42 stable [amd64])
+Conf awesome (42 stable [amd64])" \
+ apt $command $option awesome+ -s
+ find rootdir/var/lib/apt/lists/ -type f -delete
+ done
+done
+
+msgmsg "apt-get *upgrade {-U, --update}"
+
+for command in upgrade dist-upgrade full-upgrade; do
+ for option in -U --update; do
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c %s aptarchive/dists/stable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} stable/main Sources [$(stat -c %s aptarchive/dists/stable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} stable/main amd64 Packages [$(stat -c %s aptarchive/dists/stable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} stable/main all Packages [$(stat -c %s aptarchive/dists/stable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} stable/main Translation-en [$(stat -c %s aptarchive/dists/stable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ awesome
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst awesome (42 stable [amd64])
+Conf awesome (42 stable [amd64])" \
+ aptget $command $option awesome -s
+ find rootdir/var/lib/apt/lists/ -type f -delete
+ done
+done
+
+msgmsg "apt *upgrade {-U, --update}"
+
+for command in upgrade dist-upgrade full-upgrade; do
+ for option in -U --update; do
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c %s aptarchive/dists/stable/InRelease) B]
+Get:2 http://localhost:${APTHTTPPORT} stable/main Sources [$(stat -c %s aptarchive/dists/stable/main/source/Sources.gz) B]
+Get:3 http://localhost:${APTHTTPPORT} stable/main amd64 Packages [$(stat -c %s aptarchive/dists/stable/main/binary-amd64/Packages.gz) B]
+Get:4 http://localhost:${APTHTTPPORT} stable/main all Packages [$(stat -c %s aptarchive/dists/stable/main/binary-all/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT} stable/main Translation-en [$(stat -c %s aptarchive/dists/stable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Building dependency tree...
+All packages are up to date.
+Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ awesome
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst awesome (42 stable [amd64])
+Conf awesome (42 stable [amd64])" \
+ apt $command $option awesome -s
+ find rootdir/var/lib/apt/lists/ -type f -delete
+ done
+done
diff --git a/test/integration/test-apt-get-install-virtual-pkgs b/test/integration/test-apt-get-install-virtual-pkgs
new file mode 100755
index 0000000..99e01ab
--- /dev/null
+++ b/test/integration/test-apt-get-install-virtual-pkgs
@@ -0,0 +1,138 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'foo' 'amd64' '1' 'Provides: foo-prv'
+
+insertpackage 'unstable' 'baz1' 'amd64' '1' 'Provides: foo-prv1'
+insertpackage 'unstable' 'foo1' 'amd64' '1' 'Provides: foo-prv1'
+
+insertpackage 'unstable' 'baz2' 'amd64' '1' 'Provides: foo-prv2'
+insertpackage 'unstable' 'foo2' 'amd64' '2' 'Provides: foo-prv2:amd64'
+
+insertpackage 'unstable' 'baz3' 'amd64' '1' 'Provides: foo-prv3'
+insertpackage 'unstable' 'foo3' 'i386' '2' 'Provides: foo-prv3:amd64'
+
+insertpackage 'unstable' 'baz4' 'amd64' '1' 'Provides: foo-prv4:amd64'
+insertpackage 'unstable' 'foo4' 'i386' '2' 'Provides: foo-prv4:amd64'
+
+insertpackage 'experimental' 'baz5' 'amd64' '1' 'Provides: foo-prv5:amd64'
+insertpackage 'experimental' 'foo5' 'i386' '2' 'Provides: foo-prv5:amd64'
+
+insertpackage 'stable' 'debhelper' 'amd64,i386' '1' 'Provides: debhelper-compat (= 12)'
+insertpackage 'unstable,testing' 'debhelper' 'amd64,i386' '2' 'Provides: debhelper-compat (= 13)'
+insertpackage 'experimental' 'debhelper' 'amd64,i386' '3' 'Provides: debhelper-compat (= 13)'
+insertpackage 'experimental' 'debhelper-ng' 'amd64,i386' '4' 'Provides: debhelper-compat (= 13)'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foo' instead of 'foo-prv'
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])" aptget install foo-prv -s
+
+testvirtuals() {
+ testfailureequal "Reading package lists...
+Building dependency tree...
+Package $1 is a virtual package provided by:
+ $3
+ $2
+You should explicitly select one to install.
+
+E: Package '$1' has no installation candidate" aptget install $1 -s
+}
+
+testvirtuals 'foo-prv1' 'baz1 1' 'foo1 1'
+testvirtuals 'foo-prv2' 'baz2 1' 'foo2 2'
+testvirtuals 'foo-prv3' 'baz3 1' 'foo3:i386 2'
+testvirtuals 'foo-prv4' 'baz4 1' 'foo4:i386 2'
+testvirtuals 'foo-prv5' 'baz5 1' 'foo5:i386 2'
+
+echo 'Package: *
+Pin: release a=experimental
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/experimental.pref
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package foo-prv5 is a virtual package provided by:
+ foo5:i386 2 [Not candidate version]
+ baz5 1 [Not candidate version]
+
+E: Package 'foo-prv5' has no installation candidate" aptget install foo-prv5 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst debhelper (2 testing, unstable [amd64])
+Conf debhelper (2 testing, unstable [amd64])' apt install debhelper -s
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'debhelper' instead of 'debhelper-compat'
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst debhelper (2 testing, unstable [amd64])
+Conf debhelper (2 testing, unstable [amd64])" apt install debhelper-compat -s
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'debhelper' instead of 'debhelper-compat'
+Selected version '1' (stable [amd64]) for 'debhelper'
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst debhelper (1 stable [amd64])
+Conf debhelper (1 stable [amd64])" apt install debhelper-compat=12 -s
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'debhelper' instead of 'debhelper-compat'
+Selected version '1' (stable [amd64]) for 'debhelper'
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst debhelper (1 stable [amd64])
+Conf debhelper (1 stable [amd64])" apt install debhelper-compat/stable -s
+# by version selection we have selected the experimental debhelper-ng here
+# but dehelper stays at the candidate as it already provides 13
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package debhelper-compat is a virtual package provided by:
+ debhelper 2 (= 13)
+ debhelper-ng 4 (= 13)
+You should explicitly select one to install.
+
+E: Version '13' for 'debhelper-compat' was not found" apt install debhelper-compat=13 -s
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'debhelper' instead of 'debhelper-compat'
+Selected version '2' (testing, unstable [amd64]) for 'debhelper'
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst debhelper (2 testing, unstable [amd64])
+Conf debhelper (2 testing, unstable [amd64])" apt install debhelper-compat/unstable -s
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package debhelper-compat is a virtual package provided by:
+ debhelper-ng 4 (= 13)
+ debhelper 3 (= 13)
+You should explicitly select one to install.
+
+E: Version '13' for 'debhelper-compat' was not found" apt install debhelper-compat=13 -st experimental
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package debhelper-compat is a virtual package provided by:
+ debhelper-ng 4 (= 13)
+ debhelper 3 (= 13)
+You should explicitly select one to install.
+
+E: Release 'experimental' for 'debhelper-compat' was not found" apt install debhelper-compat/experimental -s
diff --git a/test/integration/test-apt-get-remove-depends b/test/integration/test-apt-get-remove-depends
new file mode 100755
index 0000000..2d2cf0d
--- /dev/null
+++ b/test/integration/test-apt-get-remove-depends
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'alpha' 'all' '1' 'unstable' 'Depends: beta'
+buildsimplenativepackage 'beta' 'all' '1' 'unstable'
+setupaptarchive
+
+testsuccess aptget install alpha -y
+
+cat > rootdir/var/lib/dpkg/info/alpha.prerm << EOF
+#!/bin/sh
+exit 42
+EOF
+chmod 755 rootdir/var/lib/dpkg/info/alpha.prerm
+
+
+testdpkginstalled 'alpha' 'beta'
+
+
+testfailure aptget remove -y beta
+
+# Beta should not be removed because alpha failed to be removed and depends on it
+
+testdpkginstalled 'alpha' 'beta'
diff --git a/test/integration/test-apt-get-satisfy b/test/integration/test-apt-get-satisfy
new file mode 100755
index 0000000..267760f
--- /dev/null
+++ b/test/integration/test-apt-get-satisfy
@@ -0,0 +1,111 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'stable' 'depends' 'i386' '1'
+insertpackage 'stable' 'depends' 'amd64' '1'
+insertinstalledpackage 'conflicts' 'i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'conflicts' 'amd64' '1' 'Multi-Arch: same'
+setupaptarchive
+
+testrun() {
+ local TYPE="$1"
+ local HEADER="$2"
+ shift 2
+ msgmsg "$TYPE: Normal"
+ testsuccessequal "$HEADER
+The following packages will be REMOVED:
+ conflicts
+The following NEW packages will be installed:
+ depends
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicts [1]
+Inst depends (1 stable [i386])
+Conf depends (1 stable [i386])" aptget satisfy --simulate "depends (>= 1)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" "$@"
+
+ testsuccessequal "$HEADER
+The following packages will be REMOVED:
+ conflicts:amd64
+The following NEW packages will be installed:
+ depends:amd64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicts:amd64 [1]
+Inst depends:amd64 (1 stable [amd64])
+Conf depends:amd64 (1 stable [amd64])" aptget satisfy --simulate "depends (>= 1)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --host-architecture amd64 "$@"
+
+ msgmsg "$TYPE: Build profile"
+
+ testsuccessequal "$HEADER
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" "$@"
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ depends:amd64
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst depends:amd64 (1 stable [amd64])
+Conf depends:amd64 (1 stable [amd64])" aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" -P a "$@"
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ depends
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst depends (1 stable [i386])
+Conf depends (1 stable [i386])" aptget satisfy --simulate "depends:amd64 <a>, depends:i386 <i>" -P i "$@"
+
+ msgmsg "$TYPE: Broken syntax"
+ testfailureequal "E: Problem parsing dependency: apt (>= 2" aptget satisfy 'foo' 'apt (>= 2' -s "$@"
+ testfailureequal "E: Problem parsing dependency: Conflicts: apt (>= 2" aptget satisfy 'foo' 'Conflicts: apt (>= 2' -s "$@"
+
+ msgmsg "$TYPE: Legacy operators"
+ testfailureequal "E: Invalid operator '<' at offset 5, did you mean '<<' or '<='? - in: foo (< 1)" aptget satisfy 'foo (< 1)' -s "$@"
+ testfailureequal "E: Invalid operator '>' at offset 5, did you mean '>>' or '>='? - in: foo (> 1)" aptget satisfy 'foo (> 1)' -s "$@"
+
+ msgmsg "$TYPE: Unsupported dependency type"
+ testfailureequal "E: Problem parsing dependency: Recommends: foo" aptget satisfy 'Recommends: foo' -s "$@"
+
+ msgmsg "$TYPE: Empty dependency"
+ testfailureequal "E: Problem parsing dependency: " aptget satisfy '' -s "$@"
+}
+
+testrun 'Internal' 'Reading package lists...
+Building dependency tree...'
+
+testrun 'External' 'Reading package lists...
+Building dependency tree...
+Execute external solver...' --solver apt
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+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:
+ satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
+E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]"
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Execute external solver...
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
+
+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:
+ satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed
+ Conflicts: conflicts:i386 (>= 1)
+E: External solver failed with: The following packages have unmet dependencies:" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver apt
diff --git a/test/integration/test-apt-get-source-arch b/test/integration/test-apt-get-source-arch
new file mode 100755
index 0000000..573ae14
--- /dev/null
+++ b/test/integration/test-apt-get-source-arch
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386" "amd64"
+
+
+# different version for the individual arches
+insertpackage 'stable' 'foo' 'amd64' '1.0'
+insertsource 'stable' 'foo' 'amd64' '1.0'
+
+insertpackage 'stable' 'foo' 'i386' '1.0'
+insertsource 'stable' 'foo' 'i386' '1.0'
+insertpackage 'stable' 'foo' 'i386' '2.0'
+insertsource 'stable' 'foo' 'i386' '2.0'
+
+insertpackage 'oldstable' 'foo' 'i386' '0.1'
+insertsource 'oldstable' 'foo' 'i386' '0.1'
+# just needed so that there is a release file entry for the test
+insertpackage 'oldstable' 'unreleated' 'amd64' '0.1'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+HEADER='Reading package lists...'
+DOWNLOAD10="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 11 SHA256:ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7
+'file:${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 14 SHA256:f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239"
+
+# pick :amd64
+testsuccessequal "$HEADER
+$DOWNLOAD10" aptget source -q --print-uris foo:amd64
+
+# pick :i386
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 11 SHA256:0fcb803ffbeef26db884625aaf06e75f3eda5c994634980e7c20fd37ed1fc104
+'file:${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 14 SHA256:ca9b0b828ca22372502af2b80f61f0bd9063910ece9fc34eeaf9d9e31aa8195a" aptget source -q --print-uris foo:i386
+
+# pick :i386 by release
+testsuccessequal "$HEADER
+Selected version '0.1' (oldstable) for foo
+Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 11 SHA256:72af24b0290fe1d13a3e25fddd2633e43c87ff79d249bc850009e47bcce73565
+'file:${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 14 SHA256:ec748ad88a71f98bfdc012e1a7632377d05fe3ebbf9c0922e0691fe4d79c0585" aptget source -q --print-uris foo:i386/oldstable
+
+# pick :i386 by version
+testsuccessequal "$HEADER
+$DOWNLOAD10" aptget source -q --print-uris foo:i386=1.0
+
+# error on unknown arch
+testfailureequal "$HEADER
+E: Can not find a package for architecture 'not-a-available-arch'
+E: Unable to find a source package for foo:not-a-available-arch" aptget source -q --print-uris foo:not-a-available-arch
+
+# error on unavailable version for arch
+testfailureequal "$HEADER
+E: Can not find a package 'foo:amd64' with version '2.0'
+E: Unable to find a source package for foo:amd64=2.0" aptget source -q --print-uris foo:amd64=2.0
+
+# error on unavailable release for arch
+testfailureequal "$HEADER
+E: Can not find a package 'foo:amd64' with release 'oldstable'
+E: Unable to find a source package for foo:amd64/oldstable" aptget source -q --print-uris foo:amd64/oldstable
diff --git a/test/integration/test-apt-get-source-authenticated b/test/integration/test-apt-get-source-authenticated
new file mode 100755
index 0000000..d5a4fac
--- /dev/null
+++ b/test/integration/test-apt-get-source-authenticated
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# Regression test for debian bug #749795. Ensure that we fail with
+# an error if apt-get source foo will download a source that comes
+# from an unauthenticated repository
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+setupaptarchive --no-update
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
+
+# update without authenticated InRelease file
+testwarning aptget update --allow-insecure-repositories
+
+# this all should fail
+testfailure aptget install -y foo
+cd downloaded
+testfailure aptget source foo
+testfailure test -e foo_2.0.dsc
+# allow overriding the warning
+testsuccess aptget source --allow-unauthenticated foo -o Debug::pkgAcquire::Worker=1
+testsuccess test -s foo_2.0.dsc -a -L foo_2.0.dsc
diff --git a/test/integration/test-apt-get-source-multisources b/test/integration/test-apt-get-source-multisources
new file mode 100755
index 0000000..fbc52cc
--- /dev/null
+++ b/test/integration/test-apt-get-source-multisources
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'armhf'
+
+insertsource 'unstable' 'adduser' 'all' '3.113+nmu3'
+insertsource 'stable' 'python-fll' 'all' '0.9.11'
+
+insertpackage 'unstable' 'adduser' 'all' '3.113+nmu3'
+insertpackage 'stable' 'python-fll' 'all' '0.9.11'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+HEADER='Reading package lists...'
+testsuccessequal "$HEADER
+Need to get 0 B/43 B of source archives.
+'file:${APTARCHIVE}/adduser_3.113%2bnmu3.dsc' adduser_3.113+nmu3.dsc 22 SHA256:19cc1abe85063976bf71c033f62f3e6bf6621647fe44a6ee31ed687e3fa5cbb7
+'file:${APTARCHIVE}/python-fll_0.9.11.dsc' python-fll_0.9.11.dsc 21 SHA256:51429e835ded66abf6bbc157865af29920435e74aea2836ba1f46443feae9285" aptget source -qdy --print-uris --dsc-only adduser=3.113 python-fll=0.9.11
+
+testsuccessequal "$HEADER
+Need to get 0 B/43 B of source archives.
+'file:${APTARCHIVE}/python-fll_0.9.11.dsc' python-fll_0.9.11.dsc 21 SHA256:51429e835ded66abf6bbc157865af29920435e74aea2836ba1f46443feae9285
+'file:${APTARCHIVE}/adduser_3.113%2bnmu3.dsc' adduser_3.113+nmu3.dsc 22 SHA256:19cc1abe85063976bf71c033f62f3e6bf6621647fe44a6ee31ed687e3fa5cbb7" aptget source -qdy --print-uris --dsc-only python-fll=0.9.11 adduser=3.113
diff --git a/test/integration/test-apt-get-update-sourceslist-warning b/test/integration/test-apt-get-update-sourceslist-warning
new file mode 100755
index 0000000..3a3cb2e
--- /dev/null
+++ b/test/integration/test-apt-get-update-sourceslist-warning
@@ -0,0 +1,86 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+setupaptarchive --no-update
+
+testsuccess apt update
+testsuccess apt update --no-download
+
+cat > rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_Release <<EOF
+Origin: Debian
+Label: Debian
+Suite: unreleased
+Codename: bookworm
+Date: Sun, 29 Jan 2023 20:14:10 +0000
+Architectures: amd64
+Components: main contrib non-free non-free-firmware
+Description: Debian x.y Bookworm - Not Released
+EOF
+touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_main_binary-amd64_Packages
+touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_contrib_binary-amd64_Packages
+touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binary-amd64_Packages
+touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free-firmware_binary-amd64_Packages
+find rootdir/var/lib/apt/lists/ -type f -exec chmod 644 {} \;
+
+NOTESURL='https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split'
+BOILERPLATE='Reading package lists...
+Building dependency tree...
+All packages are up to date.'
+
+msgmsg 'Do not suggest new non-free-firmware component if no non-free'
+echo 'deb http://example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE" apt update --no-download
+echo 'deb-src http://example.org/debian bookworm main non-free' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE" apt update --no-download
+
+msgmsg 'Suggest Signed-By for deb822 sources.list(5) entries'
+rm rootdir/etc/apt/sources.list.d/example.list
+echo 'Types: deb
+URIs: http://example.org/debian
+Suites: bookworm
+Components: main
+' > rootdir/etc/apt/sources.list.d/example.sources
+testsuccessequal "$BOILERPLATE
+N: Missing Signed-By in the sources.list(5) entry for 'http://example.org/debian'" apt update --no-download
+rm rootdir/etc/apt/sources.list.d/example.sources
+
+msgmsg 'Is non-free-firmware missing?'
+echo 'deb http://example.org/debian bookworm main non-free' > rootdir/etc/apt/sources.list.d/example.list
+cat >> rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binary-amd64_Packages <<EOF
+Package: firmware-linux-nonfree
+Architecture: all
+Version: 1
+EOF
+testsuccessequal "$BOILERPLATE" apt update --no-download
+echo -n > rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binary-amd64_Packages
+testsuccessequal "$BOILERPLATE
+N: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware'
+N: More information about this can be found online in the Release notes at: $NOTESURL" apt update --no-download
+
+msgmsg 'Component already present'
+echo 'deb http://example.org/debian bookworm non-free non-free-firmware' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE" apt update --no-download
+echo 'deb http://example.org/debian bookworm non-free
+deb http://example.org/debian bookworm non-free-firmware' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE" apt update --no-download
+
+msgmsg 'Detect login info embedded in sources.list'
+echo 'deb http://apt:debian@example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE
+N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'http://example.org/debian'" apt update --no-download
+echo 'deb tor+https://apt:debian@example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list
+testsuccessequal "$BOILERPLATE
+N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'tor+https://example.org/debian'" apt update --no-download
+
+msgmsg 'Firmware packages without upgrades'
+echo 'deb http://example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list
+insertinstalledpackage 'firmware-linux-nonfree' 'all' '1'
+testsuccessequal "$BOILERPLATE
+N: Repository 'Debian bookworm' changed its 'firmware component' value from 'non-free' to 'non-free-firmware'
+N: More information about this can be found online in the Release notes at: $NOTESURL" apt update --no-download
+
diff --git a/test/integration/test-apt-get-update-unauth-warning b/test/integration/test-apt-get-update-unauth-warning
new file mode 100755
index 0000000..42c4e5a
--- /dev/null
+++ b/test/integration/test-apt-get-update-unauth-warning
@@ -0,0 +1,94 @@
+#!/bin/sh
+#
+# ensure we print warnings for unauthenticated repositories
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+configcompression '.' 'gz'
+
+echo 'Acquire::Progress::Ignore::ShowErrorText "false";' > rootdir/etc/apt/apt.conf.d/99show-no-ignore-errors.conf
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+setupaptarchive --no-update
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+sed -i -n '/^SHA1:$/q;p' "${APTARCHIVE}/dists/unstable/Release"
+testfailure aptget update
+testwarning aptget update --allow-insecure-repositories
+
+
+rm -rf rootdir/var/lib/apt/lists
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
+# update without authenticated files leads to warning
+testfailureequal "Get:1 file:$APTARCHIVE unstable InRelease
+Ign:1 file:$APTARCHIVE unstable InRelease
+Get:2 file:$APTARCHIVE unstable Release
+Err:2 file:$APTARCHIVE unstable Release
+ File not found - ${APTARCHIVE}/dists/unstable/Release (2: No such file or directory)
+Reading package lists...
+E: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+# no package foo
+testsuccessequal 'Listing...' apt list foo
+testequal 'auxfiles
+lock
+partial' ls rootdir/var/lib/apt/lists
+
+filesize() {
+ local CREATEDBY="$1"
+ shift
+ stat -c%s "/$(aptget indextargets --no-release-info --format '$(URI)' "Created-By: $CREATEDBY" "$@" | cut -d'/' -f 2- ).gz"
+}
+# allow override
+#aptget update --allow-insecure-repositories -o Debug::pkgAcquire::worker=1
+#exit
+testwarningequal "Get:1 file:$APTARCHIVE unstable InRelease
+Ign:1 file:$APTARCHIVE unstable InRelease
+Get:2 file:$APTARCHIVE unstable Release
+Ign:2 file:$APTARCHIVE unstable Release
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources
+Ign:3 file:$APTARCHIVE unstable/main Sources
+Get:4 file:$APTARCHIVE unstable/main i386 Packages
+Ign:4 file:$APTARCHIVE unstable/main i386 Packages
+Get:5 file:$APTARCHIVE unstable/main all Packages
+Ign:5 file:$APTARCHIVE unstable/main all Packages
+Get:6 file:$APTARCHIVE unstable/main Translation-en
+Ign:6 file:$APTARCHIVE unstable/main Translation-en
+Get:3 file:$APTARCHIVE unstable/main Sources [$(filesize 'Sources') B]
+Get:4 file:$APTARCHIVE unstable/main i386 Packages [$(filesize 'Packages' 'Architecture: i386') B]
+Get:5 file:$APTARCHIVE unstable/main all Packages [$(filesize 'Packages' 'Architecture: all') B]
+Get:6 file:$APTARCHIVE unstable/main Translation-en [$(filesize 'Translations') B]
+Reading package lists...
+W: The repository 'file:$APTARCHIVE unstable Release' does not have a Release file.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update --allow-insecure-repositories
+# ensure we can not install the package
+testfailureequal "WARNING: The following packages cannot be authenticated!
+ foo
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y foo
diff --git a/test/integration/test-apt-get-upgrade b/test/integration/test-apt-get-upgrade
new file mode 100755
index 0000000..50a90ce
--- /dev/null
+++ b/test/integration/test-apt-get-upgrade
@@ -0,0 +1,144 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# simple case
+insertpackage 'stable,installed' 'upgrade-simple' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-simple' 'all' '2.0'
+
+# upgrade with a new dependency
+insertpackage 'stable,installed' 'upgrade-with-new-dep' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-with-new-dep' 'all' '2.0' 'Depends: new-dep'
+insertpackage 'stable' 'new-dep' 'all' '1.0'
+
+# upgrade with conflict and a new pkg with higher priority than conflict
+insertpackage 'stable,installed' 'upgrade-with-conflict' 'all' '1.0'
+insertpackage 'unstable' 'upgrade-with-conflict' 'all' '2.0' 'Conflicts: conflicting-dep' 'standard'
+insertpackage 'stable,installed' 'conflicting-dep' 'all' '1.0'
+
+# upgrade with conflict and a new pkg with higher priority than conflict
+insertpackage 'stable,installed' 'init' 'all' '1'
+insertpackage 'unstable' 'init' 'all' '2' 'Pre-Depends: systemd | sysvinit'
+insertpackage 'unstable' 'systemd' 'all' '2' 'Conflicts: conflicting-dep'
+insertpackage 'unstable' 'sysvinit' 'all' '2'
+
+setupaptarchive
+
+# Test if normal upgrade works as expected
+UPGRADE='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ init upgrade-with-conflict upgrade-with-new-dep
+The following packages will be upgraded:
+ upgrade-simple
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Conf upgrade-simple (2.0 unstable [all])'
+testsuccessequal "$UPGRADE" aptget upgrade -s
+testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
+
+# Test if apt-get upgrade --with-new-pkgs works
+UPGRADENEW='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-dep
+The following packages have been kept back:
+ init upgrade-with-conflict
+The following packages will be upgraded:
+ upgrade-simple upgrade-with-new-dep
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])'
+testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
+testsuccessequal "$UPGRADENEW" apt upgrade -s
+
+# Test if apt-get dist-upgrade works
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep systemd
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
+4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst systemd (2 unstable [all])
+Conf systemd (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
+
+msgmsg 'make systemd a non-choice in the or-group and try again'
+echo 'Package: systemd
+Pin: release unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences.d/nosystemd.pref
+
+testsuccessequal "$UPGRADE" aptget upgrade -s
+testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs
+
+UPGRADENEW='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-dep sysvinit
+The following packages have been kept back:
+ upgrade-with-conflict
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-new-dep
+3 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
+Inst sysvinit (2 unstable [all])
+Conf sysvinit (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])'
+testsuccessequal "$UPGRADENEW" aptget upgrade -s --with-new-pkgs
+testsuccessequal "$UPGRADENEW" apt upgrade -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conflicting-dep
+The following NEW packages will be installed:
+ new-dep sysvinit
+The following packages will be upgraded:
+ init upgrade-simple upgrade-with-conflict upgrade-with-new-dep
+4 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv conflicting-dep [1.0]
+Inst sysvinit (2 unstable [all])
+Conf sysvinit (2 unstable [all])
+Inst init [1] (2 unstable [all])
+Inst upgrade-with-conflict [1.0] (2.0 unstable [all])
+Inst new-dep (1.0 stable [all])
+Inst upgrade-simple [1.0] (2.0 unstable [all])
+Inst upgrade-with-new-dep [1.0] (2.0 unstable [all])
+Conf init (2 unstable [all])
+Conf upgrade-with-conflict (2.0 unstable [all])
+Conf new-dep (1.0 stable [all])
+Conf upgrade-simple (2.0 unstable [all])
+Conf upgrade-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade
diff --git a/test/integration/test-apt-get-upgrade-by-source b/test/integration/test-apt-get-upgrade-by-source
new file mode 100755
index 0000000..bac91f0
--- /dev/null
+++ b/test/integration/test-apt-get-upgrade-by-source
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+insertinstalledpackage 'pkg' 'all' '1' 'Source: pkg'
+insertinstalledpackage 'pkg-foo' 'all' '1' 'Source: pkg'
+insertinstalledpackage 'pkg-bar' 'all' '1' 'Source: pkg'
+insertpackage 'unstable' 'pkg' 'all' '2' 'Source: pkg'
+insertpackage 'unstable' 'pkg-foo' 'all' '2' 'Source: pkg'
+insertpackage 'unstable' 'pkg-bar' 'all' '2' 'Source: pkg'
+
+configarchitecture 'arm64'
+setupaptarchive
+
+noprogress() {
+ "$@" | sed /^Progress/d
+}
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall pkg:arm64 < 1 -> 2 @ii pumU > FU=1
+ Upgrading pkg-bar:arm64 < 1 | 2 @ii umH > due to pkg:arm64
+ Upgrading pkg-foo:arm64 < 1 | 2 @ii umH > due to pkg:arm64
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ pkg-bar pkg-foo
+The following packages will be upgraded:
+ pkg pkg-bar pkg-foo
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst pkg [1] (2 unstable [all])
+Inst pkg-bar [1] (2 unstable [all])
+Inst pkg-foo [1] (2 unstable [all])
+Conf pkg (2 unstable [all])
+Conf pkg-bar (2 unstable [all])
+Conf pkg-foo (2 unstable [all])" aptget install pkg -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall pkg:arm64 < 1 -> 2 @ii pumU > FU=1
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following packages will be upgraded:
+ pkg
+1 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
+Inst pkg [1] (2 unstable [all])
+Conf pkg (2 unstable [all])" aptget install pkg -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Upgrade-By-Source-Package=0 -s
diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper
new file mode 100755
index 0000000..ae1ca74
--- /dev/null
+++ b/test/integration/test-apt-helper
@@ -0,0 +1,132 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+changetohttpswebserver
+
+echo 'foo' > aptarchive/foo
+echo 'bar' > aptarchive/foo2
+
+test_apt_helper_download() {
+ msgmsg 'Test with' "$1"
+
+ msgtest 'apt-file download-file' 'md5sum'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo2' 'MD5Sum:d3b07384d113edec49eaa6238ad5ff00'
+ testfileequal ./downloaded/foo2 'foo'
+
+ msgtest 'apt-file download-file' 'sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo1' 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15'
+ testfileequal ./downloaded/foo1 'foo'
+
+ msgtest 'apt-file download-file' 'sha256'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo3' 'SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'
+ testfileequal ./downloaded/foo3 'foo'
+
+ msgtest 'apt-file download-file' 'no-hash'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo4'
+ testfileequal ./downloaded/foo4 'foo'
+
+ msgtest 'apt-file download-file' 'wrong md5sum'
+ testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo5' 'MD5Sum:aabbcc'
+ testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aabbcc [weak]
+ Hashes of received file:
+ - SHA512:0cf9180a764aba863a67b6d72f0918bc131c6772642cb2dce5a34f0a702f9470ddc2bf125c12198b1995c233c34b4afd346c54a2334c350a948a51b6e8b4e6b6
+ - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
+ - SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 [weak]
+ - MD5Sum:d3b07384d113edec49eaa6238ad5ff00 [weak]
+ - Filesize:4 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/foo')
+E: Download Failed"
+ testfileequal ./downloaded/foo5.FAILED 'foo'
+
+ msgtest 'apt-file download-file' 'wrong sha256'
+ testfailure --nomsg apthelper -qq download-file "${1}/foo" './downloaded/foo6' 'SHA256:aabbcc'
+ testfileequal rootdir/tmp/testfailure.output "E: Failed to fetch ${1}/foo Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aabbcc
+ Hashes of received file:
+ - SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
+ - Filesize:4 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/foo')
+E: Download Failed"
+ testfileequal './downloaded/foo6.FAILED' 'foo'
+
+ msgtest 'apt-file download-file' 'sha256 sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo8' 'SHA256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c' \
+ "${1}/foo2" './downloaded/foo7' 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+ testfileequal './downloaded/foo8' 'foo'
+ testfileequal './downloaded/foo7' 'bar'
+
+ msgtest 'apt-file download-file' 'md5sum sha1'
+ testsuccess --nomsg apthelper download-file "${1}/foo" './downloaded/foo9' 'MD5Sum:d3b07384d113edec49eaa6238ad5ff00' \
+ "${1}/foo2" './downloaded/foo10' 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+ testfileequal './downloaded/foo9' 'foo'
+ testfileequal './downloaded/foo10' 'bar'
+}
+
+setupproxydetect() {
+ local METH="$1"
+ shift
+ {
+ echo '#!/bin/sh -e'
+ echo "$@"
+ } > "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ chmod 755 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ echo "Acquire::${METH}::${CONFNAME} \"${TMPWORKINGDIRECTORY}/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
+}
+
+test_apt_helper_detect_proxy() {
+ msgmsg "apt-helper $CONFNAME" 'no proxy'
+ testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'exit 0'
+ testsuccessequal "Using proxy '' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'exit 1'
+ testfailureequal 'E: Sub-process ProxyAutoDetect returned an error code (1)' apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo'
+ testwarningequal "Using proxy '' for URL 'http://example.com/'
+W: ProxyAutoDetect command returned an empty line" apthelper auto-detect-proxy http://example.com/
+ setupproxydetect 'http' 'echo DIRECT'
+ testsuccessequal "Using proxy 'DIRECT' for URL 'http://example.com/'" apthelper auto-detect-proxy http://example.com/
+ chmod -x "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+ testfailureequal "E: ProxyAutoDetect command '${TMPWORKINGDIRECTORY}/apt-proxy-detect' can not be executed! - access (13: Permission denied)" apthelper auto-detect-proxy http://example.com/
+
+ msgmsg "apt-helper $CONFNAME" 'http proxy'
+ setupproxydetect 'http' 'echo "http://some-proxy"'
+ testsuccessequal "Using proxy 'http://some-proxy' for URL 'http://www.example.com/'" apthelper auto-detect-proxy http://www.example.com
+ testsuccessequal "Using proxy '' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
+
+ msgmsg "apt-helper $CONFNAME" 'https proxy'
+ setupproxydetect 'https' 'echo "https://https-proxy"'
+ testsuccessequal "Using proxy '' for URL 'http://no-ssl.example.com/'" apthelper auto-detect-proxy http://no-ssl.example.com
+ testsuccessequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
+ rm -f rootdir/etc/apt/apt.conf.d/02proxy-detect "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+}
+
+test_apt_helper_download "http://localhost:${APTHTTPPORT}"
+test_apt_helper_download "https://localhost:${APTHTTPSPORT}"
+for CONFNAME in 'ProxyAutoDetect' 'Proxy-Auto-Detect' ; do
+ test_apt_helper_detect_proxy
+done
+msgmsg 'test various failure modes'
+testfailureequal 'E: Invalid operation download' apthelper download
+testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file
+testfailureequal 'E: Must specify at least one pair url/filename' apthelper download-file 'http://example.org/'
+testfailureequal 'E: Need one URL as argument' apthelper auto-detect-proxy
+testfailureequal 'E: Must specify at least one SRV record' apthelper srv-lookup
+testfailureequal 'E: GetSrvRec failed for localhost' apthelper -q=1 srv-lookup 'localhost'
+testfailureequal "E: GetSrvRec failed for localhost:${APTHTTPPORT}" apthelper -q=1 srv-lookup "localhost:${APTHTTPPORT}"
+testfailureequal "E: GetSrvRec failed for localhost:${APTHTTPSPORT}" apthelper -q=1 srv-lookup "localhost:${APTHTTPSPORT}"
+
+msgmsg 'apt-helper' 'drop-privs'
+testfailureequal "E: No command given to run without privileges" apthelper drop-privs
+testsuccess apthelper -- drop-privs true
+testsuccess apthelper drop-privs -- true
+DATE="$(date -u +'%Y-%m-%d')"
+testsuccessequal "$DATE" apthelper drop-privs -- date -u -d "$DATE" +'%Y-%m-%d'
diff --git a/test/integration/test-apt-helper-cat-file b/test/integration/test-apt-helper-cat-file
new file mode 100755
index 0000000..064760c
--- /dev/null
+++ b/test/integration/test-apt-helper-cat-file
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+TESTTOOL="${APTTESTHELPERSBINDIR}/test_fileutl"
+msgtest 'Check if we have build the test tool' "$TESTTOOL"
+if [ -x "$TESTTOOL" ]; then
+ msgpass
+else
+ msgskip 'not available'
+ exit 0
+fi
+
+cat >rootdir/etc/apt/apt.conf.d/rev-as-compressor <<EOF
+APT::Compressor::rev {
+ Name "rev";
+ Extension ".rev";
+ Binary "rev";
+ Cost "1";
+};
+EOF
+
+configcompression 'ALL'
+cat >./test.txt <<EOF
+This is a test.
+EOF
+
+compressfile ./test.txt
+while read compressor extension command; do
+ if [ "$compressor" = '.' ]; then
+ FILE='./test.txt'
+ else
+ FILE="./test.txt.${extension}"
+ fi
+ if [ -d /proc/self/fd ]; then
+ testsuccess runapt "${TESTTOOL}" "$FILE"
+ testequal '3' grep -c '/test.txt' rootdir/tmp/testsuccess.output
+ else
+ msgtest 'Test if /proc interface is available'
+ msgskip 'seems not'
+ fi
+ testsuccessequal "$(cat ./test.txt)" apthelper cat-file "$FILE"
+done < "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
diff --git a/test/integration/test-apt-https-no-redirect b/test/integration/test-apt-https-no-redirect
new file mode 100755
index 0000000..1c38809
--- /dev/null
+++ b/test/integration/test-apt-https-no-redirect
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'stable' 'apt' 'all' '1'
+setupaptarchive --no-update
+
+echo 'alright' > aptarchive/working
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
+webserverconfig 'aptwebserver::redirect::replace::/redirectme2/' "https://localhost:${APTHTTPSPORT}/"
+echo 'Dir::Bin::Methods::https+http "http";' > rootdir/etc/apt/apt.conf.d/99add-https-http-method
+echo 'Dir::Bin::Methods::foo+https "http";' > rootdir/etc/apt/apt.conf.d/99add-foo-https-method
+
+msgtest 'download of a file works via' 'http'
+testsuccess --nomsg downloadfile "http://localhost:${APTHTTPPORT}/working" httpfile
+testfileequal httpfile 'alright'
+
+msgtest 'download of a file works via' 'https'
+testsuccess --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/working" httpsfile
+testfileequal httpsfile 'alright'
+rm -f httpfile httpsfile
+
+msgtest 'download of http file works via' 'https+http'
+testsuccess --nomsg downloadfile "https+http://localhost:${APTHTTPPORT}/working" httpfile
+testfileequal httpfile 'alright'
+rm -f httpfile
+
+msgtest 'download of a file does not work if' 'https redirected to http'
+testfailure --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/redirectme/working" redirectfile
+msgtest 'libcurl has forbidden access in last request to' 'http resource'
+testsuccess --nomsg grep -q -E -- "Redirection from https to 'http://.*' is forbidden" rootdir/tmp/testfailure.output
+rm -f redirectfile
+
+msgtest 'download of a file does work if' 'https+http redirected to https'
+testsuccess --nomsg downloadfile "https+http://localhost:${APTHTTPPORT}/redirectme2/working" redirectfile
+testfileequal redirectfile 'alright'
+rm -f redirectfile
+
+msgtest 'download of a file does work if' 'foo+https redirected to https'
+testsuccess --nomsg downloadfile "foo+https://localhost:${APTHTTPSPORT}/redirectme2/working" redirectfile
+testfileequal redirectfile 'alright'
+rm -f redirectfile
diff --git a/test/integration/test-apt-https-transient b/test/integration/test-apt-https-transient
new file mode 100755
index 0000000..f2b7347
--- /dev/null
+++ b/test/integration/test-apt-https-transient
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# Disable sandbox to avoid W: down below
+echo 'APT::Sandbox::User "root";' > rootdir/etc/apt/apt.conf.d/no-acquire-sandbox
+
+echo 'alright' > aptarchive/working
+changetohttpswebserver
+
+msgtest 'download of a file works via' 'http'
+testsuccess --nomsg downloadfile "http://localhost:${APTHTTPPORT}/working" httpsfile
+testfileequal httpsfile 'alright'
+rm -f httpfile httpsfile
+
+msgtest 'download of a file works via' 'https'
+testsuccess --nomsg downloadfile "https://localhost:${APTHTTPSPORT}/working" httpfile
+testfileequal httpfile 'alright'
+rm -f httpfile httpsfile
+
+# Speak wrong protocols (https on http port and vice versa). We check that they can be retried.
+
+msgtest 'protocol negotiation error is transient for' 'https'
+testfailureequal "Ign:1 https://localhost:${APTHTTPPORT}/working
+ Could not wait for server fd - select (11: Resource temporarily unavailable)
+Err:1 https://localhost:${APTHTTPPORT}/working
+ Could not wait for server fd - select (11: Resource temporarily unavailable)
+E: Failed to fetch https://localhost:${APTHTTPPORT}/working Could not wait for server fd - select (11: Resource temporarily unavailable)
+E: Download Failed" apthelper download-file "https://localhost:${APTHTTPPORT}/working" httpfile -oAcquire::https::Timeout=1 -oAcquire::Retries=1
+
+# Speak wrong protocols (https on http port and vice versa)
+msgtest 'protocol negotiation error is transient for' 'http'
+testfailureequal "Ign:1 http://localhost:${APTHTTPSPORT}/working
+ Connection failed
+Err:1 http://localhost:${APTHTTPSPORT}/working
+ Connection failed
+E: Failed to fetch http://localhost:${APTHTTPSPORT}/working Connection failed
+E: Download Failed" apthelper download-file "http://localhost:${APTHTTPSPORT}/working" httpfile -oAcquire::https::Timeout=1 -oAcquire::Retries=1
diff --git a/test/integration/test-apt-install-file-reltag b/test/integration/test-apt-install-file-reltag
new file mode 100755
index 0000000..afbf9be
--- /dev/null
+++ b/test/integration/test-apt-install-file-reltag
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'foo' 'all' '2' 'Depends: foo-common (= 2)'
+insertpackage 'unstable' 'foo-common' 'all' '2'
+insertpackage 'unstable' 'baz' 'all' '1'
+insertpackage 'experimental' 'foo' 'all' '5' 'Depends: foo-common (= 5)'
+insertpackage 'experimental' 'foo-common' 'all' '5' 'Source: foo (5)'
+insertpackage 'experimental' 'baz' 'all' '2'
+setupaptarchive
+
+insertinstalledpackage 'build-essential' 'all' '1'
+
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: foo (= 5), baz
+Standards-Version: 4.1.3
+EOF
+buildsimplenativepackage 'foobar2' 'all' '1' 'unstable' 'Depends: foo (= 5), baz'
+
+ln -s "$(readlink -f ./incoming/foobar2_1_all.deb)" foobar.deb
+mkdir -p foobar
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep "$(readlink -f ./foobar.dsc)" -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install "$(readlink -f ./foobar.deb)" -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ./foobar.dsc -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ./foobar.deb -s
+cd foobar
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ../foobar.dsc -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ../foobar.deb -s
+cd ..
+
+SUCCESSDSC='The following NEW packages will be installed:
+ baz foo foo-common
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (1 unstable [all])
+Inst foo-common (5 experimental [all])
+Inst foo (5 experimental [all])
+Conf baz (1 unstable [all])
+Conf foo-common (5 experimental [all])
+Conf foo (5 experimental [all])'
+SUCCESSDEB='The following additional packages will be installed:
+ baz foo foo-common
+The following NEW packages will be installed:
+ baz foo foo-common foobar2
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (1 unstable [all])
+Inst foo-common (5 experimental [all])
+Inst foo (5 experimental [all])
+Inst foobar2 (1 local-deb [all])
+Conf baz (1 unstable [all])
+Conf foo-common (5 experimental [all])
+Conf foo (5 experimental [all])
+Conf foobar2 (1 local-deb [all])'
+testsuccessequal "Note, using file '$(readlink -f ./foobar.dsc)' to get the build dependencies
+$SUCCESSDSC" apt build-dep "$(readlink -f ./foobar.dsc)/experimental" -s -q=2
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foobar2' instead of '$(readlink -f ./foobar.deb)'
+$SUCCESSDEB" apt install "$(readlink -f ./foobar.deb)/experimental" -s
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+$SUCCESSDSC" apt build-dep ./foobar.dsc/experimental -sq=2
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foobar2' instead of './foobar.deb'
+$SUCCESSDEB" apt install "./foobar.deb/experimental" -s
+cd foobar
+testsuccessequal "Note, using file '../foobar.dsc' to get the build dependencies
+$SUCCESSDSC" apt build-dep ../foobar.dsc/experimental -sqq
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foobar2' instead of '../foobar.deb'
+$SUCCESSDEB" apt install "../foobar.deb/experimental" -s
+cd ..
+
+msgmsg 'fail with' 'incorrect release'
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep "$(readlink -f ./foobar.dsc)/stable" -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install "$(readlink -f ./foobar.deb)/stable" -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ./foobar.dsc/stable -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ./foobar.deb/stable -s
+cd foobar
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ../foobar.dsc/stable -s
+testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ../foobar.deb/stable -s
+cd ..
diff --git a/test/integration/test-apt-install-order-matters-a-bit b/test/integration/test-apt-install-order-matters-a-bit
new file mode 100755
index 0000000..e41709f
--- /dev/null
+++ b/test/integration/test-apt-install-order-matters-a-bit
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'a' 'all' '1' 'Depends: b | d'
+insertpackage 'unstable' 'b' 'all' '1'
+insertpackage 'unstable' 'c' 'all' '1' 'Depends: d | b'
+insertpackage 'unstable' 'd' 'all' '1'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ b
+The following NEW packages will be installed:
+ a b c
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst b (1 unstable [all])
+Inst a (1 unstable [all])
+Inst c (1 unstable [all])
+Conf b (1 unstable [all])
+Conf a (1 unstable [all])
+Conf c (1 unstable [all])' apt install a c -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ d
+The following NEW packages will be installed:
+ a c d
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst d (1 unstable [all])
+Inst a (1 unstable [all])
+Inst c (1 unstable [all])
+Conf d (1 unstable [all])
+Conf a (1 unstable [all])
+Conf c (1 unstable [all])' apt install c a -s
+
+TOPLEVELCHOICE='Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ a c d
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst d (1 unstable [all])
+Inst a (1 unstable [all])
+Inst c (1 unstable [all])
+Conf d (1 unstable [all])
+Conf a (1 unstable [all])
+Conf c (1 unstable [all])'
+testsuccessequal "$TOPLEVELCHOICE" apt install d a c -s
+testsuccessequal "$TOPLEVELCHOICE" apt install a c d -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+ MarkInstall a:amd64 < none -> 1 @un puN Ib > FU=1
+ MarkInstall b:amd64 < none -> 1 @un uN > FU=0
+ MarkInstall c:amd64 < none -> 1 @un puN > FU=1
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ b
+The following NEW packages will be installed:
+ a b c
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst b (1 unstable [all])
+Inst a (1 unstable [all])
+Inst c (1 unstable [all])
+Conf b (1 unstable [all])
+Conf a (1 unstable [all])
+Conf c (1 unstable [all])' apt install a a a c a a a -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
diff --git a/test/integration/test-apt-keep-downloaded-pkgs b/test/integration/test-apt-keep-downloaded-pkgs
new file mode 100755
index 0000000..c5f6295
--- /dev/null
+++ b/test/integration/test-apt-keep-downloaded-pkgs
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'pkg1' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg2' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg3' 'all' '1.0' 'stable'
+buildsimplenativepackage 'pkg4' 'all' '1.0' 'stable'
+
+# local (file) installs
+setupaptarchive
+
+# a file:// "download" is not a real download and hence passes
+testsuccess aptget install pkg1 --no-download --download-only -y
+testfailure test -f rootdir/var/cache/apt/archives/pkg1_1.0_all.deb
+testsuccess test -f aptarchive/pool/pkg1_1.0_all.deb
+
+# ensure that install from local sources does not remove debs
+testsuccess aptget install pkg1 -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f aptarchive/pool/pkg1_1.0_all.deb
+testfailure test -f rootdir/var/cache/apt/archives/pkg1_1.0_all.deb
+
+# now switch to http and downloading debs
+changetowebserver
+testsuccess aptget update
+
+# see if no-download really doesn't download the package
+testfailuremsg 'E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?' aptget install pkg2 --no-download -y
+testsuccess test -f aptarchive/pool/pkg2_1.0_all.deb
+testfailure test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+
+# ensure that the downloaded pkg is kept with "keep=true"
+testsuccess aptget install pkg2 -o APT::Keep-Downloaded-Packages=true
+testsuccess test -f aptarchive/pool/pkg2_1.0_all.deb
+testsuccess test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+
+# ensure that the downloaded pkg is removed when requested
+testsuccess aptget install pkg3 -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f aptarchive/pool/pkg3_1.0_all.deb
+# this was there before, keep it
+testsuccess test -f rootdir/var/cache/apt/archives/pkg2_1.0_all.deb
+# this got installed so we can remove it now
+testfailure test -f rootdir/var/cache/apt/archives/pkg3_1.0_all.deb
+
+
+# ensure that install from the download dir does not delete packages
+mv aptarchive/pool/pkg4_1.0_all.deb rootdir/var/cache/apt/archives
+testsuccess aptget install $(pwd)/rootdir/var/cache/apt/archives/pkg4_1.0_all.deb -o APT::Keep-Downloaded-Packages=false
+testsuccess test -f $(pwd)/rootdir/var/cache/apt/archives/pkg4_1.0_all.deb
diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key
new file mode 100755
index 0000000..a1e633c
--- /dev/null
+++ b/test/integration/test-apt-key
@@ -0,0 +1,428 @@
+#!/bin/sh
+set -e
+
+# apt-key is a shell script, so relatively prune to be effected by 'crazy' things:
+# confuses config parser as there exists no way of escaping " currently.
+#TMPDIR="$(mktemp -d)/This is \"fü\$\$ing cràzy\", \$(man man | head -n1 | cut -d' ' -f 1)\$!"
+# gpg doesn't like | in path names – documented e.g. in the man gpg2 --agent-program
+#TMPDIR="$(mktemp -d)/This is fü\$\$ing cràzy, \$(man man | head -n1 | cut -d' ' -f 1)\$!"
+TMPDIR_ADD="This is fü\$\$ing cràzy, \$(apt -v)\$!"
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+chmod o+x "${TMPWORKINGDIRECTORY}/.."
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'bar' 'i386' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+# start from a clean plate again
+cleanplate() {
+ rm -rf "${ROOTDIR}/etc/apt/trusted.gpg.d/" "${ROOTDIR}/etc/apt/trusted.gpg"
+ mkdir "${ROOTDIR}/etc/apt/trusted.gpg.d/"
+}
+testmultigpg() {
+ testfailure --nomsg aptkey --quiet --readonly "$@"
+ testsuccess grep "^gpgv: Can't check signature" "${ROOTDIR}/tmp/testfailure.output"
+ testsuccess grep '^gpgv: Good signature from' "${ROOTDIR}/tmp/testfailure.output"
+}
+testaptkeyskeyring() {
+ local KEYRING="$1"
+ shift
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylistkeyring.output"
+ if ! aptkey --keyring "$KEYRING" list --with-colon 2>/dev/null | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then
+ echo -n > "$OUTPUT"
+ fi
+ testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")"
+}
+testsuccessempty() {
+ testempty "$@"
+}
+testrun() {
+ local EXT="${1:-gpg}"
+ local TESTSTATE="${2:-testsuccess}"
+ echo "APT::Key::ArchiveKeyring \"${KEYDIR}/joesixpack.pub.gpg\";
+APT::Key::RemovedKeys \"${KEYDIR}/rexexpired.pub.gpg\";" > "${ROOTDIR}/etc/apt/apt.conf.d/aptkey.conf"
+
+ cleanplate
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testaptkeys 'Joe Sixpack'
+
+ ${TESTSTATE} aptkey list
+ msgtest 'Check that paths in list output are not' 'double-slashed'
+ testfailure --nomsg grep '//' "${ROOTDIR}/tmp/${TESTSTATE}.output"
+
+ ${TESTSTATE} aptkey finger
+ msgtest 'Check that paths in finger output are not' 'double-slashed'
+ testfailure --nomsg grep '//' "${ROOTDIR}/tmp/${TESTSTATE}.output"
+
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${KEYDIR}/joesixpack.pub.${EXT}.bak"
+ if [ "$TESTSTATE" = 'testwarning' ]; then
+ testwarning aptkey --fakeroot update
+ testsuccess grep '^gpg: key .*DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed$' "${ROOTDIR}/tmp/testwarning.output"
+ testsuccess grep '^W: .* are ignored as the file has an unsupported filetype' "${ROOTDIR}/tmp/testwarning.output"
+ else
+ testequalor2 'gpg: key DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+gpg: Total number processed: 1
+gpg: unchanged: 1' 'gpg: key 5A90D141DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) <joe@example.org>" not changed
+gpg: Total number processed: 1
+gpg: unchanged: 1' aptkey --fakeroot update
+ fi
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${KEYDIR}/joesixpack.pub.${EXT}.bak"
+
+ testaptkeys 'Joe Sixpack'
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg"
+
+ ${TESTSTATE} aptkey --fakeroot add "${KEYDIR}/rexexpired.pub.${EXT}"
+ testfilestats "${ROOTDIR}/etc/apt/trusted.gpg" '%a' '=' '644'
+
+ testaptkeys 'Rex Expired' 'Joe Sixpack'
+
+ msgtest 'Check that Sixpack key can be' 'exported'
+ aptkey export 'Sixpack' > "${TMPWORKINGDIRECTORY}/aptkey.export" 2>/dev/null
+ aptkey --keyring "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}" exportall > "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess --nomsg cmp "${TMPWORKINGDIRECTORY}/aptkey.export" "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.export"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+
+ msgtest 'Check that multiple keys can be' 'exported'
+ aptkey export 'Sixpack' 'Expired' > "${TMPWORKINGDIRECTORY}/aptkey.export" 2>/dev/null
+ aptkey --keyring "${KEYDIR}/rexexpired.pub.${EXT}" \
+ --keyring "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}" exportall > "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess --nomsg cmp "${TMPWORKINGDIRECTORY}/aptkey.export" "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.export"
+ testsuccess test -s "${TMPWORKINGDIRECTORY}/aptkey.exportall"
+
+ msgtest 'Execute update again to trigger removal of' 'Rex Expired key'
+ ${TESTSTATE} --nomsg aptkey --fakeroot update
+
+ testaptkeys 'Joe Sixpack'
+
+ msgtest "Try to remove a key which exists, but isn't in the" 'forced keyring'
+ testsuccess --nomsg aptkey --fakeroot --keyring "${ROOTDIR}/etc/apt/trusted.gpg" del DBAC8DAE
+
+ testaptkeys 'Joe Sixpack'
+
+ ${TESTSTATE} aptkey --fakeroot del DBAC8DAE
+ "${TESTSTATE}empty" aptkey list
+
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testaptkeys 'Joe Sixpack'
+ msgtest "Remove a key from" 'forced keyring in trusted.d.gpg'
+ testsuccess --nomsg aptkey --fakeroot --keyring "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}" del DBAC8DAE
+ testsuccess cmp -s "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ "${TESTSTATE}empty" aptkey list
+
+ cp -a "${KEYDIR}/marvinparanoid.pub.asc" "${ROOTDIR}/etc/foobar.pub"
+ testsuccess aptkey --fakeroot --keyring "${ROOTDIR}/etc/foobar.pub" add "${KEYDIR}/rexexpired.pub.asc" "${KEYDIR}/joesixpack.pub.gpg"
+ testfilestats "${ROOTDIR}/etc/foobar.pub" '%a' '=' '644'
+ testaptkeyskeyring "${ROOTDIR}/etc/foobar.pub" 'Marvin Paranoid' 'Rex Expired' 'Joe Sixpack'
+ "${TESTSTATE}empty" aptkey list
+
+ msgtest 'Test key removal with' 'lowercase key ID' #keylength somewhere between 8byte and short
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del d141dbac8dae
+ "${TESTSTATE}empty" aptkey list
+
+ if [ "$(id -u)" != '0' ]; then
+ msgtest 'Test key removal with' 'unreadable key'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ testwarning --nomsg aptkey --fakeroot del d141dbac8dae
+ testwarning aptkey list
+ chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ grep -v '^W: ' "${ROOTDIR}/tmp/testwarning.output" > "${ROOTDIR}/aptkeylist.output" || true
+ testempty cat "${ROOTDIR}/aptkeylist.output"
+ fi
+
+ msgtest 'Test key removal with' 'single key in real file'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'different key specs'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/marvinparanoid.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del 0xDBAC8DAE 528144E2
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}"
+ testsuccess cmp "${KEYDIR}/marvinparanoid.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/marvinparanoid.${EXT}~"
+
+ msgtest 'Test key removal with' 'long key ID'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del 5A90D141DBAC8DAE
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'fingerprint'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'spaced fingerprint'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del '34A8 E9D1 8DB3 20F3 67E8 EAA0 5A90 D141 DBAC 8DAE'
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ msgtest 'Test key removal with' 'single key in softlink'
+ cleanplate
+ ln -sf "$(readlink -f "${KEYDIR}/joesixpack.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE
+ "${TESTSTATE}empty" aptkey list
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+
+ cleanplate
+ ${TESTSTATE} aptkey --fakeroot add "${KEYDIR}/joesixpack.pub.${EXT}"
+ ln -sf "$(readlink -f "${KEYDIR}/marvinparanoid.pub.${EXT}")" "${KEYDIR}/marvin paránöid.pub.${EXT}"
+ ${TESTSTATE} aptkey --fakeroot add "${KEYDIR}/marvin paránöid.pub.${EXT}"
+ testaptkeys 'Joe Sixpack' 'Marvin Paranoid'
+ cp -a "${ROOTDIR}/etc/apt/trusted.gpg" "${KEYDIR}/testcase-multikey.pub.gpg" # store for reuse
+ aptkey --keyring "${KEYDIR}/testcase-multikey.pub.gpg" export > "${KEYDIR}/testcase-multikey.pub.asc"
+
+ msgtest 'Test key removal with' 'multi key in real file'
+ cleanplate
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ msgtest 'Test key removal with' 'multi key in softlink'
+ cleanplate
+ ln -s "$(readlink -f "${KEYDIR}/testcase-multikey.pub.${EXT}")" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+ testfailure test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testsuccess test -L "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ msgtest 'Test key removal with' 'multiple files including key'
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+ testfailure test -e "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ testsuccess cmp "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}~"
+ testsuccess cmp "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}~"
+
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ testaptkeys 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+ msgtest 'Test merge-back of' 'added keys'
+ ${TESTSTATE} --nomsg aptkey adv --batch --yes --import "${KEYDIR}/rexexpired.pub.${EXT}"
+ testaptkeys 'Rex Expired' 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+
+ msgtest 'Test merge-back of' 'removed keys'
+ ${TESTSTATE} --nomsg aptkey adv --batch --yes --delete-keys 27CE74F9
+ testaptkeys 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid'
+
+ msgtest 'Test merge-back of' 'removed duplicate keys'
+ ${TESTSTATE} --nomsg aptkey adv --batch --yes --delete-keys DBAC8DAE
+ testaptkeys 'Marvin Paranoid'
+
+ cleanplate
+ cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/joesixpack.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ local SIGNATURE="${TMPWORKINGDIRECTORY}/signature"
+ msgtest 'Test signing a file' 'with a key'
+ echo 'Verify me. This is my signature.' > "$SIGNATURE"
+ echo 'lalalalala' > "${SIGNATURE}2"
+ testsuccess --nomsg aptkey --quiet --keyring "${KEYDIR}/marvinparanoid.pub.gpg" --secret-keyring "${KEYDIR}/marvinparanoid.sec" --readonly \
+ adv --batch --yes --default-key 'Marvin' --armor --detach-sign --sign --output "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testsuccess test -s "${SIGNATURE}.gpg" -a -s "${SIGNATURE}"
+
+ msgtest 'Test verify a file' 'with no sig'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}" "${SIGNATURE}2"
+
+ for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
+ echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+ if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
+
+ msgtest 'Test verify a file' 'with all keys'
+ ${TESTSTATE} --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ if [ "$(id -u)" != '0' ]; then
+ msgtest 'Test verify a file' 'with unreadable key'
+ echo 'foobar' > "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ chmod 000 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ testwarning --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testwarning aptkey list
+ # check that apt users see warnings, too
+ rm -rf "${ROOTDIR}/var/lib/apt/lists"
+ testwarning apt update
+
+ chmod 644 "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ rm -f "${ROOTDIR}/etc/apt/trusted.gpg.d/unreadablekey.${EXT}"
+ fi
+
+ msgtest 'Test verify a file' 'with good keyring'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a file' 'with good keyrings 1'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/joesixpack.pub.${EXT}" \
+ --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a file' 'with good keyrings 2'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" \
+ --keyring "${KEYDIR}/joesixpack.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with bad keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/joesixpack.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with non-existing keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/does-not-exist.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testfailure test -e "${KEYDIR}/does-not-exist.pub.${EXT}"
+
+ # note: this isn't how apts gpgv method implements keyid for verify
+ msgtest 'Test verify a file' 'with good keyid'
+ ${TESTSTATE} --nomsg aptkey --quiet --readonly --keyid 'Paranoid' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with bad keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Sixpack' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a file' 'with non-existing keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Kalnischkies' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify fails on' 'bad file'
+ testfailure --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}2"
+
+ # try to perform an entire update with this gpgv
+ rm -rf "${ROOTDIR}/var/lib/apt/lists"
+ ${TESTSTATE} apt update -o Test::Dir="${ROOTDIR}"
+ done
+ rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+
+ msgtest 'Test verify a file' 'with good keyring'
+ testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/testcase-multikey.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ cleanplate
+ cat "${KEYDIR}/joesixpack.pub.gpg" "${KEYDIR}/marvinparanoid.pub.gpg" > "${KEYDIR}/double.pub.gpg"
+ cat "${KEYDIR}/joesixpack.pub.asc" "${KEYDIR}/marvinparanoid.pub.asc" > "${KEYDIR}/double.pub.asc"
+ cat "${KEYDIR}/joesixpack.sec" "${KEYDIR}/marvinparanoid.sec" > "${KEYDIR}/double.sec"
+ cp -a "${KEYDIR}/double.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/double.${EXT}"
+ cp -a "${KEYDIR}/testcase-multikey.pub.${EXT}" "${ROOTDIR}/etc/apt/trusted.gpg.d/multikey.${EXT}"
+ rm -f "${SIGNATURE}.gpg"
+ testsuccess aptkey --quiet --keyring "${KEYDIR}/double.pub.gpg" --secret-keyring "${KEYDIR}/double.sec" --readonly \
+ adv --batch --yes -u 'Marvin' -u 'Joe' --armor --detach-sign --sign --output "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testsuccess test -s "${SIGNATURE}.gpg" -a -s "${SIGNATURE}"
+
+ for GPGV in '' 'gpgv' 'gpgv1' 'gpgv2'; do
+ echo "APT::Key::GPGVCommand \"$GPGV\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+ if [ -n "$GPGV" ] && ! command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then continue; fi
+
+ msgtest 'Test verify a doublesigned file' 'with all keys'
+ ${TESTSTATE} --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a doublesigned file' 'with good keyring joe'
+ testmultigpg --keyring "${KEYDIR}/joesixpack.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify a doublesigned file' 'with good keyring marvin'
+ testmultigpg --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with bad keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/rexexpired.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with non-existing keyring'
+ testfailure --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/does-not-exist.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+ testfailure test -e "${KEYDIR}/does-not-exist.pub.${EXT}"
+
+ # note: this isn't how apts gpgv method implements keyid for verify
+ msgtest 'Test verify a doublesigned file' 'with good keyid'
+ testmultigpg --keyid 'Paranoid' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with bad keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Rex' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test fail verify a doublesigned file' 'with non-existing keyid'
+ testfailure --nomsg aptkey --quiet --readonly --keyid 'Kalnischkies' verify "${SIGNATURE}.gpg" "${SIGNATURE}"
+
+ msgtest 'Test verify fails on' 'bad doublesigned file'
+ testfailure --nomsg aptkey --quiet --readonly verify "${SIGNATURE}.gpg" "${SIGNATURE}2"
+ done
+ rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgvcmd"
+}
+
+setupgpgcommand() {
+ local GPGEXE;
+ if command dpkg -l gnupg1 2>&1 | grep -q '^ii'; then
+ if [ "$1" = '1' ]; then
+ GPGEXE='gpg1'
+ else
+ GPGEXE='gpg'
+ fi
+ else
+ if [ "$1" = '1' ]; then
+ GPGEXE='gpg'
+ else
+ GPGEXE='gpg2'
+ fi
+ fi
+ msgmsg 'Force tests to be run with' "$GPGEXE"
+ echo "APT::Key::GPGCommand \"$GPGEXE\";" > "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
+ testsuccess aptkey --readonly adv --version
+ cp "${ROOTDIR}/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/aptkey.version"
+ testsuccess grep "^gpg (GnuPG) $1\." "${TMPWORKINGDIRECTORY}/aptkey.version"
+}
+
+(cd /; find "${TMPWORKINGDIRECTORY}/keys" -name '*.pub' -type f) | while read trusted; do
+ testsuccess aptkey --keyring "$trusted" adv --armor --export --output "${trusted}.asc"
+ cp -a "$trusted" "${trusted}.gpg"
+done
+
+# run with default (whatever this is) in current CWD with relative paths
+ROOTDIR="./rootdir"
+KEYDIR="./keys"
+testrun
+
+# run with … and up the game with a strange CWD & absolute paths
+ROOTDIR="${TMPWORKINGDIRECTORY}/rootdir"
+KEYDIR="${TMPWORKINGDIRECTORY}/keys"
+mkdir inaccessible
+cd inaccessible
+chmod 600 ../inaccessible
+testfilestats "${TMPWORKINGDIRECTORY}/inaccessible" '%a' '=' '600'
+
+setupgpgcommand '1'
+testrun
+setupgpgcommand '2'
+testrun
+
+msgmsg 'Tests to be run with' 'asc files'
+rm -f "${ROOTDIR}/etc/apt/apt.conf.d/00gpgcmd"
+testrun 'asc'
+
+msgmsg 'Tests to be run with' 'bad files'
+# don't let the plate be so clean anymore
+cleanplate() {
+ rm -rf "${ROOTDIR}/etc/apt/trusted.gpg.d/" "${ROOTDIR}/etc/apt/trusted.gpg"
+ mkdir "${ROOTDIR}/etc/apt/trusted.gpg.d/"
+ touch "${ROOTDIR}/etc/apt/trusted.gpg.d/emptyfile.gpg"
+ touch "${ROOTDIR}/etc/apt/trusted.gpg.d/emptyfile.asc"
+ echo 'broken' > "${ROOTDIR}/etc/apt/trusted.gpg.d/brokenfile.gpg"
+ echo 'broken' > "${ROOTDIR}/etc/apt/trusted.gpg.d/brokenfile.asc"
+}
+testrun 'gpg' 'testwarning'
diff --git a/test/integration/test-apt-key-net-update b/test/integration/test-apt-key-net-update
new file mode 100755
index 0000000..b9f716e
--- /dev/null
+++ b/test/integration/test-apt-key-net-update
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+changetowebserver
+
+# setup env
+mkdir -p var/lib/apt/keyrings
+mkdir -p usr/share/keyrings
+
+# install the fake master keyring
+install -m0644 keys/test-master-keyring.pub usr/share/keyrings
+echo "APT::Key::MasterKeyring \"${TMPWORKINGDIRECTORY}/usr/share/keyrings/test-master-keyring.pub\";" >> ./aptconfig.conf
+
+# setup archive-keyring
+mkdir -p aptarchive/ubuntu/project
+install -m0644 keys/test-archive-keyring.pub aptarchive/ubuntu/project/
+echo "APT::Key::ArchiveKeyringURI \"http://localhost:${APTHTTPPORT}/ubuntu/project/test-archive-keyring.pub\";" >> ./aptconfig.conf
+echo 'APT::Key::Net-Update-Enabled "1";' >> ./aptconfig.conf
+
+# test against the "real" webserver
+testsuccess aptkey --fakeroot net-update
+testfailure grep 'not added' rootdir/tmp/testsuccess.output
+testaptkeys 'oldarchive' 'newarchive'
+
+# now try a different one
+# setup archive-keyring
+mkdir -p aptarchive/ubuntu/project
+install -m0644 keys/marvinparanoid.pub aptarchive/ubuntu/project/
+echo "APT::Key::ArchiveKeyringURI \"http://localhost:${APTHTTPPORT}/ubuntu/project/marvinparanoid.pub\";" >> ./aptconfig.conf
+echo 'APT::Key::Net-Update-Enabled "1";' >> ./aptconfig.conf
+
+# test against the "real" webserver
+testsuccessequal "Checking for new archive signing keys now
+Key 'DE66AECA9151AFA1877EC31DE8525D47528144E2' not added. It is not signed with a master key" aptkey --fakeroot net-update
+
+testaptkeys 'oldarchive' 'newarchive'
diff --git a/test/integration/test-apt-key-used-in-maintainerscript b/test/integration/test-apt-key-used-in-maintainerscript
new file mode 100755
index 0000000..b5ed327
--- /dev/null
+++ b/test/integration/test-apt-key-used-in-maintainerscript
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+unset APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE
+configarchitecture 'native'
+configdpkgnoopchroot
+
+buildingpkg() {
+ local PKG="$1"
+ shift
+ setupsimplenativepackage "$PKG" 'native' '1' 'unstable' "$@"
+ BUILDDIR="incoming/${PKG}-1"
+ echo '#!/bin/sh
+apt-key list >/dev/null' > "${BUILDDIR}/debian/postinst"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+}
+buildingpkg 'aptkeyuser-nodepends' 'Depends: unrelated'
+buildingpkg 'aptkeyuser-depends' 'Depends: gnupg'
+
+insertinstalledpackage 'unrelated' 'native' '1'
+insertinstalledpackage 'gnupg' 'native' '1'
+testdpkgnotinstalled 'aptkeyuser-depends' 'aptkeyuser-nodepends'
+
+testsuccess apt install ./incoming/aptkeyuser-depends_*.changes -y
+cp rootdir/tmp/testsuccess.output apt.output
+testdpkginstalled 'aptkeyuser-depends'
+testfailure grep '^Warning: This will BREAK' apt.output
+testsuccess grep '^Warning: apt-key' apt.output
+
+testsuccess apt install --with-source ./incoming/aptkeyuser-nodepends_*.changes aptkeyuser-nodepends -y
+cp rootdir/tmp/testsuccess.output apt.output
+testdpkginstalled 'aptkeyuser-nodepends'
+testsuccess grep '^Warning: This will BREAK' apt.output
+testsuccess grep '^Warning: apt-key' apt.output
+
+testsuccess aptkey list
+cp rootdir/tmp/testsuccess.output aptkey.list
+testsuccess grep '^Warning: apt-key' aptkey.list
diff --git a/test/integration/test-apt-mark b/test/integration/test-apt-mark
new file mode 100755
index 0000000..d1c65ad
--- /dev/null
+++ b/test/integration/test-apt-mark
@@ -0,0 +1,158 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'bar' 'amd64,i386' '1'
+insertpackage 'unstable' 'uninstalled' 'all' '1'
+insertpackage 'unstable' 'uninstalled-native' 'amd64' '1'
+
+insertinstalledpackage 'foo' 'all' '1'
+insertinstalledpackage 'bar' 'amd64' '1'
+
+setupaptarchive
+
+testnoautopkg() {
+ testempty aptmark showauto
+ testempty aptcache -q=1 showauto
+ testsuccessequal 'bar
+foo' aptmark showmanual
+ testsuccessequal 'bar
+foo' aptmark showmanual bar foo uninstalled
+}
+testfooisauto() {
+ testsuccessequal 'foo' aptmark showauto
+ testsuccessequal 'foo' aptcache -q=1 showauto
+ testsuccessequal 'foo' aptmark showauto foo
+ testsuccessequal 'foo' aptcache -q=1 showauto foo
+ testsuccessequal 'bar' aptmark showmanual
+ testsuccessequal 'bar' aptmark showmanual bar
+}
+testmarkonpkgasauto() {
+ testsuccess $1 -q=1 $2 foo
+ testfooisauto
+ testsuccess $1 -q=1 $2 foo
+ testfooisauto
+
+ testsuccess $1 -q=1 $3 foo
+ testnoautopkg
+ testsuccess $1 -q=1 $3 foo
+ testnoautopkg
+}
+
+testfailureequal 'E: No packages found' aptmark auto
+testfailureequal 'E: No packages found' aptmark manual
+
+testnoautopkg
+testmarkonpkgasauto 'aptmark' 'auto' 'manual'
+testmarkonpkgasauto 'aptmark' 'markauto' 'unmarkauto'
+testmarkonpkgasauto 'aptget' 'markauto' 'unmarkauto'
+
+testnoholdpkg() {
+ testempty aptmark showhold
+ testempty aptmark showholds # typical "typo"
+}
+testpkgonhold() {
+ testsuccessequal "$1" aptmark showhold
+ testsuccessequal "$1" aptmark showholds
+ testsuccessequal "$1" aptmark showhold $1
+ testsuccessequal "$1" aptmark showholds $1
+}
+testmarkonepkgashold() {
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark unhold $1
+ testnoholdpkg
+ testsuccess aptmark unhold $1
+ testnoholdpkg
+}
+
+testfailureequal 'E: No packages found' aptmark hold
+testfailureequal 'E: No packages found' aptmark unhold
+
+testnoholdpkg
+testmarkonepkgashold 'foo'
+testmarkonepkgashold 'bar'
+
+msgtest 'dpkg supports --merge-avail via' 'stdin'
+if dpkg --merge-avail - < /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip 'dpkg version too old'
+ exit 0
+fi
+
+testmarkonepkgashold 'uninstalled'
+testmarkonepkgashold 'uninstalled-native'
+
+testsuccessequal 'uninstalled set on hold.' aptmark hold uninstalled
+testsuccessequal 'uninstalled-native set on hold.' aptmark hold uninstalled-native
+# FIXME: Remove old alternative answer for dpkg < 1.20.7 post bullseye release
+testequalor2 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ uninstalled uninstalled-native
+The following held packages will be changed:
+ uninstalled uninstalled-native
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst uninstalled (1 unstable [all])
+Inst uninstalled-native (1 unstable [amd64])
+Conf uninstalled (1 unstable [all])
+Conf uninstalled-native (1 unstable [amd64])' 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ uninstalled uninstalled-native
+The following held packages will be changed:
+ uninstalled-native
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst uninstalled (1 unstable [all])
+Inst uninstalled-native (1 unstable [amd64])
+Conf uninstalled (1 unstable [all])
+Conf uninstalled-native (1 unstable [amd64])' aptget install uninstalled uninstalled-native -s
+testsuccess aptmark unhold uninstalled uninstalled-native
+
+testselections() {
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark unhold "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark install "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+ testsuccess aptmark remove "$1"
+ testsuccessequal "$1" aptmark showremoves "$1"
+ testsuccess aptmark purge "$1"
+ testsuccessequal "$1" aptmark showpurges "$1"
+}
+testselections 'foo'
+testselections 'bar'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ bar* foo*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg bar [1]
+Purg foo [1]' aptget dselect-upgrade -s
+
+testuninstalledselections() {
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark unhold "$1"
+ testsuccessequal "$1" aptmark showremoves "$1"
+ testsuccess aptmark hold "$1"
+ testsuccessequal "$1" aptmark showholds "$1"
+ testsuccess aptmark install "$1"
+ testsuccessequal "$1" aptmark showinstalls "$1"
+}
+testuninstalledselections 'uninstalled'
+testuninstalledselections 'uninstalled-native'
diff --git a/test/integration/test-apt-move-and-forget-manual-sections b/test/integration/test-apt-move-and-forget-manual-sections
new file mode 100755
index 0000000..ab90be0
--- /dev/null
+++ b/test/integration/test-apt-move-and-forget-manual-sections
@@ -0,0 +1,74 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+aptconfig dump --no-empty --format '%v%n' APT::Move-Autobit-Sections > move-autobit.sections
+testsuccess grep '^oldlibs$' move-autobit.sections
+
+buildsimplenativepackage 'libabc' 'native' '1' 'stable' '' '' 'libs'
+buildsimplenativepackage 'libabc' 'native' '2' 'unstable' 'Depends: libdef' '' 'oldlibs'
+buildsimplenativepackage 'libzoo' 'native' '1' 'stable' '' '' 'libs'
+buildsimplenativepackage 'libzoo' 'native' '2' 'unstable' 'Depends: libdef' '' 'non-free/oldlibs'
+buildsimplenativepackage 'libdef' 'native' '1' 'unstable' '' '' 'libs'
+setupaptarchive
+
+testmarkedauto
+testmarkedmanual
+
+msgmsg 'Move bit on install of replacement'
+testsuccess aptget install libabc/stable -y
+testdpkginstalled 'libabc'
+testdpkgnotinstalled 'libdef' 'libzoo'
+
+testmarkedmanual 'libabc'
+testmarkedauto
+
+testsuccess aptget dist-upgrade -y
+testdpkginstalled 'libabc' 'libdef'
+
+testmarkedauto 'libabc'
+testmarkedmanual 'libdef'
+
+testsuccess apt autopurge -y
+testdpkgnotinstalled 'libabc' 'libzoo'
+
+msgmsg 'Do not move bit if replacement is already installed'
+testsuccess aptget install libzoo/stable -y
+testdpkginstalled 'libzoo'
+
+testmarkedmanual 'libzoo' 'libdef'
+testmarkedauto
+
+testsuccess aptmark auto libdef
+testmarkedauto 'libdef'
+
+testsuccess aptget dist-upgrade -y
+testdpkginstalled 'libzoo' 'libdef'
+
+testmarkedmanual 'libzoo'
+testmarkedauto 'libdef'
+
+testsuccess apt autopurge -y libzoo-
+testdpkgnotinstalled 'libabc' 'libzoo' 'libdef'
+
+msgmsg 'Move bit on install of replacement (subsection)'
+testfailure grep '^non-free/oldlibs$' move-autobit.sections
+testsuccess aptget install libzoo/stable -y
+testdpkginstalled 'libzoo'
+testdpkgnotinstalled 'libdef' 'libabc'
+
+testmarkedmanual 'libzoo'
+testmarkedauto
+
+testsuccess aptget dist-upgrade -y
+testdpkginstalled 'libzoo' 'libdef'
+
+testmarkedauto 'libzoo'
+testmarkedmanual 'libdef'
+
+testsuccess apt autopurge -y
+testdpkgnotinstalled 'libabc' 'libzoo'
diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections
new file mode 100755
index 0000000..b47966e
--- /dev/null
+++ b/test/integration/test-apt-never-markauto-sections
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+aptconfig dump --no-empty --format '%v%n' APT::Never-MarkAuto-Sections > nevermarkauto.sections
+testsuccess grep '^metapackages$' nevermarkauto.sections
+testfailure grep '^universe/metapackages$' nevermarkauto.sections
+
+buildsimplenativepackage 'mydesktop' 'all' '1' 'unstable' 'Depends: mydesktop-core, foreignpkg
+Recommends: notavailable' '' 'metapackages'
+buildsimplenativepackage 'mydesktop-core' 'amd64' '1' 'unstable' 'Depends: bad-texteditor | texteditor, browser (>= 42), nosection, foreignpkg
+Recommends: notavailable
+Multi-Arch: foreign' '' 'universe/metapackages'
+buildsimplenativepackage 'browser' 'amd64' '41' 'stable'
+buildsimplenativepackage 'browser' 'amd64' '42' 'unstable'
+buildsimplenativepackage 'texteditor' 'amd64' '1' 'stable'
+buildsimplenativepackage 'bad-texteditor' 'amd64' '1' 'stable' 'Depends: texteditor
+Conflicts: mydesktop-core'
+buildsimplenativepackage 'nosection' 'amd64' '1' 'stable' '' '' '<none>'
+buildsimplenativepackage 'foreignpkg' 'i386' '1' 'stable' 'Multi-Arch: foreign'
+setupaptarchive
+
+testsuccess aptcache show nosection
+testfailure grep 'Section' rootdir/tmp/testsuccess.output
+testempty aptmark showmanual
+
+testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+
+testmarkedmanual 'mydesktop'
+testmarkedauto 'mydesktop-core' 'foreignpkg:i386' 'texteditor' 'browser' 'nosection'
+
+# if the remove is from a user, don't do manual-bit passing
+testequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ browser foreignpkg:i386 mydesktop mydesktop-core nosection texteditor
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
+Remv mydesktop [1]
+Remv mydesktop-core [1]
+Remv browser [42]
+Remv foreignpkg:i386 [1]
+Remv nosection [1]
+Remv texteditor [1]' aptget autoremove mydesktop -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ mydesktop mydesktop-core texteditor
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv mydesktop [1]
+Remv mydesktop-core [1]
+Remv texteditor [1]' aptget autoremove texteditor -s #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
+testsuccess aptget autoremove texteditor -y
+
+testdpkgnotinstalled mydesktop mydesktop-core texteditor
+testdpkginstalled browser
+
+testmarkedmanual 'browser' 'foreignpkg:i386' 'nosection'
+testmarkedauto
+
+# test that installed/upgraded auto-pkgs are not set to manual
+
+testsuccess aptget install browser=41 -y --allow-downgrades
+
+testmarkedmanual 'browser' 'foreignpkg:i386' 'nosection'
+testmarkedauto
+testsuccess aptmark auto browser
+testmarkedauto 'browser'
+testsuccess aptmark auto nosection
+testmarkedauto 'browser' 'nosection'
+testmarkedmanual 'foreignpkg:i386'
+
+testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+
+testmarkedmanual 'foreignpkg:i386' 'mydesktop'
+testmarkedauto 'browser' 'mydesktop-core' 'texteditor' 'nosection'
diff --git a/test/integration/test-apt-patterns b/test/integration/test-apt-patterns
new file mode 100755
index 0000000..85370ae
--- /dev/null
+++ b/test/integration/test-apt-patterns
@@ -0,0 +1,284 @@
+#!/bin/sh
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'available' 'all' '1.0' 'Section: asection'
+
+insertinstalledpackage 'manual1' 'i386' '1.0' 'Depends: automatic1'
+insertinstalledpackage 'manual2' 'i386' '1.0'
+
+insertinstalledpackage 'automatic1' 'i386' '1.0' 'Source: automatic (0)'
+insertinstalledpackage 'automatic2' 'i386' '1.0' 'Source: automatic (1)'
+
+insertinstalledpackage 'essential' 'i386' '1.0' 'Essential: yes
+Section: asection'
+insertinstalledpackage 'required' 'i386' '1.0' 'Priority: required'
+insertinstalledpackage 'conf-only' 'i386' '1.0' '' '' 'deinstall ok config-files'
+insertinstalledpackage 'broken' 'i386' '1.0' 'Depends: does-not-exist'
+
+insertinstalledpackage 'not-obsolete' 'i386' '1.0'
+insertpackage 'unstable' 'not-obsolete' 'all' '2.0'
+
+insertpackage 'unstable' 'foreign' 'amd64' '2.0'
+
+getoriginfromsuite() { echo -n 'meow'; }
+setupaptarchive
+
+cat >> rootdir/var/lib/dpkg/status <<EOF
+
+Package: notinstalled
+Status: hold ok not-installed
+Architecture: amd64
+
+Package: nosection
+Status: install ok installed
+Architecture: amd64
+Version: 29
+EOF
+
+testsuccess aptmark auto automatic1 automatic2
+
+msgmsg "Check that commands understand patterns"
+
+testfailureequal "E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
+ ?not-a-pattern
+ ^^^^^^^^^^^^^^
+N: Unable to locate package ?not-a-pattern
+E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
+ ?not-a-pattern
+ ^^^^^^^^^^^^^^
+N: Unable to locate package ?not-a-pattern
+E: No packages found" apt show '?not-a-pattern'
+
+testfailureequal "Listing...
+E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
+ ?not-a-pattern
+ ^^^^^^^^^^^^^^" apt list '?not-a-pattern'
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+E: input:0-14: error: Unrecognized pattern '?not-a-pattern'
+ ?not-a-pattern
+ ^^^^^^^^^^^^^^
+E: Unable to locate package ?not-a-pattern" apt install -s '?not-a-pattern'
+
+
+msgmsg "Ensure that argument lists are present where needed, and absent elsewhere"
+
+testfailureequal "Listing...
+E: input:0-7: error: ?true does not expect an argument list
+ ?true()
+ ^^^^^^^" apt list '?true()'
+testfailureequal "Listing...
+E: input:0-4: error: ?and expects an argument list
+ ?and
+ ^^^^" apt list '?and'
+testfailureequal "Listing...
+E: input:0-3: error: ?or expects an argument list
+ ?or
+ ^^^" apt list '?or'
+
+
+msgmsg "Basic logic: true, false, not, ?or, ?and"
+for pattern in '?true' '?not(?false)'; do
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]
+available/unstable 1.0 all
+broken/now 1.0 i386 [installed,local]
+conf-only/now 1.0 i386 [residual-config]
+essential/now 1.0 i386 [installed,local]
+foreign/unstable 2.0 amd64
+manual1/now 1.0 i386 [installed,local]
+manual2/now 1.0 i386 [installed,local]
+nosection/now 29 amd64 [installed,local]
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+required/now 1.0 i386 [installed,local]" apt list "$pattern"
+done
+testsuccessequal "Listing..." apt list '?false'
+testsuccessequal "Listing..." apt list '?not(?true)'
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]
+manual1/now 1.0 i386 [installed,local]
+manual2/now 1.0 i386 [installed,local]" apt list '?or(?name(^automatic),?name(^manual))'
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]" apt list '?and(?name(^automatic),?name(1$))'
+
+
+msgmsg "Narrow and friends"
+testsuccessequal "Listing...
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list '?and(?version(^1\.0$),?version(^2\.0$))'
+
+testsuccessequal "Listing..." apt list '?any-version(?and(?version(^1\.0$),?version(^2\.0$)))'
+testsuccessequal "Listing..." apt list '?narrow(?version(^1\.0$),?version(^2\.0$))'
+
+# XXX FIXME: I guess we do want this to only show version 1.0?
+testsuccessequal "Listing...
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list '?any-version(?and(?version(^1\.0$),?name(not-obsolete)))'
+testsuccessequal "Listing...
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list '?narrow(?version(^1\.0$),?name(not-obsolete))'
+
+
+testsuccessequal "Listing...
+foreign/unstable 2.0 amd64
+nosection/now 29 amd64 [installed,local]
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?not(?all-versions(?version(^1)))'
+
+msgmsg "Package patterns"
+
+testsuccessequal "Listing...
+foreign/unstable 2.0 amd64
+nosection/now 29 amd64 [installed,local]" apt list '?architecture(amd64)'
+
+# XXX FIXME We should have support for foreign and native
+testsuccessequal "Listing..." apt list '?architecture(foreign)'
+testsuccessequal "Listing..." apt list '?architecture(native)'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+foreign/unstable 2.0 amd64
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?archive(^unstable$)'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+foreign/unstable 2.0 amd64
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?codename(^sid$)'
+
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]" apt list '?automatic'
+
+testsuccessequal "Listing...
+broken/now 1.0 i386 [installed,local]" apt list '?broken'
+
+testsuccessequal "Listing...
+conf-only/now 1.0 i386 [residual-config]" apt list '?config-files'
+
+testsuccessequal "Listing...
+essential/now 1.0 i386 [installed,local]" apt list '?essential'
+
+testsuccessequal "Listing...
+required/now 1.0 i386 [installed,local]" apt list '?priority(required)'
+
+testsuccessequal "Listing..." apt list '?exact-name(automatic)'
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]" apt list '?exact-name(automatic1)'
+
+testsuccessequal "Listing...
+automatic2/now 1.0 i386 [installed,local]" apt list '?garbage'
+
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]
+broken/now 1.0 i386 [installed,local]
+essential/now 1.0 i386 [installed,local]
+manual1/now 1.0 i386 [installed,local]
+manual2/now 1.0 i386 [installed,local]
+nosection/now 29 amd64 [installed,local]
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+required/now 1.0 i386 [installed,local]" apt list '?installed'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+conf-only/now 1.0 i386 [residual-config]
+foreign/unstable 2.0 amd64" apt list '?not(?installed)'
+
+testsuccessequal "Listing...
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list '?installed?exact-name(not-obsolete)?version(2.0)'
+
+testsuccessequal "Listing..." apt list '?narrow(?installed?exact-name(not-obsolete)?version(2.0))'
+
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]" apt list '?name(^automatic)'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+conf-only/now 1.0 i386 [residual-config]
+foreign/unstable 2.0 amd64
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?not(?obsolete)'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+foreign/unstable 2.0 amd64
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?origin(^meow$)'
+
+testsuccessequal "Listing...
+available/unstable 1.0 all
+essential/now 1.0 i386 [installed,local]" apt list '?section(asection)'
+
+testsuccessequal 'Listing...
+essential/now 1.0 i386 [installed,local]' apt list '~i !~M (~slibs|~sasection)'
+
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]" apt list '?source-package(^automatic$)'
+
+testsuccessequal "Listing...
+automatic2/now 1.0 i386 [installed,local]" apt list '?source-version(^1$)'
+
+testsuccessequal "Listing...
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list '?upgradable'
+
+testsuccessequal "Listing...
+foreign/unstable 2.0 amd64
+not-obsolete/unstable 2.0 i386 [upgradable from: 1.0]" apt list '?version(2.0)'
+
+testsuccessequal "Package: does-not-exist
+State: not a real package (virtual)
+Package: notinstalled:amd64
+State: not a real package (virtual)
+N: Can't select candidate version from package does-not-exist as it has no candidate
+N: Can't select candidate version from package notinstalled:amd64 as it has no candidate
+N: Can't select versions from package 'does-not-exist' as it is purely virtual
+N: Can't select versions from package 'notinstalled:amd64' as it is purely virtual
+N: No packages found" apt show '?virtual'
+
+testsuccessequal "Listing..." apt list '?x-name-fnmatch(1)'
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+manual1/now 1.0 i386 [installed,local]" apt list '?x-name-fnmatch(*1)'
+
+
+# * wildcards should still work
+testsuccessequal "Listing...
+automatic1/now 1.0 i386 [installed,local]
+automatic2/now 1.0 i386 [installed,local]" apt list 'automatic*'
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Note, selecting 'automatic1' for glob 'automatic*'
+Note, selecting 'automatic2' for glob 'automatic*'
+automatic1 is already the newest version (1.0).
+automatic1 set to manually installed.
+automatic2 is already the newest version (1.0).
+automatic2 set to manually installed.
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ broken : Depends: does-not-exist but it is not installable
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." apt install -s 'automatic*'
+
+# other wildcards should fail
+
+testfailureequal "Listing...
+E: input:0-10: error: Expected pattern
+ automatic?
+ ^^^^^^^^^^" apt list 'automatic?'
+
+
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+E: Unable to locate package automatic?" apt install -s 'automatic?'
diff --git a/test/integration/test-apt-progress-fd b/test/integration/test-apt-progress-fd
new file mode 100755
index 0000000..4c19a7b
--- /dev/null
+++ b/test/integration/test-apt-progress-fd
@@ -0,0 +1,80 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64' '0.1' 'stable'
+buildsimplenativepackage 'testing' 'amd64' '0.8.15' 'stable'
+buildsimplenativepackage 'testing2' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive
+
+# install native
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.1 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Preparing testing (amd64)
+pmstatus:testing:20.0000:Unpacking testing (amd64)
+pmstatus:testing:40.0000:Installing testing (amd64)
+pmstatus:dpkg-exec:40.0000:Running dpkg
+pmstatus:testing:40.0000:Preparing to configure testing (amd64)
+pmstatus:testing:60.0000:Configuring testing (amd64)
+pmstatus:testing:80.0000:Installed testing (amd64)'
+
+# upgrade
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.8.15 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Preparing testing (amd64)
+pmstatus:testing:20.0000:Unpacking testing (amd64)
+pmstatus:testing:40.0000:Installing testing (amd64)
+pmstatus:dpkg-exec:40.0000:Running dpkg
+pmstatus:testing:40.0000:Preparing to configure testing (amd64)
+pmstatus:testing:60.0000:Configuring testing (amd64)
+pmstatus:testing:80.0000:Installed testing (amd64)'
+
+# reinstall
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.8.15 --reinstall -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Preparing testing (amd64)
+pmstatus:testing:20.0000:Unpacking testing (amd64)
+pmstatus:testing:40.0000:Installing testing (amd64)
+pmstatus:dpkg-exec:40.0000:Running dpkg
+pmstatus:testing:40.0000:Preparing to configure testing (amd64)
+pmstatus:testing:60.0000:Configuring testing (amd64)
+pmstatus:testing:80.0000:Installed testing (amd64)'
+
+# and remove
+exec 3> apt-progress.log
+testsuccess aptget remove testing -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing:0.0000:Preparing for removal of testing (amd64)
+pmstatus:testing:33.3333:Removing testing (amd64)
+pmstatus:testing:66.6667:Removing testing (amd64)
+pmstatus:dpkg-exec:66.6667:Running dpkg'
+
+# install non-native and ensure we get proper progress info
+exec 3> apt-progress.log
+testsuccess aptget install testing2:i386 -y -o APT::Status-Fd=3
+testfileequal './apt-progress.log' 'dlstatus:1:0.0000:Retrieving file 1 of 1
+dlstatus:1:100.0000:Retrieving file 1 of 1
+pmstatus:dpkg-exec:0.0000:Running dpkg
+pmstatus:testing2:0.0000:Preparing testing2 (i386)
+pmstatus:testing2:20.0000:Unpacking testing2 (i386)
+pmstatus:testing2:40.0000:Installing testing2 (i386)
+pmstatus:dpkg-exec:40.0000:Running dpkg
+pmstatus:testing2:40.0000:Preparing to configure testing2 (i386)
+pmstatus:testing2:60.0000:Configuring testing2 (i386)
+pmstatus:testing2:80.0000:Installed testing2 (i386)'
+
+rm -f apt-progress*.log
diff --git a/test/integration/test-apt-progress-fd-conffile b/test/integration/test-apt-progress-fd-conffile
new file mode 100755
index 0000000..9fb6fbe
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-conffile
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+# old conffile
+setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable'
+BUILDDIR='incoming/compiz-core-1.0'
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo=bar;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+# new conffile
+setupsimplenativepackage 'compiz-core' 'native' '2.0' 'unstable'
+BUILDDIR='incoming/compiz-core-2.0'
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo2=bar2;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+testsuccess aptget install compiz-core=1.0
+
+# fake conffile change
+echo 'meep' >> rootdir/etc/compiz.conf/compiz.conf
+
+# FIXME: Is there really no way to see if dpkg actually prompts?
+msgtest 'Test for successful execution of' 'apt-get install compiz-core=2.0'
+exec 3> apt-progress.log
+testsuccess --nomsg aptget install compiz-core=2.0 -o APT::Status-Fd=3 -o Dpkg::Use-Pty=false -o dpkg::options::='--force-confold'
+
+# and ensure there is a conffile message in the file
+msgtest 'Test status fd for an included' 'pmconffile msg'
+testsuccess --nomsg grep "pmconffile:/etc/compiz.conf/compiz.conf" apt-progress.log
diff --git a/test/integration/test-apt-progress-fd-deb822 b/test/integration/test-apt-progress-fd-deb822
new file mode 100755
index 0000000..dd66e28
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-deb822
@@ -0,0 +1,58 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'testing' 'amd64' '0.1' 'stable'
+buildsimplenativepackage 'testing' 'all' '0.8.15' 'stable'
+buildsimplenativepackage 'testing2' 'amd64,i386' '0.8.15' 'stable'
+setupaptarchive
+
+# install native
+exec 3> apt-progress.log
+testsuccess aptget install testing=0.1 -y -o APT::Status-deb822-Fd=3
+
+testfileequal './apt-progress.log' 'Status: progress
+Percent: 0.0000
+Message: Running dpkg
+
+Status: progress
+Package: testing:amd64
+Percent: 0.0000
+Message: Preparing testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 20.0000
+Message: Unpacking testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 40.0000
+Message: Installing testing (amd64)
+
+Status: progress
+Percent: 40.0000
+Message: Running dpkg
+
+Status: progress
+Package: testing:amd64
+Percent: 40.0000
+Message: Preparing to configure testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 60.0000
+Message: Configuring testing (amd64)
+
+Status: progress
+Package: testing:amd64
+Percent: 80.0000
+Message: Installed testing (amd64)
+'
+
+rm -f apt-progress*.log
diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error
new file mode 100755
index 0000000..39c1053
--- /dev/null
+++ b/test/integration/test-apt-progress-fd-error
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+mkdir -p usr/bin
+touch usr/bin/file-conflict
+
+buildsimplenativepackage 'foo1' 'native' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/'
+buildsimplenativepackage 'foo2' 'native' '0.8.15' 'stable' '' 'pkg with file conflicts' '' '' 'usr/'
+insertinstalledpackage 'apport' 'native' '1'
+
+setupaptarchive
+
+exec 3> apt-progress.log
+testfailure aptget install foo1 foo2 -y -o APT::Status-Fd=3
+msgtest 'Ensure correct error message' 'file-conflict'
+testsuccess --nomsg grep "foo2_0.8.15_[^.]\+.deb:[0-9.]\+:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log
+
+testsuccess test -s rootdir/var/crash/foo2.0.crash
+testsuccess grep '^Package: foo2 0.8.15$' rootdir/var/crash/foo2.0.crash
diff --git a/test/integration/test-apt-redirect-loop b/test/integration/test-apt-redirect-loop
new file mode 100755
index 0000000..e1a8aee
--- /dev/null
+++ b/test/integration/test-apt-redirect-loop
@@ -0,0 +1,20 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+echo 'alright' > aptarchive/working
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme3/' '/redirectme/'
+webserverconfig 'aptwebserver::redirect::replace::/redirectme2/' '/redirectme3/'
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' '/redirectme2/'
+
+testfailure apthelper download-file "http://localhost:${APTHTTPPORT}/redirectme/working" httpfile
+testsuccess grep 'Redirection loop encountered' rootdir/tmp/testfailure.output
+
+testfailure apthelper download-file "https://localhost:${APTHTTPSPORT}/redirectme/working" httpsfile
+testsuccess grep 'Redirection loop encountered' rootdir/tmp/testfailure.output
diff --git a/test/integration/test-apt-showlist-orgroup-in-recommends b/test/integration/test-apt-showlist-orgroup-in-recommends
new file mode 100755
index 0000000..a03c367
--- /dev/null
+++ b/test/integration/test-apt-showlist-orgroup-in-recommends
@@ -0,0 +1,200 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# simple case
+insertinstalledpackage 'aaa' 'all' '1'
+insertinstalledpackage 'ddd' 'all' '1'
+insertpackage 'unstable' 'aaa' 'all' '1'
+insertpackage 'unstable' 'ddd' 'all' '1'
+insertpackage 'unstable' 'yyy' 'all' '1'
+insertpackage 'unstable' 'zzz' 'all' '1:1'
+insertpackage 'unstable' 'simple' 'all' '1' 'Recommends: aaa, bbb
+Suggests: ccc, ddd'
+insertpackage 'unstable' 'orgroup' 'all' '1' 'Recommends: aaa | bbb
+Suggests: ccc | ddd'
+insertpackage 'unstable' 'orgroup2' 'all' '1' 'Recommends: xxx | yyy
+Suggests: yyy | zzz'
+insertpackage 'unstable' 'orgroup3' 'all' '1' 'Recommends: xxx | yyy
+Suggests: yyy | zzz'
+insertpackage 'unstable' 'orgroup4' 'all' '1' 'Recommends: xxx
+Suggests: zzz'
+insertpackage 'unstable' 'versionedor' 'all' '1' 'Recommends: aaa (>> 2) | bbb
+Suggests: ccc | ddd (>> 2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ bbb
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple -s --install-recommends --install-suggests
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ bbb
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc
+Recommended packages:
+ aaa bbb
+The following packages will be REMOVED:
+ aaa
+The following NEW packages will be installed:
+ simple
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv aaa [1]
+Inst simple (1 unstable [all])
+Conf simple (1 unstable [all])' aptget install simple aaa- -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ orgroup
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup (1 unstable [all])
+Conf orgroup (1 unstable [all])' aptget install orgroup -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ aaa | bbb
+The following packages will be REMOVED:
+ aaa
+The following NEW packages will be installed:
+ orgroup
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv aaa [1]
+Inst orgroup (1 unstable [all])
+Conf orgroup (1 unstable [all])' aptget install orgroup aaa- -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz
+Recommended packages:
+ xxx | yyy
+The following NEW packages will be installed:
+ orgroup2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])' aptget install orgroup2 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz
+Recommended packages:
+ xxx | yyy
+The following NEW packages will be installed:
+ orgroup2 orgroup3
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup3 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup3 (1 unstable [all])' aptget install orgroup2 orgroup3 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy | zzz zzz
+Recommended packages:
+ xxx | yyy xxx
+The following NEW packages will be installed:
+ orgroup2 orgroup4
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])' aptget install orgroup2 orgroup4 -s --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ yyy (1)
+ | zzz (1:1)
+ zzz (1:1)
+Recommended packages:
+ xxx
+ | yyy (1)
+ xxx
+The following NEW packages will be installed:
+ orgroup2 (1)
+ orgroup4 (1)
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])' aptget install orgroup2 orgroup4 -s -V --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ zzz (1:1)
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup2 (1)
+ orgroup4 (1)
+ yyy (1)
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup2 (1 unstable [all])
+Inst orgroup4 (1 unstable [all])
+Inst yyy (1 unstable [all])
+Conf orgroup2 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])
+Conf yyy (1 unstable [all])' aptget install orgroup2 orgroup4 yyy -s -V --no-install-recommends
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ ccc | ddd
+Recommended packages:
+ aaa | bbb
+The following NEW packages will be installed:
+ versionedor
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst versionedor (1 unstable [all])
+Conf versionedor (1 unstable [all])' aptget install versionedor -s --no-install-recommends
+
+SHOWSUGGEST='Reading package lists...
+Building dependency tree...
+Suggested packages:
+ zzz
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup4
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup4 (1 unstable [all])
+Conf orgroup4 (1 unstable [all])'
+INSTSUGGEST='Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ zzz
+Recommended packages:
+ xxx
+The following NEW packages will be installed:
+ orgroup4 zzz
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst orgroup4 (1 unstable [all])
+Inst zzz (1:1 unstable [all])
+Conf orgroup4 (1 unstable [all])
+Conf zzz (1:1 unstable [all])'
+testsuccessequal "$SHOWSUGGEST" aptget install orgroup4 -s
+testsuccessequal "$INSTSUGGEST" aptget install orgroup4 --install-suggests -s
+echo 'Binary::apt-get::APT::Install-Suggests "true";' > rootdir/etc/apt/apt.conf.d/99binaryspecific.conf
+testsuccessequal "$INSTSUGGEST" aptget install orgroup4 -s
+testsuccessequal "$SHOWSUGGEST" apt install orgroup4 -s
+testsuccessequal "$SHOWSUGGEST" aptget install orgroup4 -s --no-install-suggests
diff --git a/test/integration/test-apt-source-and-build-dep b/test/integration/test-apt-source-and-build-dep
new file mode 100755
index 0000000..a089d62
--- /dev/null
+++ b/test/integration/test-apt-source-and-build-dep
@@ -0,0 +1,250 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# we need to insert a package into "unstable" so that a Release file is
+# create for the test
+insertpackage 'wheezy' 'build-essential' 'all' '1.0'
+
+# a "normal" package with source and binary
+insertpackage 'unstable' 'foo' 'all' '2.0'
+insertsource 'unstable' 'foo' 'all' '2.0'
+insertpackage 'unstable' 'foo-common' 'all' '2.0' 'Source: foo (2.0)'
+insertpackage 'experimental' 'foo' 'all' '5' 'Depends: foo-common (= 5)'
+insertpackage 'experimental' 'foo-common' 'all' '5' 'Source: foo (5)'
+insertsource 'experimental' 'foo-source' 'all' '42' 'Build-Depends: foo (= 5), baz'
+
+# binary packages with Source-field
+insertpackage 'unstable,testing' 'bin' 'i386' '3-2+b1' 'Source: bin (3-2)'
+insertsource 'unstable,testing' 'bin' 'any' '3-2'
+insertpackage 'stable' 'bin' 'i386' '2-2+b1' 'Source: bin-backport (2-2)'
+insertsource 'stable' 'bin-backport' 'any' '2-2'
+
+# its possible to have multiple src versions in the sources file, ensure
+# to pick the correct one in this case (bts #731853)
+insertsource 'stable' 'foo' 'all' '1.5'
+insertsource 'stable' 'foo' 'all' '0.5'
+insertpackage 'stable' 'foo' 'all' '1.0'
+insertsource 'stable' 'foo' 'all' '1.0'
+
+# these packages exists only as sources, add two versions to ensure that
+# apt will pick the higher version number (bts #731853)
+insertsource 'wheezy' 'foo' 'all' '0.0.1'
+insertsource 'wheezy' 'foo' 'all' '0.1'
+
+# the order of these versions is chosen to ensure that
+# * apt will pick the one in the correct release, despite a higher version coming later and
+# * apt will pick the highest version in a release, despite a lower version coming later.
+# (bts #746412)
+insertsource 'stable' 'baz' 'all' '1.0'
+insertsource 'unstable' 'baz' 'all' '2.0'
+insertsource 'unstable' 'baz' 'all' '1.5'
+insertpackage 'unstable' 'baz' 'all' '2.0'
+insertpackage 'experimental' 'baz' 'all' '5.0'
+
+# ensure we really have the situation we wanted (first 2.0 is foo above)
+testequal 'Version: 2.0
+Version: 3-2
+Version: 2.0
+Version: 1.5' grep '^Version:' aptarchive/dists/unstable/main/source/Sources
+
+insertsource 'stable' 'bar' 'any' '1.1' 'Vcs-Browser: https://anonscm.debian.org/cgit/bar/bar.git
+Vcs-Git: git://anonscm.debian.org/bar/bar.git -b debian/experimental'
+
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+# normal operation gets highest version number
+HEADER='Reading package lists...'
+DOWNLOAD1="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 11 SHA256:ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7
+'file:${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 14 SHA256:f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239"
+DOWNLOAD2="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 11 SHA256:0fcb803ffbeef26db884625aaf06e75f3eda5c994634980e7c20fd37ed1fc104
+'file:${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 14 SHA256:ca9b0b828ca22372502af2b80f61f0bd9063910ece9fc34eeaf9d9e31aa8195a"
+DOWNLOAD3="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/baz_1.0.dsc' baz_1.0.dsc 11 SHA256:322245f56092b466801dda62d79c8687bba9724af6d16d450d655d29e41d3d7b
+'file:${APTARCHIVE}/baz_1.0.tar.gz' baz_1.0.tar.gz 14 SHA256:0870bc73164ff5ba1f52153fdcb48e140137f9c7c122d57592cea136a57f73c0"
+DOWNLOAD4="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/baz_2.0.dsc' baz_2.0.dsc 11 SHA256:47d062d29070b3f592d1c8aed8c1e7913804bbb67ca1d64877c8219dac5e0420
+'file:${APTARCHIVE}/baz_2.0.tar.gz' baz_2.0.tar.gz 14 SHA256:11c1b202c94a64ab6433d9f0ed5515fce1dc7b20e6bcf51cec9ef8b9455f5a41"
+testsuccessequal "$HEADER
+$DOWNLOAD2" apt source -q --print-uris foo
+testsuccessequal "$HEADER
+$DOWNLOAD2" apt source -q --print-uris foo foo
+getbuilddep() {
+ echo 'Reading package lists...'
+ if [ -n "$2" ]; then
+ echo "$2"
+ fi
+ echo "${1} has no build depends.
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-essential
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst build-essential (1.0 wheezy [all])
+Conf build-essential (1.0 wheezy [all])"
+}
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s
+
+# select by release: suite
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for foo
+$DOWNLOAD1" apt source -q --print-uris foo/stable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo/stable -s
+testsuccessequal "$HEADER
+Selected version '2.0' (unstable) for foo
+$DOWNLOAD2" apt source -q --print-uris foo/unstable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo/unstable -s
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for foo
+$DOWNLOAD1" apt source -q --print-uris foo -t stable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo -t stable -s
+testsuccessequal "$HEADER
+Selected version '2.0' (unstable) for foo
+$DOWNLOAD2" apt source -q --print-uris foo -t unstable
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo -t unstable -s
+testsuccessequal "$HEADER
+Selected version '1.0' (stable) for baz
+$DOWNLOAD3" apt source -q --print-uris baz -t stable
+testsuccessequal "$(getbuilddep 'baz' "Selected version '1.0' (stable) for baz")" apt build-dep baz -t stable -s
+
+# select by release: codename
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for foo
+$DOWNLOAD2" apt source -q --print-uris foo/sid
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo/sid -s
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for foo
+$DOWNLOAD2" apt source -q --print-uris foo -t sid
+testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo -t sid -s
+testsuccessequal "$HEADER
+Selected version '2.0' (sid) for baz
+$DOWNLOAD4" apt source -q --print-uris baz -t sid
+testsuccessequal "$(getbuilddep 'baz' "Selected version '2.0' (sid) for baz")" apt build-dep baz -t sid -s
+
+# select by version
+testsuccessequal "$HEADER
+$DOWNLOAD1" apt source -q --print-uris foo=1.0
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=1.0 -s
+
+# select by release with no binary package (Bug#731102) but ensure to get
+# highest version
+DOWNLOAD01="Need to get 0 B/25 B of source archives.
+'file:${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 11 SHA256:72af24b0290fe1d13a3e25fddd2633e43c87ff79d249bc850009e47bcce73565
+'file:${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 14 SHA256:ec748ad88a71f98bfdc012e1a7632377d05fe3ebbf9c0922e0691fe4d79c0585"
+testsuccessequal "$HEADER
+Selected version '0.1' (wheezy) for foo
+$DOWNLOAD01" apt source -q --print-uris foo/wheezy
+testsuccessequal "$(getbuilddep 'foo' "Selected version '0.1' (wheezy) for foo")" apt build-dep foo/wheezy -s
+
+# unavailable one
+testfailureequal "$HEADER
+E: Can not find version '9.9-not-there' of package 'foo'
+E: Unable to find a source package for foo" apt source -q --print-uris foo=9.9-not-there
+testfailureequal "Reading package lists...
+E: Can not find version '9.9-not-there' of package 'foo'
+E: Unable to find a source package for foo=9.9-not-there" apt build-dep -s foo=9.9-not-there
+
+# version and release
+DOWNLOAD001="Need to get 0 B/29 B of source archives.
+'file:${APTARCHIVE}/foo_0.0.1.dsc' foo_0.0.1.dsc 13 SHA256:649dfe03bbb70cebdfe7c6bf9036f9f2472510b8f52e823bdf5ade362ebaa76f
+'file:${APTARCHIVE}/foo_0.0.1.tar.gz' foo_0.0.1.tar.gz 16 SHA256:ab7ba789d178362ecc808e49705e2338988a7f5b9410ec11a6c9555c017de907"
+testsuccessequal "$HEADER
+$DOWNLOAD001" apt source -q --print-uris -t unstable foo=0.0.1
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=0.0.1 -s
+
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+Fetch source foo" apt source -q -s foo
+testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s
+
+testfailureequal 'E: Must specify at least one package to fetch source for' apt source
+testfailureequal 'E: Must specify at least one package to check builddeps for' apt build-dep
+
+testsuccessequal "Reading package lists...
+NOTICE: 'bar' packaging is maintained in the 'Git' version control system at:
+git://anonscm.debian.org/bar/bar.git -b debian/experimental
+Please use:
+git clone git://anonscm.debian.org/bar/bar.git -b debian/experimental
+to retrieve the latest (possibly unreleased) updates to the package.
+Need to get 0 B/25 B of source archives.
+Fetch source bar" apt source bar -s
+testsuccessequal "$(getbuilddep 'bar')" apt build-dep bar -s
+
+testsuccessequal "$HEADER
+Need to get 0 B/25 B of source archives.
+Fetch source bin" apt source bin -s -q
+testsuccessequal "$(getbuilddep 'bin')" apt build-dep bin -s
+testsuccessequal "$HEADER
+Selected version '3-2' (unstable) for bin
+Need to get 0 B/25 B of source archives.
+Fetch source bin" apt source bin/unstable -s -q
+testsuccessequal "$(getbuilddep 'bin' "Selected version '3-2' (unstable) for bin")" apt build-dep bin/unstable -s
+testsuccessequal "$HEADER
+Picking 'bin-backport' as source package instead of 'bin'
+Selected version '2-2' (stable) for bin-backport
+Need to get 0 B/43 B of source archives.
+Fetch source bin-backport" apt source bin/stable -s -q
+testsuccessequal "$(getbuilddep 'bin-backport' "Picking 'bin-backport' as source package instead of 'bin'
+Selected version '2-2' (stable) for bin-backport")" apt build-dep bin/stable -s
+
+testsuccess apt install foo/experimental -s
+testfailure apt build-dep foo-source -s
+testsuccessequal "Reading package lists...
+Selected version '42' (experimental) for foo-source
+Reading package lists...
+Building dependency tree...
+Selected version '5' (experimental [all]) for 'foo' because of 'src:foo-source'
+Selected version '5' (experimental [all]) for 'foo-common' because of 'foo'
+The following NEW packages will be installed:
+ baz build-essential foo foo-common
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (2.0 unstable [all])
+Inst build-essential (1.0 wheezy [all])
+Inst foo-common (5 experimental [all])
+Inst foo (5 experimental [all])
+Conf baz (2.0 unstable [all])
+Conf build-essential (1.0 wheezy [all])
+Conf foo-common (5 experimental [all])
+Conf foo (5 experimental [all])" apt build-dep foo-source/experimental -s
+testsuccessequal "Reading package lists...
+Selected version '42' (experimental) for foo-source
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ baz build-essential foo foo-common
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (5.0 experimental [all])
+Inst build-essential (1.0 wheezy [all])
+Inst foo-common (5 experimental [all])
+Inst foo (5 experimental [all])
+Conf baz (5.0 experimental [all])
+Conf build-essential (1.0 wheezy [all])
+Conf foo-common (5 experimental [all])
+Conf foo (5 experimental [all])" apt build-dep foo-source -t experimental -s
+# this checks that mentioning the source pkg baz has no influence on the binary package baz
+testsuccessequal "Reading package lists...
+Selected version '42' (experimental) for foo-source
+Selected version '2.0' (unstable) for baz
+baz has no build depends.
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ baz build-essential foo foo-common
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (5.0 experimental [all])
+Inst build-essential (1.0 wheezy [all])
+Inst foo-common (5 experimental [all])
+Inst foo (5 experimental [all])
+Conf baz (5.0 experimental [all])
+Conf build-essential (1.0 wheezy [all])
+Conf foo-common (5 experimental [all])
+Conf foo (5 experimental [all])" apt build-dep foo-source baz/unstable -t experimental -s
diff --git a/test/integration/test-apt-sources-deb822 b/test/integration/test-apt-sources-deb822
new file mode 100755
index 0000000..8ffe0ab
--- /dev/null
+++ b/test/integration/test-apt-sources-deb822
@@ -0,0 +1,361 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+LISTS='rootdir/etc/apt/sources.list.d/test.list'
+ABSLISTS="$(readlink -f $LISTS)"
+SOURCES='rootdir/etc/apt/sources.list.d/test.sources'
+BASE='# some comment
+# that contains a : as well
+#Types: meep
+
+# a free-standing comment appears
+
+Types: deb
+#Types: deb-src
+URIs: http://ftp.debian.org/debian
+Suites: stable
+Components: main
+Description: summary
+# comments are ignored
+ and the long part'
+
+msgcleantest() {
+ rm -f $LISTS $SOURCES
+ msgtest "$@"
+}
+
+msgcleantest 'Test sources.list' 'old style'
+echo "deb http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with tabs'
+echo "deb http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with forgotten end for options'
+echo "deb [trusted=yes arch+=armel,powerpc http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] not assignment)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with stray ] instead of options'
+echo "deb ] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS (URI parse)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style options no key'
+echo "deb [=test] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] no key)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style options no value'
+echo "deb [test=] http://ftp.debian.org/debian stable main" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $ABSLISTS ([option] no value)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with options'
+echo "deb [trusted=yes arch+=armel,powerpc] http://ftp.debian.org/debian stable main" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with comments'
+echo "deb http://ftp.debian.org/debian stable main # non-free" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'old style with option comments'
+echo "deb [trusted=yes#yeahreally] http://ftp.debian.org/debian stable main # non-free" > $LISTS
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test sources.list' 'simple deb822'
+echo "$BASE" > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822 with' 'two entries'
+# Two entries
+echo "$BASE" > $SOURCES
+echo "" >> $SOURCES
+echo "$BASE" | sed s/stable/unstable/ >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/unstable/InRelease' ftp.debian.org_debian_dists_unstable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# two suite entries
+msgcleantest 'Test deb822 with' 'two Suite entries'
+echo "$BASE" | sed -e "s/stable/stable unstable/" > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/unstable/InRelease' ftp.debian.org_debian_dists_unstable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_unstable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/unstable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822' 'architecture option'
+echo "$BASE" > $SOURCES
+echo "Architectures: amd64 armel" >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+msgcleantest 'Test old-style' 'suite arch variable'
+echo 'deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/' > $LISTS
+testsuccessequal --nomsg "'http://ftp.tlh.debian.org/universe/unstable/binary-i386/InRelease' ftp.tlh.debian.org_universe_unstable_binary-i386_InRelease 0
+'http://ftp.tlh.debian.org/universe/unstable/binary-i386/Packages.xz' ftp.tlh.debian.org_universe_unstable_binary-i386_Packages 0
+'http://ftp.tlh.debian.org/universe/unstable/binary-i386/en.xz' ftp.tlh.debian.org_universe_unstable_binary-i386_en 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822' 'suite arch variable'
+echo 'Types: deb
+URIs: http://ftp.tlh.debian.org/universe
+Suites: stable/binary-$(ARCH)/' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.tlh.debian.org/universe/stable/binary-i386/InRelease' ftp.tlh.debian.org_universe_stable_binary-i386_InRelease 0
+'http://ftp.tlh.debian.org/universe/stable/binary-i386/Packages.xz' ftp.tlh.debian.org_universe_stable_binary-i386_Packages 0
+'http://ftp.tlh.debian.org/universe/stable/binary-i386/en.xz' ftp.tlh.debian.org_universe_stable_binary-i386_en 0 " aptget update --print-uris
+
+msgcleantest 'Test old-style sources.list file which has' 'malformed dist'
+echo "deb http://ftp.debian.org" > $LISTS
+testfailureequal --nomsg "E: Malformed entry 1 in list file $TMPWORKINGDIRECTORY/$LISTS (Suite)
+E: The list of sources could not be read." aptget update --print-uris
+
+msgcleantest 'Test deb822 sources.list file which has' 'malformed URI'
+echo "Types: deb
+Suites: stable
+" > $SOURCES
+testfailureequal --nomsg "E: Malformed entry 1 in sources file $TMPWORKINGDIRECTORY/$SOURCES (URI)
+E: The list of sources could not be read." aptget update --print-uris
+
+# with Enabled: false
+echo "$BASE" > $SOURCES
+echo "Enabled: no" >> $SOURCES
+testempty aptget update --print-uris
+
+# multiple URIs
+msgcleantest 'Test deb822 sources.list file which has' 'Multiple URIs work'
+echo "$BASE" | sed -e 's#http://ftp.debian.org/debian#http://ftp.debian.org/debian http://ftp.de.debian.org/debian#' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.de.debian.org/debian/dists/stable/InRelease' ftp.de.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.de.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.de.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.de.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.de.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.de.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.de.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# multiple Type in one field
+msgcleantest 'Test deb822 sources.list file which has' 'Multiple Types work'
+echo "$BASE" | sed -e 's#Types: deb#Types: deb deb-src#' > $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/source/Sources.xz' ftp.debian.org_debian_dists_stable_main_source_Sources 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+# a Suite
+msgcleantest 'Test deb822 sources.list file which has' 'an exact path and no sections'
+cat > $SOURCES <<EOF
+Types: deb
+URIs: http://emacs.naquadah.org
+Suites: stable/
+EOF
+testsuccessequal --nomsg "'http://emacs.naquadah.org/stable/InRelease' emacs.naquadah.org_stable_InRelease 0
+'http://emacs.naquadah.org/stable/Packages.xz' emacs.naquadah.org_stable_Packages 0
+'http://emacs.naquadah.org/stable/en.xz' emacs.naquadah.org_stable_en 0 " aptget update --print-uris
+
+# multivalue -Add/-Remove
+msgcleantest 'Test deb822 sources.list file which has' '-Add/-Remove multivalues'
+echo "$BASE" > $SOURCES
+echo "Languages-Remove: en" >> $SOURCES
+echo "Architectures-Add: armel" >> $SOURCES
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-i386/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-i386_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armel/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armel_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0 " aptget update --print-uris
+
+msgcleantest 'Test deb822 sources with' 'multiline multivalues'
+cat > "$SOURCES" <<EOF
+Types: deb
+ deb-src
+URIs:
+ http://ftp.debian.org/debian
+ http://ftp.debian.org/debian2
+Suites: stable
+ sid
+Components:
+ main
+ contrib non-free
+Architectures: amd64
+ armhf powerpc
+EOF
+testsuccessequal --nomsg "'http://ftp.debian.org/debian/dists/stable/InRelease' ftp.debian.org_debian_dists_stable_InRelease 0
+'http://ftp.debian.org/debian/dists/sid/InRelease' ftp.debian.org_debian_dists_sid_InRelease 0
+'http://ftp.debian.org/debian2/dists/stable/InRelease' ftp.debian.org_debian2_dists_stable_InRelease 0
+'http://ftp.debian.org/debian2/dists/sid/InRelease' ftp.debian.org_debian2_dists_sid_InRelease 0
+'http://ftp.debian.org/debian/dists/stable/main/source/Sources.xz' ftp.debian.org_debian_dists_stable_main_source_Sources 0
+'http://ftp.debian.org/debian/dists/stable/contrib/source/Sources.xz' ftp.debian.org_debian_dists_stable_contrib_source_Sources 0
+'http://ftp.debian.org/debian/dists/stable/non-free/source/Sources.xz' ftp.debian.org_debian_dists_stable_non-free_source_Sources 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/stable/contrib/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_stable_contrib_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/stable/contrib/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_stable_contrib_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/stable/contrib/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_stable_contrib_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/stable/contrib/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_contrib_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/contrib/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_contrib_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/stable/non-free/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_stable_non-free_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/stable/non-free/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_stable_non-free_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/stable/non-free/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_stable_non-free_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/stable/non-free/binary-all/Packages.xz' ftp.debian.org_debian_dists_stable_non-free_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/stable/non-free/i18n/Translation-en.xz' ftp.debian.org_debian_dists_stable_non-free_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/sid/main/source/Sources.xz' ftp.debian.org_debian_dists_sid_main_source_Sources 0
+'http://ftp.debian.org/debian/dists/sid/contrib/source/Sources.xz' ftp.debian.org_debian_dists_sid_contrib_source_Sources 0
+'http://ftp.debian.org/debian/dists/sid/non-free/source/Sources.xz' ftp.debian.org_debian_dists_sid_non-free_source_Sources 0
+'http://ftp.debian.org/debian/dists/sid/main/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_sid_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/sid/main/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_sid_main_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/sid/main/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_sid_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/sid/main/binary-all/Packages.xz' ftp.debian.org_debian_dists_sid_main_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/sid/main/i18n/Translation-en.xz' ftp.debian.org_debian_dists_sid_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/sid/contrib/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_sid_contrib_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/sid/contrib/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_sid_contrib_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/sid/contrib/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_sid_contrib_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/sid/contrib/binary-all/Packages.xz' ftp.debian.org_debian_dists_sid_contrib_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/sid/contrib/i18n/Translation-en.xz' ftp.debian.org_debian_dists_sid_contrib_i18n_Translation-en 0
+'http://ftp.debian.org/debian/dists/sid/non-free/binary-amd64/Packages.xz' ftp.debian.org_debian_dists_sid_non-free_binary-amd64_Packages 0
+'http://ftp.debian.org/debian/dists/sid/non-free/binary-armhf/Packages.xz' ftp.debian.org_debian_dists_sid_non-free_binary-armhf_Packages 0
+'http://ftp.debian.org/debian/dists/sid/non-free/binary-powerpc/Packages.xz' ftp.debian.org_debian_dists_sid_non-free_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian/dists/sid/non-free/binary-all/Packages.xz' ftp.debian.org_debian_dists_sid_non-free_binary-all_Packages 0
+'http://ftp.debian.org/debian/dists/sid/non-free/i18n/Translation-en.xz' ftp.debian.org_debian_dists_sid_non-free_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/stable/main/source/Sources.xz' ftp.debian.org_debian2_dists_stable_main_source_Sources 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/source/Sources.xz' ftp.debian.org_debian2_dists_stable_contrib_source_Sources 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/source/Sources.xz' ftp.debian.org_debian2_dists_stable_non-free_source_Sources 0
+'http://ftp.debian.org/debian2/dists/stable/main/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_stable_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/main/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_stable_main_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/main/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_stable_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/main/binary-all/Packages.xz' ftp.debian.org_debian2_dists_stable_main_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/main/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_stable_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_stable_contrib_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_stable_contrib_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_stable_contrib_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/binary-all/Packages.xz' ftp.debian.org_debian2_dists_stable_contrib_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/contrib/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_stable_contrib_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_stable_non-free_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_stable_non-free_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_stable_non-free_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/binary-all/Packages.xz' ftp.debian.org_debian2_dists_stable_non-free_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/stable/non-free/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_stable_non-free_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/sid/main/source/Sources.xz' ftp.debian.org_debian2_dists_sid_main_source_Sources 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/source/Sources.xz' ftp.debian.org_debian2_dists_sid_contrib_source_Sources 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/source/Sources.xz' ftp.debian.org_debian2_dists_sid_non-free_source_Sources 0
+'http://ftp.debian.org/debian2/dists/sid/main/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_sid_main_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/main/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_sid_main_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/main/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_sid_main_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/main/binary-all/Packages.xz' ftp.debian.org_debian2_dists_sid_main_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/main/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_sid_main_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_sid_contrib_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_sid_contrib_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_sid_contrib_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/binary-all/Packages.xz' ftp.debian.org_debian2_dists_sid_contrib_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/contrib/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_sid_contrib_i18n_Translation-en 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/binary-amd64/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-amd64_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/binary-armhf/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-armhf_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/binary-powerpc/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-powerpc_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/binary-all/Packages.xz' ftp.debian.org_debian2_dists_sid_non-free_binary-all_Packages 0
+'http://ftp.debian.org/debian2/dists/sid/non-free/i18n/Translation-en.xz' ftp.debian.org_debian2_dists_sid_non-free_i18n_Translation-en 0 " aptget update --print-uris
+
+EXPECTEDUK="'http://ftp.uk.debian.org/debian/dists/stretch/InRelease' ftp.uk.debian.org_debian_dists_stretch_InRelease 0
+'http://ftp.uk.debian.org/debian/dists/stretch/main/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_main_source_Sources 0
+'http://ftp.uk.debian.org/debian/dists/stretch/contrib/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_source_Sources 0
+'http://ftp.uk.debian.org/debian/dists/stretch/non-free/source/Sources.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_source_Sources 0
+'http://ftp.uk.debian.org/debian/dists/stretch/main/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_main_binary-i386_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/main/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_main_binary-all_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/main/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_main_i18n_Translation-en 0
+'http://ftp.uk.debian.org/debian/dists/stretch/contrib/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_binary-i386_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/contrib/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_binary-all_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/contrib/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_contrib_i18n_Translation-en 0
+'http://ftp.uk.debian.org/debian/dists/stretch/non-free/binary-i386/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_binary-i386_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/non-free/binary-all/Packages.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_binary-all_Packages 0
+'http://ftp.uk.debian.org/debian/dists/stretch/non-free/i18n/Translation-en.xz' ftp.uk.debian.org_debian_dists_stretch_non-free_i18n_Translation-en 0 "
+
+msgcleantest 'Test deb822 sources.list file comments' 'top'
+cat > $SOURCES <<EOF
+#NOTE: Most preferred source listed first!
+
+
+#=== NEW MULTI-LINE FORMAT ===============
+Types: deb deb-src
+URIs:http://ftp.uk.debian.org/debian/
+Suites: stretch
+Components: main contrib non-free
+EOF
+testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris
+
+msgcleantest 'Test deb822 sources.list file comments' 'bottom'
+cat > $SOURCES <<EOF
+Types: deb deb-src
+URIs:http://ftp.uk.debian.org/debian/
+Suites: stretch
+Components: main contrib non-free
+#=== NEW MULTI-LINE FORMAT ===============
+
+
+#NOTE: Most preferred source listed first!
+EOF
+testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris
+
+msgcleantest 'Test deb822 sources.list file comments' 'both'
+cat > $SOURCES <<EOF
+#=== NEW MULTI-LINE FORMAT ===============
+
+
+#NOTE: Most preferred source listed first!
+Types: deb deb-src
+URIs:http://ftp.uk.debian.org/debian/
+Suites: stretch
+Components: main contrib non-free
+#=== NEW MULTI-LINE FORMAT ===============
+
+
+#NOTE: Most preferred source listed first!
+EOF
+testsuccessequal --nomsg "$EXPECTEDUK" aptget update --print-uris
+
+
+msgcleantest 'Test deb822 sources.list file comments' 'empty'
+cat > $SOURCES <<EOF
+#=== NEW MULTI-LINE FORMAT ===============
+
+
+EOF
+testempty aptget update --print-uris
diff --git a/test/integration/test-apt-tagfile-fields-order b/test/integration/test-apt-tagfile-fields-order
new file mode 100755
index 0000000..aa81714
--- /dev/null
+++ b/test/integration/test-apt-tagfile-fields-order
@@ -0,0 +1,120 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+DPKG_PERL_VERSION="$(perl -e 'use Dpkg; print "$Dpkg::PROGVERSION";')"
+DPKG_OUTPUT_SORT='sort -u'
+if dpkg --compare-versions "$DPKG_PERL_VERSION" '>=' '1.21.4~'; then
+ DPKG_OUTPUT_SORT='sort'
+fi
+
+dpkg_field_ordered_list() {
+ local FIELDS="$(perl -e "
+use Dpkg::Control;
+use Dpkg::Control::Fields;
+foreach \$f (field_ordered_list(${1})) {
+ print \"\$f\\n\";
+}" | $DPKG_OUTPUT_SORT )"
+ if [ -z "$FIELDS" ]; then
+ msgfail 'Could not get fields via libdpkg-perl'
+ fi
+ echo "$FIELDS"
+}
+
+comparelsts() {
+ local DIFFOUTPUT="$(diff -u apt.lst dpkg.lst || true)"
+ if echo "$DIFFOUTPUT" | grep -q '^+[^+]'; then
+ echo
+ echo "$DIFFOUTPUT" | grep '^[+-][^+-]'
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+grep -v '^#' "${SOURCEDIRECTORY}/apt-pkg/tagfile-keys.list" > tagfile-keys.list
+# Hardcoding this is a bit silly, but it might help preventing issues…
+msgtest 'File is append only: do not sort, remove or insert keys in' 'tagfile-keys.list'
+testequal --nomsg 'Version' sed '72q;d' tagfile-keys.list
+
+msgtest 'List has fewer entries than pkgTagSection buckets' 'tagfile-keys.list'
+ENTRIES_LIST="$(wc -l tagfile-keys.list | cut -d' ' -f 1)"
+ENTRIES_BUCKET="$(grep -m 1 'AlphaIndexes\[' "${SOURCEDIRECTORY}/apt-pkg/tagfile.h" | sed -e 's#.*\[\([0-9]\+\)\].*#\1#')"
+if test $ENTRIES_LIST -lt $ENTRIES_BUCKET; then
+ msgpass
+else
+ echo
+ echo "List has $ENTRIES_LIST entries, but pkgTagSection can only store $ENTRIES_BUCKET as AlphaIndexes"
+ msgfail
+fi
+
+msgtest 'Check for duplicates in' 'tagfile-keys.list'
+sort tagfile-keys.list > apt.lst
+testempty --nomsg uniq --repeated 'apt.lst'
+
+msgtest 'Check that apt knows all fields it orders' 'itself'
+grep -v "// NO_KEY: " "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -ne 's#^ "\(.*\)",.*$#\1#p' | sort -u > dpkg.lst
+comparelsts
+
+msgtest 'Check tagfile-keys.list does not contain' 'obsoleted and internal fields'
+grep "// NO_KEY: " "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -ne 's#^ "\(.*\)",.*$#\1#p' > obsolete.lst
+sed -n -e's#^ *// *"\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" >> obsolete.lst
+sort -u obsolete.lst > obsolete-sorted.lst
+sort obsolete-sorted.lst tagfile-keys.list > obsolete-keys.lst
+testempty --nomsg uniq --repeat 'obsolete-keys.lst'
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Packages'
+dpkg_field_ordered_list 'CTRL_INDEX_PKG' > dpkg.lst
+sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'status'
+dpkg_field_ordered_list 'CTRL_FILE_STATUS' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'DEBIAN/control'
+dpkg_field_ordered_list 'CTRL_PKG_DEB' > dpkg.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'Sources'
+dpkg_field_ordered_list 'CTRL_INDEX_SRC' > dpkg.lst
+echo 'Package' > apt.tmp
+sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed '/^Package$/,/^Package$/ d' >> apt.tmp
+sort -u apt.tmp > apt.lst
+comparelsts
+
+msgtest 'Check that apt knows all fields dpkg orders in' 'dsc'
+dpkg_field_ordered_list 'CTRL_PKG_SRC' > dpkg.lst
+comparelsts
+
+DPKG_SOURCE_PARSE_C="${DPKG_SOURCE_DIRECTORY}/lib/dpkg/parse.c"
+msgtest 'Compare our knowledge with the source code of' 'dpkg'
+if [ -z "$DPKG_SOURCE_DIRECTORY" ]; then
+ msgskip 'source not provided'
+elif [ ! -r "$DPKG_SOURCE_PARSE_C" ]; then
+ msgfail 'source not found'
+else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dpkg parses'
+ sed -n 's#^.*FIELD("\(.*\)").*$#\1#p' "${DPKG_SOURCE_PARSE_C}" | sort -u > dpkg.lst
+ sed -n -e's#^ *// *"# "#' -e 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sed -n '/^Package$/,/^Package$/ p' | head -n -1 | sort > apt.lst
+ comparelsts
+fi
+
+DAK_SOURCE_METADATAKEYS="${DAK_SOURCE_DIRECTORY}/setup/core-init.d/080_metadatakeys"
+msgtest 'Compare our knowledge with the source code of' 'dak'
+if [ -z "$DAK_SOURCE_DIRECTORY" ]; then
+ msgskip 'source not provided'
+elif [ ! -r "$DAK_SOURCE_METADATAKEYS" ]; then
+ msgfail 'source not found'
+else
+ msgpass
+ msgtest 'Check that apt knows about all fields' 'dak knows'
+ # dak mixes both, so we can only check with the mixed one as well
+ sed -ne "s#^.* VALUES ('\(.*\)', \(.*\)).*\$#\1 \2#p" "${DAK_SOURCE_METADATAKEYS}" | cut -d ' ' -f 1 | sort -u > dpkg.lst
+ sed -ne 's#^ "\(.*\)",.*$#\1#p' "${SOURCEDIRECTORY}/apt-pkg/tagfile-order.c" | sort -u > apt.lst
+ comparelsts
+fi
diff --git a/test/integration/test-apt-translation-has-no-packages b/test/integration/test-apt-translation-has-no-packages
new file mode 100755
index 0000000..3c07af3
--- /dev/null
+++ b/test/integration/test-apt-translation-has-no-packages
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+# Due to corruption (local or network) a user might end up with a
+# Translation-$lang file on disk that is actually a Packages file. In this
+# case apt used to generate invalid package versions out of the
+# Translation-$lang file (i.e. apt-cache policy foo) would show a version
+# coming out of a Translation file. Downloading this versions fails as
+# there is no acquire method available for the package
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+
+buildsimplenativepackage 'foo' 'all' '1.0'
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+# corrupt the Translation-en file to look like a regular Packages file
+rm rootdir/var/cache/apt/*.bin
+cp "$APTARCHIVE/dists/unstable/main/binary-amd64/Packages" \
+ rootdir/var/lib/apt/lists/*Translation-en
+
+# ensure that there is no Version for the package foo generated out of
+# the corrupted Translation-en file
+testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 file:$APTARCHIVE unstable/main all Packages" aptcache policy foo
diff --git a/test/integration/test-apt-update-disappeared-component b/test/integration/test-apt-update-disappeared-component
new file mode 100755
index 0000000..7c7dd77
--- /dev/null
+++ b/test/integration/test-apt-update-disappeared-component
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foobar' 'all' '1'
+
+APTARCHIVE="file:$(readlink -f ./aptarchive) unstable InRelease"
+setupaptarchive --no-update
+sed -i -e 's#main\s*$#main contrib non-free sub/component#' rootdir/etc/apt/sources.list.d/*
+
+# if no Component info is available we assume all are supported, which means
+# that non-existent Packages files are assumed to be missing because they are
+# empty (as the repository is declaring support for them via Architectures)
+testwarningmsg "W: Skipping acquire of configured file 'contrib/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)
+W: Skipping acquire of configured file 'non-free/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)
+W: Skipping acquire of configured file 'sub/component/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)" apt update
+
+sed -i -e '/^Codename: / a\
+Components: main contrib' $(find ./aptarchive -name 'Release')
+signreleasefiles
+
+testwarningmsg "W: Skipping acquire of configured file 'contrib/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)
+W: Skipping acquire of configured file 'non-free/source/Sources' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'sub/component/source/Sources' as repository '${APTARCHIVE}' doesn't have the component 'sub/component' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'non-free/binary-amd64/Packages' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'non-free/binary-all/Packages' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'non-free/i18n/Translation-en' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'sub/component/binary-amd64/Packages' as repository '${APTARCHIVE}' doesn't have the component 'sub/component' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'sub/component/binary-all/Packages' as repository '${APTARCHIVE}' doesn't have the component 'sub/component' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'sub/component/i18n/Translation-en' as repository '${APTARCHIVE}' doesn't have the component 'sub/component' (component misspelt in sources.list?)" apt update
+
+# the field looks like this e.g. for security.debian.org sources
+sed -i -e 's#^Components:.*$#Components: updates/main updates/contrib sub/component#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+
+testwarningmsg "W: Skipping acquire of configured file 'contrib/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)
+W: Skipping acquire of configured file 'non-free/source/Sources' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'sub/component/source/Sources' as repository '${APTARCHIVE}' does not seem to provide it (sources.list entry misspelt?)
+W: Skipping acquire of configured file 'non-free/binary-amd64/Packages' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'non-free/binary-all/Packages' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)
+W: Skipping acquire of configured file 'non-free/i18n/Translation-en' as repository '${APTARCHIVE}' doesn't have the component 'non-free' (component misspelt in sources.list?)" apt update
diff --git a/test/integration/test-apt-update-empty-files b/test/integration/test-apt-update-empty-files
new file mode 100755
index 0000000..24e40f9
--- /dev/null
+++ b/test/integration/test-apt-update-empty-files
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'apt' 'amd64' '1'
+# this automatically gives us an empty Sources file
+
+setupaptarchive --no-update
+
+msgmsg 'Test with file'
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep '%0a\(Alt\)\?Filename:%20/.*/Sources\(\.gz\)\?%0a' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
+
+msgmsg 'Test with http'
+changetowebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep 'http:600.*Sources' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
+
+msgmsg 'Test lists-cleanup on newly empty'
+rm -rf rootdir/var/lib/apt/lists
+insertsource 'unstable' 'apt' 'any' '1'
+compressfile aptarchive/dists/unstable/main/source/Sources
+generatereleasefiles
+signreleasefiles
+testsuccess apt update -o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output apt.output
+testsuccess grep 'http:600.*Sources' apt.output
+echo -n > aptarchive/dists/unstable/main/source/Sources
+compressfile aptarchive/dists/unstable/main/source/Sources
+generatereleasefiles 'now + 1hour'
+signreleasefiles
+testsuccess apt update -o Debug::pkgAcquire::Worker=1 -o APT::Get::List-Cleanup=0 -o Debug::Acquire::Transaction=1
+cp rootdir/tmp/testsuccess.output apt.output
+testfailure grep 'http:600.*Sources' apt.output
+testempty find rootdir/var/lib/apt/lists -name '*_Sources'
diff --git a/test/integration/test-apt-update-expected-size b/test/integration/test-apt-update-expected-size
new file mode 100755
index 0000000..32fa039
--- /dev/null
+++ b/test/integration/test-apt-update-expected-size
@@ -0,0 +1,99 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'apt' 'i386' '1.0'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+cp -a aptarchive/dists aptarchive/dists.good
+
+test_inreleasetoobig() {
+ # make InRelease really big to trigger fallback
+ dd if=/dev/zero of=aptarchive/dists/unstable/InRelease bs=1M count=2 2>/dev/null
+ touch -d '+1hour' aptarchive/dists/unstable/InRelease
+ testsuccess aptget update -o Apt::Get::List-Cleanup=0 -o acquire::MaxReleaseFileSize=$((1*1000*1000)) -o Debug::pkgAcquire::worker=0
+ msgtest 'Check that the max write warning is triggered'
+ cp rootdir/tmp/testsuccess.output update.output
+ testsuccess --nomsg grep -q 'File has unexpected size' update.output
+ rm -f update.output
+ # ensure the failed InRelease file got renamed
+ testsuccess ls rootdir/var/lib/apt/lists/partial/*InRelease.FAILED
+ testfailure test -e rootdir/var/lib/apt/lists/partial/Old.FAILED
+}
+
+test_packagestoobig() {
+ insertpackage 'unstable' 'foo' 'i386' '1.0'
+ buildaptarchivefromfiles '+1 hour'
+ signreleasefiles
+ # append junk at the end of the Packages.gz/Packages
+ SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ find aptarchive/dists -name 'Packages*' | while read pkg; do
+ echo "1234567890" >> "$pkg"
+ touch -d '+1hour' "$pkg"
+ done
+ NEW_SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ testfailuremsg "E: Failed to fetch ${1}/dists/unstable/main/binary-i386/Packages.gz File has unexpected size ($NEW_SIZE != $SIZE). Mirror sync in progress?
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::Transaction=0
+ testsuccess ls rootdir/var/lib/apt/lists/partial/*Packages*.FAILED
+ testfailure test -e rootdir/var/lib/apt/lists/partial/Old.FAILED
+}
+
+test_packagestoosmall() {
+ insertpackage 'unstable' 'foo' 'i386' '1.0'
+ buildaptarchivefromfiles '+1 hour'
+ signreleasefiles
+ # replace Packages.gz/Packages with short junk
+ SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ find aptarchive/dists -name 'Packages*' | while read pkg; do
+ echo "1234567890" > "$pkg"
+ touch -d '+1hour' "$pkg"
+ done
+ NEW_SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)"
+ testfailuremsg "E: Failed to fetch ${1}/dists/unstable/main/binary-i386/Packages.gz File is smaller than expected ($NEW_SIZE < $SIZE). Mirror sync in progress?
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::Transaction=0
+ testsuccess ls rootdir/var/lib/apt/lists/partial/*Packages*.FAILED
+ testfailure test -e rootdir/var/lib/apt/lists/partial/Old.FAILED
+}
+
+
+methodtest() {
+ # less complicated test setup this way
+ webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
+ webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
+
+ msgmsg 'Test with' "$1" 'and clean start'
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+ # normal update works fine
+ testsuccess aptget update
+ touch rootdir/var/lib/apt/lists/partial/Old.FAILED
+ mv rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
+ # starting fresh works
+ test_inreleasetoobig "$1"
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+ test_packagestoobig "$1"
+
+ msgmsg 'Test with' "$1" 'and existing old data'
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+ test_inreleasetoobig "$1"
+ rm -rf aptarchive/dists rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists.good aptarchive/dists
+ test_packagestoobig "$1"
+}
+
+changetowebserver
+methodtest "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+methodtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-apt-update-failure-propagation b/test/integration/test-apt-update-failure-propagation
new file mode 100755
index 0000000..f8de3b5
--- /dev/null
+++ b/test/integration/test-apt-update-failure-propagation
@@ -0,0 +1,99 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+buildsimplenativepackage 'foo' 'all' '2' 'sid'
+setupaptarchive --no-update
+
+NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
+OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" -maxdepth 1 ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+done
+IFS="$backupIFS"
+
+changetohttpswebserver
+for FILE in rootdir/etc/apt/sources.list.d/*-sid-* ; do
+ sed -i -e 's#https:#http:#' -e "s#:${APTHTTPSPORT}/#:${APTHTTPPORT}/#" "$FILE"
+done
+
+# these tests are designed to fail, retries are just a waste of time here
+echo 'Acquire::Retries 0;' > rootdir/etc/apt/apt.conf.d/disable-retries.conf
+
+pretest() {
+ msgmsg "$@"
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccessequal 'N: Unable to locate package foo' aptcache policy foo
+}
+pretest 'initialize test' 'update'
+testsuccess aptget update
+testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 2
+ Version table:
+ 2 500
+ 500 http://localhost:${APTHTTPPORT} sid/main all Packages
+ 1 500
+ 500 https://localhost:${APTHTTPSPORT} stable/main all Packages" aptcache policy foo
+
+pretest 'not found' 'release files'
+mv aptarchive/dists/stable aptarchive/dists/stable.good
+testfailuremsg "E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+testfailuremsg "E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+mv aptarchive/dists/stable.good aptarchive/dists/stable
+posttest() {
+ testsuccessequal "foo:
+ Installed: (none)
+ Candidate: 2
+ Version table:
+ 2 500
+ 500 http://localhost:${APTHTTPPORT} sid/main all Packages" aptcache policy foo
+}
+posttest
+
+pretest 'method disabled' 'https'
+echo 'Dir::Bin::Methods::https "false";' > rootdir/etc/apt/apt.conf.d/99disable-https
+testfailuremsg "E: The method 'https' is explicitly disabled via configuration.
+N: If you meant to use Tor remember to use tor+https instead of https.
+E: Failed to fetch https://localhost:${APTHTTPSPORT}/dists/stable/InRelease
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+rm -f rootdir/etc/apt/apt.conf.d/99disable-https
+posttest
+
+pretest 'method not installed' 'https'
+rm "${NEWMETHODS}/https"
+testfailuremsg "E: The method driver ${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods/https could not be found.
+N: Is the package apt-transport-https installed?
+E: Failed to fetch https://localhost:${APTHTTPSPORT}/dists/stable/InRelease
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+posttest
+
+pretest 'https connection refused' 'doom port'
+for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do
+ # lets see how many testservers run also Doom
+ sed -i -e "s#:${APTHTTPSPORT}/#:666/#" "$FILE"
+done
+testwarning aptget update -o Dir::Bin::Methods::https="${OLDMETHODS}/https"
+testsuccess grep '^W: Failed to fetch https://localhost:666/dists/stable/InRelease ' rootdir/tmp/testwarning.output
+testequal 'W: Some index files failed to download. They have been ignored, or old ones used instead.' tail -n 1 rootdir/tmp/testwarning.output
+posttest
+
+pretest 'error-mode=any' 'doom port'
+testfailure aptget update -o Dir::Bin::Methods::https="${OLDMETHODS}/https" -eany
+testsuccess grep '^E: Failed to fetch https://localhost:666/dists/stable/InRelease ' rootdir/tmp/testfailure.output
+testequal 'E: Some index files failed to download. They have been ignored, or old ones used instead.' tail -n 1 rootdir/tmp/testfailure.output
+posttest
diff --git a/test/integration/test-apt-update-file b/test/integration/test-apt-update-file
new file mode 100755
index 0000000..8da4ec3
--- /dev/null
+++ b/test/integration/test-apt-update-file
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Ensure that we do not modify file:/// uris (regression test for
+# CVE-2014-0487
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+configcompression 'bz2' 'gz'
+confighashes 'SHA512'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'unstable' 'bar' 'amd64' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+
+setupaptarchive --no-update
+logcurrentarchivedirectory
+
+# ensure the archive is not writable
+addtrap 'prefix' 'chmod 755 aptarchive/dists/unstable/main/binary-all;'
+if [ "$(id -u)" = '0' ]; then
+ # too deep to notice it, but it also unlikely that files in the same repo have different permissions
+ chmod 500 aptarchive/dists/unstable/main/binary-all
+ testfailure aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 755 aptarchive/dists/unstable/main/binary-all
+ testsuccess aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 511 aptarchive/dists/
+ testsuccess aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 510 aptarchive/dists/
+ testsuccesswithnotice aptget update
+ rm -rf rootdir/var/lib/apt/lists
+ chmod 500 aptarchive/dists/
+ testsuccesswithnotice aptget update
+ chmod 755 aptarchive/dists/
+else
+ testsuccess aptget update
+fi
+mv rootdir/var/lib/apt/lists/_* rootdir/var/lib/apt/lists/partial
+chmod 555 aptarchive/dists/unstable/main/binary-all
+testsuccess aptget update -o Debug::pkgAcquire::Worker=1
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+testsuccess grep '%0aAlt-Filename:%20' rootdir/tmp/update.output
+
+# the release files aren't an IMS-hit, but the indexes are
+redatereleasefiles '+1 hour'
+
+# we don't download the index if it isn't updated
+testsuccess aptget update -o Debug::pkgAcquire::Auth=1
+# file:/ isn't shown in the log, so see if it was downloaded anyhow
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+canary="SHA512:$(bzcat aptarchive/dists/unstable/main/binary-all/Packages.bz2 | sha512sum |cut -f1 -d' ')"
+testfailure grep -- "$canary" rootdir/tmp/update.output
+
+testfoo() {
+ # foo is still available
+ testsuccess aptget install -s foo
+ testsuccess aptcache showsrc foo
+ testsuccess aptget source foo --print-uris
+}
+testfoo
+
+# the release file is new again, the index still isn't, but it is somehow gone now from disk
+redatereleasefiles '+2 hour'
+find rootdir/var/lib/apt/lists -name '*_Packages*' -delete
+
+testsuccess aptget update -o Debug::pkgAcquire::Auth=1
+# file:/ isn't shown in the log, so see if it was downloaded anyhow
+cp -a rootdir/tmp/testsuccess.output rootdir/tmp/update.output
+canary="SHA512:$(bzcat aptarchive/dists/unstable/main/binary-all/Packages.bz2 | sha512sum |cut -f1 -d' ')"
+testsuccess grep -- "$canary" rootdir/tmp/update.output
+
+testfoo
diff --git a/test/integration/test-apt-update-filesize-mismatch b/test/integration/test-apt-update-filesize-mismatch
new file mode 100755
index 0000000..26b670d
--- /dev/null
+++ b/test/integration/test-apt-update-filesize-mismatch
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'testing' 'foo2' 'all' '1'
+insertsource 'testing' 'foo' 'all' '1'
+insertsource 'testing' 'foo2' 'all' '1'
+
+setupaptarchive --no-update
+changetowebserver
+
+find aptarchive \( -name 'Packages' -o -name 'Sources' -o -name 'Translation-en' \) -delete
+for release in $(find aptarchive -name 'Release'); do
+ cp "$release" "${release}.backup"
+done
+
+testsuccess aptget update
+testsuccess aptcache show foo
+testsuccess aptget install foo -s
+
+for get in $(sed -n 's#^GET /\([^ ]\+\.gz\) HTTP.\+$#\1#p' aptarchive/webserver.log.client*.log); do
+ for ext in '' '.gz'; do
+ COMPRESSFILE="$get"
+ get="${get}${ext}"
+ FILE="$(basename "$get" '.gz')"
+ msgmsg 'Test filesize mismatch with file' "$FILE"
+ rm -rf rootdir/var/lib/apt/lists
+
+ for release in $(find aptarchive -name 'Release'); do
+ SIZE="$(awk "/$FILE\$/ { print \$2; exit }" "${release}.backup")"
+ sed "s# $SIZE # $(($SIZE + 111)) #" "${release}.backup" > "$release"
+ done
+ signreleasefiles
+
+ testfailure aptget update -o Debug::pkgAcquire::Worker=1
+ cp rootdir/tmp/testfailure.output rootdir/tmp/update.output
+ if [ -z "$ext" ]; then
+ testsuccess grep -E "$(basename "$COMPRESSFILE" '.gz').*Hash Sum mismatch" rootdir/tmp/update.output
+ else
+ testsuccess grep -E "$(basename "$COMPRESSFILE" '.gz').*File has unexpected size" rootdir/tmp/update.output
+ fi
+ testfailure aptcache show foo
+ testfailure aptget install foo -s
+
+ testfailure aptcache show bar
+ testfailure aptget install bar -s
+ done
+done
diff --git a/test/integration/test-apt-update-hashsum-mismatch b/test/integration/test-apt-update-hashsum-mismatch
new file mode 100755
index 0000000..48d041a
--- /dev/null
+++ b/test/integration/test-apt-update-hashsum-mismatch
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+configcompression 'gz'
+
+insertpackage 'testing' 'foo' 'all' '1'
+insertpackage 'testing' 'foo2' 'all' '1'
+insertsource 'testing' 'foo' 'all' '1'
+insertsource 'testing' 'foo2' 'all' '1'
+
+setupaptarchive --no-update
+changetowebserver
+
+find aptarchive \( -name 'Packages' -o -name 'Sources' -o -name 'Translation-en' \) -delete
+
+testsuccess aptget update
+testsuccess aptcache show foo
+testsuccess aptget install foo -s
+
+for get in $(sed -n 's#^GET /\([^ ]\+\.gz\) HTTP.\+$#\1#p' aptarchive/webserver.log.client*.log); do
+ msgmsg 'Test hashsum mismatch with file' "$get"
+ breakfiles "aptarchive/${get}"
+ rm -rf rootdir/var/lib/apt/lists
+
+ testfailure aptget update
+ cp rootdir/tmp/testfailure.output rootdir/tmp/update.output
+ testsuccess grep -E "$(basename "$get" '.gz').*Hash Sum mismatch" rootdir/tmp/update.output
+ testfailure aptcache show foo
+ testfailure aptget install foo -s
+
+ testfailure aptcache show bar
+ testfailure aptget install bar -s
+
+ unbreakfiles "aptarchive/${get}"
+done
diff --git a/test/integration/test-apt-update-hooks b/test/integration/test-apt-update-hooks
new file mode 100755
index 0000000..d81ef29
--- /dev/null
+++ b/test/integration/test-apt-update-hooks
@@ -0,0 +1,49 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'SHA512'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertpackage 'testing' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+signreleasefiles 'Joe Sixpack'
+
+echo 'APT::Update::Post-Invoke-Success { "echo SUCCESS"; };' >> rootdir/etc/apt/apt.conf.d/display-success.conf
+echo 'APT::Update::Post-Invoke { "echo RUN"; };' >> rootdir/etc/apt/apt.conf.d/display-success.conf
+
+
+msgmsg "All sources OK => run Post-Invoke-Success and Post-Invoke"
+testsuccess aptget update
+cp rootdir/tmp/testsuccess.output aptupdate.output
+testsuccess grep "RUN" aptupdate.output
+testsuccess grep "SUCCESS" aptupdate.output
+
+msgmsg "Some sources broken => run Post-Invoke-Success and Post-Invoke"
+sed -i -e '/^ / d' -e '/^SHA512:/ d' "$APTARCHIVE/dists/unstable/Release"
+testsuccess rm "$(aptget indextargets 'Created-By: Packages' 'Suite: testing' --format '$(FILENAME)')"
+signreleasefiles
+listcurrentlistsdirectory > lists.before
+testfailure apt update
+cp rootdir/tmp/testfailure.output aptupdate.output
+listcurrentlistsdirectory > lists.after
+testfailure cmp lists.before lists.after
+testsuccess grep "RUN" aptupdate.output
+testsuccess grep "SUCCESS" aptupdate.output
+
+msgmsg "All sources broken => run Post-Invoke"
+sed -i -e '/^ / d' -e '/^SHA512:/ d' "$APTARCHIVE/dists/testing/Release"
+signreleasefiles
+mv lists.after lists.before
+testfailure apt update
+cp rootdir/tmp/testfailure.output aptupdate.output
+testfileequal lists.before "$(listcurrentlistsdirectory)"
+testsuccess grep "RUN" aptupdate.output
+testfailure grep "SUCCESS" aptupdate.output
diff --git a/test/integration/test-apt-update-ims b/test/integration/test-apt-update-ims
new file mode 100755
index 0000000..1894c3a
--- /dev/null
+++ b/test/integration/test-apt-update-ims
@@ -0,0 +1,192 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'unrelated' 'all' '0.5~squeeze1'
+insertpackage 'unstable' 'unrelated2' 'amd64' '0.5~squeeze1'
+insertsource 'unstable' 'unrelated' 'all' '0.5~squeeze1'
+
+export APT_DONT_SIGN=""
+setupaptarchive --no-update
+logcurrentarchivedirectory
+changetowebserver
+
+runtest() {
+ local APTOPT=""
+ if [ -n "$1" ]; then
+ APTOPT='--allow-insecure-repositories'
+ else
+ APTOPT='--no-allow-insecure-repositories'
+ fi
+
+ rm -rf rootdir/var/lib/apt/lists/
+
+ local TEST="test${1:-success}"
+ $TEST aptget update $APTOPT -o Debug::pkgAcquire::Worker=1
+ if [ "$1" = 'failure' ]; then
+ # accept the outdated Release file so we can check Hit behaviour
+ "test${2:-success}" aptget update -o Acquire::Min-ValidTime=9999999 $APTOPT
+ fi
+ listcurrentlistsdirectory > listsdir.lst
+ testsuccess grep '_Packages\(\.[0-9a-z]\+\)\?$' listsdir.lst
+ testsuccess grep '_Sources\(\.[0-9a-z]\+\)\?$' listsdir.lst
+ testsuccess grep '_Translation-en\(\.[0-9a-z]\+\)\?$' listsdir.lst
+
+ # ensure no leftovers in partial
+ testfailure ls 'rootdir/var/lib/apt/lists/partial/*'
+
+ # check that I-M-S header is kept in redirections
+ echo "$EXPECT" | sed -e 's#(invalid since [^)]\+)#(invalid since)#' > expected.output
+ $TEST aptget update -o Debug::pkgAcquire::Worker=0 -o Debug::Acquire::http=0 $APTOPT
+ sed -i -e 's#(invalid since [^)]\+)#(invalid since)#' rootdir/tmp/${TEST}.output
+ testequal "$(cat expected.output)" cat rootdir/tmp/${TEST}.output
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # ensure that we still do a hash check for other files on ims hit of Release
+ if grep -q '^Hit:[0-9]\+ .* InRelease$' expected.output || ! grep -q '^Ign:[0-9]\+ .* Release\(\.gpg\)\?$' expected.output; then
+ $TEST aptget update -o Debug::Acquire::gpgv=1 $APTOPT
+ cp rootdir/tmp/${TEST}.output goodsign.output
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+ testsuccess grep '^Got GOODSIG ' goodsign.output
+ fi
+
+ # ensure no leftovers in partial
+ testfailure ls 'rootdir/var/lib/apt/lists/partial/*'
+}
+
+msgmsg 'InRelease'
+EXPECT="Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists..."
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+
+msgmsg 'Release/Release.gpg'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Reading package lists..."
+find aptarchive -name 'InRelease' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest
+
+msgmsg 'Release only'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Ign:3 http://localhost:${APTHTTPPORT} unstable Release.gpg
+ 404 Not Found
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' is not signed.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details."
+find aptarchive -name 'Release.gpg' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+
+
+# make the release file old
+find aptarchive -name '*Release' -exec sed -i \
+ -e "s#^Date: .*\$#Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')#" \
+ -e '/^Valid-Until: / d' -e "/^Date: / a\
+Valid-Until: $(date -ud '-1 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" '{}' \;
+signreleasefiles
+logcurrentarchivedirectory
+
+msgmsg 'expired InRelease'
+EXPECT="Hit:1 http://localhost:${APTHTTPPORT} unstable InRelease
+Reading package lists...
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/InRelease is expired (invalid since). Updates for this repository will not be applied."
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+
+msgmsg 'expired Release/Release.gpg'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Reading package lists...
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied."
+find aptarchive -name 'InRelease' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure'
+
+msgmsg 'expired Release only'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT} unstable Release
+Ign:3 http://localhost:${APTHTTPPORT} unstable Release.gpg
+ 404 Not Found
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' is not signed.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details.
+E: Release file for http://localhost:${APTHTTPPORT}/dists/unstable/Release is expired (invalid since). Updates for this repository will not be applied."
+find aptarchive -name 'Release.gpg' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure' 'warning'
+echo 'Acquire::GzipIndexes "1";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'failure' 'warning'
+
+
+msgmsg 'no Release at all'
+EXPECT="Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 404 Not Found
+Ign:2 http://localhost:${APTHTTPPORT} unstable Release
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+ 404 Not Found
+Ign:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+ 404 Not Found
+Ign:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+ 404 Not Found
+Ign:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+ 404 Not Found
+Hit:3 http://localhost:${APTHTTPPORT} unstable/main Sources
+Hit:4 http://localhost:${APTHTTPPORT} unstable/main amd64 Packages
+Hit:5 http://localhost:${APTHTTPPORT} unstable/main all Packages
+Hit:6 http://localhost:${APTHTTPPORT} unstable/main Translation-en
+Reading package lists...
+W: The repository 'http://localhost:${APTHTTPPORT} unstable Release' does not have a Release file.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details."
+find aptarchive -name '*Release*' -delete
+logcurrentarchivedirectory
+echo 'Acquire::GzipIndexes "0";
+Acquire::PDiffs "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
+echo 'Acquire::GzipIndexes "1";
+Acquire::PDiffs "0";' > rootdir/etc/apt/apt.conf.d/02compressindex
+runtest 'warning'
diff --git a/test/integration/test-apt-update-nofallback b/test/integration/test-apt-update-nofallback
new file mode 100755
index 0000000..18f12b1
--- /dev/null
+++ b/test/integration/test-apt-update-nofallback
@@ -0,0 +1,273 @@
+#!/bin/sh
+#
+# ensure we never fallback from a signed to a unsigned repo
+#
+# hash checks are done in
+#
+set -e
+
+simulate_mitm_and_inject_evil_package()
+{
+ redatereleasefiles '+1 hour'
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+ inject_evil_package
+}
+
+inject_evil_package()
+{
+ cat > "$APTARCHIVE/dists/unstable/main/binary-i386/Packages" <<EOF
+Package: evil
+Installed-Size: 29
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Version: 1.0
+Filename: pool/evil_1.0_all.deb
+Size: 1270
+Description: an autogenerated evil package
+EOF
+ # avoid ims hit
+ touch -d '+1hour' aptarchive/dists/unstable/main/binary-i386/Packages
+ compressfile aptarchive/dists/unstable/main/binary-i386/Packages
+}
+
+assert_update_is_refused_and_last_good_state_used()
+{
+ testfailuremsg "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+ assert_repo_is_intact
+}
+
+assert_repo_is_intact()
+{
+ testsuccessequal 'foo/unstable 2.0 all' apt list -qq
+ testsuccess aptget install -y -s foo
+ testfailure aptget install -y evil
+ testsuccess aptget source foo --print-uris
+
+ LISTDIR=rootdir/var/lib/apt/lists
+ testempty find "$LISTDIR" -name 'InRelease' -o -name 'Release.gpg'
+}
+
+setupaptarchive_with_lists_clean()
+{
+ setupaptarchive --no-update
+ rm -rf rootdir/var/lib/apt/lists
+}
+
+test_from_inrelease_to_unsigned()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ simulate_mitm_and_inject_evil_package
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+test_from_release_gpg_to_unsigned()
+{
+ export APT_DONT_SIGN='InRelease'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ simulate_mitm_and_inject_evil_package
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+test_from_inrelease_to_unsigned_with_override()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ # setup archive with InRelease file
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+
+ # simulate moving to a unsigned but otherwise valid repo
+ simulate_mitm_and_inject_evil_package
+ generatereleasefiles '+2 hours'
+ find "$APTARCHIVE" -name '*Packages*' -exec touch -d '+2 hours' {} \;
+
+ # and ensure we can update to it (with enough force)
+ testfailure apt update
+ testfailure aptget update
+ testfailure aptget update --allow-insecure-repositories
+ testfailure aptget update --no-allow-insecure-repositories
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-downgrade-to-insecure=yes] #' rootdir/etc/apt/sources.list.d/*
+ testfailure aptget update --no-allow-insecure-repositories
+ testfailure apt update
+ testwarning apt update --allow-insecure-repositories \
+ -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ sed -i 's#^deb\(-src\)\? \[allow-downgrade-to-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+ # but that the individual packages are still considered untrusted
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ evil
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y evil
+}
+
+test_from_inrelease_to_norelease_with_override()
+{
+ # setup archive with InRelease file
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+
+ # simulate moving to a unsigned but otherwise valid repo
+ simulate_mitm_and_inject_evil_package
+ find "$APTARCHIVE" -name '*Release*' -delete
+ find "$APTARCHIVE" -name '*Packages*' -exec touch -d '+2 hours' {} \;
+
+ # and ensure we can update to it (with enough force)
+ testfailure aptget update
+ testfailure aptget update --allow-insecure-repositories
+ testwarning aptget update --allow-insecure-repositories \
+ -o Acquire::AllowDowngradeToInsecureRepositories=1 -o Debug::pkgAcquire::Worker=1 -o Debug::pkgAcquire::Auth=1
+ # but that the individual packages are still considered untrusted
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ evil
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y evil
+}
+
+test_cve_2012_0214()
+{
+ # see https://bugs.launchpad.net/ubuntu/+source/apt/+bug/947108
+ #
+ # it was possible to MITM the download so that InRelease/Release.gpg
+ # are not delivered (404) and a altered Release file was send
+ #
+ # apt left the old InRelease file in /var/lib/apt/lists and downloaded
+ # the unauthenticated Release file too giving the false impression that
+ # Release was authenticated
+ #
+ # Note that this is pretty much impossible nowadays because:
+ # a) InRelease is left as is, not split to InRelease/Release as it was
+ # in the old days
+ # b) we refuse to go from signed->unsigned
+ #
+ # Still worth having a regression test the simulates the condition
+
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # do what CVE-2012-0214 did
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+ inject_evil_package
+ # build valid Release file
+ aptftparchive -qq release ./aptarchive > aptarchive/dists/unstable/Release
+
+ assert_update_is_refused_and_last_good_state_used
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+
+ # ensure there is no _Release file downloaded
+ testfailure ls rootdir/var/lib/apt/lists/*_Release
+}
+
+test_subvert_inrelease()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # replace InRelease with something else
+ mv "$APTARCHIVE/dists/unstable/Release" "$APTARCHIVE/dists/unstable/InRelease"
+
+ testfailuremsg "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
+E: The repository 'file:${APTARCHIVE} unstable InRelease' is no longer signed.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+ # ensure we keep the repo
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+test_inrelease_to_invalid_inrelease()
+{
+ export APT_DONT_SIGN='Release.gpg'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # now remove InRelease and subvert Release do no longer verify
+ sed -i 's/^Codename:.*/Codename: evil!/' "$APTARCHIVE/dists/unstable/InRelease"
+ inject_evil_package
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ # ensure we keep the repo
+ testfailure grep 'evil' rootdir/var/lib/apt/lists/*InRelease
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+test_release_gpg_to_invalid_release_release_gpg()
+{
+ export APT_DONT_SIGN='InRelease'
+ setupaptarchive_with_lists_clean
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+
+ # now subvert Release do no longer verify
+ echo "Some evil data" >> "$APTARCHIVE/dists/unstable/Release"
+ inject_evil_package
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable Release: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Failed to fetch file:${APTARCHIVE}/dists/unstable/Release.gpg The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfailure grep 'evil' rootdir/var/lib/apt/lists/*Release
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ assert_repo_is_intact
+}
+
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# a "normal" package with source and binary
+buildsimplenativepackage 'foo' 'all' '2.0'
+
+# setup the archive and ensure we have a single package that installs fine
+setupaptarchive
+APTARCHIVE="$(readlink -f ./aptarchive)"
+assert_repo_is_intact
+
+# test the various cases where a repo may go from signed->unsigned
+msgmsg "test_from_inrelease_to_unsigned"
+test_from_inrelease_to_unsigned
+
+msgmsg "test_from_release_gpg_to_unsigned"
+test_from_release_gpg_to_unsigned
+
+# ensure we do not regress on CVE-2012-0214
+msgmsg "test_cve_2012_0214"
+test_cve_2012_0214
+
+# ensure InRelease can not be subverted
+msgmsg "test_subvert_inrelease"
+test_subvert_inrelease
+
+# ensure we revert to last good state if InRelease does not verify
+msgmsg "test_inrelease_to_invalid_inrelease"
+test_inrelease_to_invalid_inrelease
+
+# ensure we revert to last good state if Release/Release.gpg does not verify
+msgmsg "test_release_gpg_to_invalid_release_release_gpg"
+test_release_gpg_to_invalid_release_release_gpg
+
+# ensure we can override the downgrade error
+msgmsg "test_from_inrelease_to_unsigned_with_override"
+test_from_inrelease_to_unsigned_with_override
+msgmsg "test_from_inrelease_to_norelease_with_override"
+test_from_inrelease_to_norelease_with_override
diff --git a/test/integration/test-apt-update-not-modified b/test/integration/test-apt-update-not-modified
new file mode 100755
index 0000000..c6dbb8d
--- /dev/null
+++ b/test/integration/test-apt-update-not-modified
@@ -0,0 +1,183 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+confighashes 'SHA256'
+
+insertpackage 'unstable' 'apt' 'amd64,i386' '1.0'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+
+methodtest() {
+ msgmsg 'Test InRelease with' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a aptarchive/dists aptarchive/dists.good
+ # get our cache populated
+ testsuccess aptget update
+ listcurrentlistsdirectory > listsdir.lst
+
+ # hit again with a good cache
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # drop an architecture, which means the file should be gone now
+ configarchitecture 'i386'
+ sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Reading package lists..." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+
+ # readd arch so its downloaded again…
+ configarchitecture 'amd64' 'i386'
+ # … but oh noes, hashsum mismatch!
+ SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ breakfiles aptarchive/dists/unstable/main/binary-amd64/Packages.gz
+ testfailureequal "Hit:1 $1 unstable InRelease
+Get:2 $1 unstable/main amd64 Packages [$SIZE B]
+Err:2 $1 unstable/main amd64 Packages
+ Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+Reading package lists...
+E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+
+ # … now everything is fine again
+ testsuccessequal "Hit:1 $1 unstable InRelease
+Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ webserverconfig 'aptwebserver::support::modified-since' 'false'
+ webserverconfig 'aptwebserver::support::last-modified' 'false'
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+ webserverconfig 'aptwebserver::support::modified-since' 'true'
+ webserverconfig 'aptwebserver::support::last-modified' 'true'
+
+ msgmsg 'Test Release.gpg with' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ find aptarchive/dists -name 'InRelease' -delete
+ # get our cache populated
+ testsuccess aptget update
+ listcurrentlistsdirectory > listsdir.lst
+
+ # hit again with a good cache
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ # drop an architecture, which means the file should be gone now
+ configarchitecture 'i386'
+ sed '/_binary-amd64_Packages/ d' listsdir.lst > listsdir-without-amd64.lst
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Reading package lists..." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+
+ # readd arch so its downloaded again…
+ configarchitecture 'amd64' 'i386'
+ # … but oh noes, hashsum mismatch!
+ SIZE=$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ breakfiles 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz'
+ testfailureequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Get:4 $1 unstable/main amd64 Packages [$SIZE B]
+Err:4 $1 unstable/main amd64 Packages
+ Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
+Reading package lists...
+E: Failed to fetch $1/dists/unstable/main/binary-amd64/Packages.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz.bak' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/Release')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
+ testfileequal 'listsdir-without-amd64.lst' "$(listcurrentlistsdirectory)"
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+ find aptarchive/dists -name 'InRelease' -delete
+
+ # … now everything is fine again
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Hit:2 $1 unstable Release
+Get:4 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Reading package lists..." aptget update
+ testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+ webserverconfig 'aptwebserver::support::modified-since' 'false'
+ webserverconfig 'aptwebserver::support::last-modified' 'false'
+ testsuccessequal "Ign:1 $1 unstable InRelease
+ 404 Not Found
+Get:2 $1 unstable Release [$(stat -c '%s' 'aptarchive/dists/unstable/Release') B]
+Reading package lists..." aptget update
+ webserverconfig 'aptwebserver::support::modified-since' 'true'
+ webserverconfig 'aptwebserver::support::last-modified' 'true'
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+
+ # new release file, but the indexes are the same
+ redatereleasefiles '+2 hours'
+
+ rm -rf rootdir/var/lib/apt/lists.good
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.good
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists.good rootdir/var/lib/apt/lists
+ find rootdir/var/lib/apt/lists -name '*_Packages*' -delete
+ testsuccessequal "Get:1 $1 unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Get:2 $1 unstable/main amd64 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-amd64/Packages.gz') B]
+Get:3 $1 unstable/main i386 Packages [$(stat -c '%s' 'aptarchive/dists/unstable/main/binary-i386/Packages.gz') B]
+Reading package lists..." aptget update
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+}
+
+changetowebserver
+methodtest "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+methodtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-apt-update-releaseinfo-changes b/test/integration/test-apt-update-releaseinfo-changes
new file mode 100755
index 0000000..ee36c46
--- /dev/null
+++ b/test/integration/test-apt-update-releaseinfo-changes
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'earth' 'human' 'all' '1'
+
+getoriginfromsuite() { echo -n 'Earth'; }
+getlabelfromsuite() { echo -n 'Blue Planet'; }
+getcodenamefromsuite() { echo -n 'home'; }
+getreleaseversionfromsuite() { echo -n '1.0'; }
+getnotautomaticfromsuite() { echo -n 'yes'; }
+getbutautomaticupgradesfromsuite() { echo -n 'yes'; }
+setupaptarchive --no-update
+testsuccess aptget update
+
+cp -a aptarchive/dists aptarchive/dists.bak
+cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists.bak
+APTARCHIVE="$(readlink -f './aptarchive')"
+
+sed -i -e 's#^Origin: Earth#Origin: Mars#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Origin' value from 'Earth' to 'Mars'
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update
+testfailure apt update --allow-releaseinfo-change-label
+testsuccesswithnotice apt update --allow-releaseinfo-change
+testequal "All packages are up to date.
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Origin' value from 'Earth' to 'Mars'" tail -n 2 rootdir/tmp/testsuccesswithnotice.output
+
+rm -rf rootdir/var/lib/apt/lists
+cp -a rootdir/var/lib/apt/lists.bak rootdir/var/lib/apt/lists
+sed -i -e 's#^Label: Blue#Label: Red#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Origin' value from 'Earth' to 'Mars'
+E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Label' value from 'Blue Planet' to 'Red Planet'
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update
+testfailure apt update --allow-releaseinfo-change-label
+testfailuremsg "N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Origin' value from 'Earth' to 'Mars'
+E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Label' value from 'Blue Planet' to 'Red Planet'
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update --allow-releaseinfo-change-origin
+testsuccess apt update --allow-releaseinfo-change-origin --allow-releaseinfo-change-label -o quiet::ReleaseInfoChange=true
+
+# version changes are allowed by default
+sed -i -e 's#^Version: 1#Version: 2#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Version' value from '1.0' to '2.0'
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update --no-allow-releaseinfo-change-version
+testsuccesswithnotice apt update
+testequal "All packages are up to date.
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Version' value from '1.0' to '2.0'" tail -n 2 rootdir/tmp/testsuccesswithnotice.output
+
+sed -i -e 's#^Codename: home#Codename: colony#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Codename' value from 'home' to 'colony'
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update --no-allow-releaseinfo-change-codename
+testsuccesswithnotice apt update --allow-releaseinfo-change-codename
+testequal "All packages are up to date.
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Codename' value from 'home' to 'colony'" tail -n 2 rootdir/tmp/testsuccesswithnotice.output
+
+sed -i -e '/^ButAutomaticUpgrades: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its default priority for apt_preferences(5) from 100 to 1.
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update
+testsuccesswithnotice apt update --allow-releaseinfo-change
+testequal "All packages are up to date.
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its default priority for apt_preferences(5) from 100 to 1." tail -n 2 rootdir/tmp/testsuccesswithnotice.output
+
+sed -i -e '/^NotAutomatic: / d' -e '/^Codename: / a\
+Release-Notes: https://example.org/mars/release-notes' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its default priority for apt_preferences(5) from 1 to 500.
+N: More information about this can be found online in the Release notes at: https://example.org/mars/release-notes
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update
+testsuccesswithnotice apt update --allow-releaseinfo-change-defaultpin
+testequal "All packages are up to date.
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its default priority for apt_preferences(5) from 1 to 500.
+N: More information about this can be found online in the Release notes at: https://example.org/mars/release-notes" tail -n 3 rootdir/tmp/testsuccesswithnotice.output
+
+# Suite testing also needs codename adjustment, otherwise complaints about
+# mismatch between sources.list and Release file.
+sed -i -e 's#^Suite: earth#Suite: mars#' $(find ./aptarchive -name 'Release')
+sed -i -e 's#^Codename: colony#Codename: earth#' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailuremsg "E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Suite' value from 'earth' to 'mars'
+E: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Codename' value from 'colony' to 'earth'
+N: More information about this can be found online in the Release notes at: https://example.org/mars/release-notes
+N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details." apt update --no-allow-releaseinfo-change-suite
+testsuccesswithnotice apt update --allow-releaseinfo-change-codename
+testequal "N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Suite' value from 'earth' to 'mars'
+N: Repository 'file:$APTARCHIVE earth InRelease' changed its 'Codename' value from 'colony' to 'earth'
+N: More information about this can be found online in the Release notes at: https://example.org/mars/release-notes" tail -n 3 rootdir/tmp/testsuccesswithnotice.output
diff --git a/test/integration/test-apt-update-repeated-ims-hit b/test/integration/test-apt-update-repeated-ims-hit
new file mode 100755
index 0000000..74d46b3
--- /dev/null
+++ b/test/integration/test-apt-update-repeated-ims-hit
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+configcompression '.' 'bz2'
+
+echo 'Package: apt
+Priority: important
+Section: admin
+Installed-Size: 5984
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: i386
+Version: 0.8.7
+Filename: pool/main/a/apt/apt_0.8.7_i386.deb
+Size: 2140230
+MD5sum: 74769bfbcef9ebc4fa74f7a5271b9c08
+Description: Advanced front-end for dpkg
+Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c' > aptarchive/Packages
+compressfile aptarchive/Packages
+
+echo "Package: apt
+Description-en: Advanced front-end for dpkg
+ This is Debian's next generation front-end for the dpkg package manager.
+ It provides the apt-get utility and APT dselect method that provides a
+ simpler, safer way to install and upgrade packages.
+$MD5Sum" > aptarchive/en
+compressfile aptarchive/en
+
+echo "APT::FTPArchive::Release::Patterns:: \"en\";
+APT::FTPArchive::Release::Patterns:: \"en.*\";" > rootdir/etc/apt/apt.conf.d/ftparchivepattern
+
+export APT_DONT_SIGN='InRelease'
+setupaptarchive --no-update
+rm -f aptarchive/Packages aptarchive/en
+
+rm -f rootdir/etc/apt/trusted.gpg.d/*
+sed -i -e 's#^deb #deb [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+GPGERROR="W: GPG error: file:$APTARCHIVE Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE"
+
+msgmsg 'Running update again does not change result' '0'
+testwarningmsg "$GPGERROR" apt update
+listcurrentlistsdirectory > lists.before
+testsuccess grep 'aptarchive_en$' lists.before
+testsuccess grep 'aptarchive_Packages$' lists.before
+testsuccess grep 'aptarchive_Release$' lists.before
+testfailure grep 'aptarchive_Release.gpg$' lists.before
+
+for i in $(seq 1 3); do
+ msgmsg 'Running update again does not change result' "$i"
+ testwarningmsg "$GPGERROR" apt update
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+done
+
+find rootdir/var/lib/apt/lists -name '*Release*' -delete
+msgmsg 'Running update with a repository gaining hashsums'
+testwarningmsg "$GPGERROR" apt update
+testfileequal lists.before "$(listcurrentlistsdirectory)"
+
+changetowebserver
+find aptarchive -name '*Release*' -delete
+rm -rf rootdir/var/lib/apt/lists
+
+msgmsg 'Running update with no indexes' '0'
+testsuccess apt update
+listcurrentlistsdirectory > lists.before
+for i in $(seq 1 3); do
+ msgmsg 'Running update with no indexes' "$i"
+ testsuccess apt update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::Transaction=1
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+done
diff --git a/test/integration/test-apt-update-reporting b/test/integration/test-apt-update-reporting
new file mode 100755
index 0000000..cecf23a
--- /dev/null
+++ b/test/integration/test-apt-update-reporting
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+for i in $(seq 100); do
+ insertpackage 'unstable' "foo-$i" 'all' '1.0'
+ insertsource 'unstable' "foo-$i" 'all' '1.0'
+done
+
+setupaptarchive --no-update
+changetowebserver
+
+aptget update -o Debug::Acquire::Progress=1 2>progress.log >ignore.out
+
+has_progress() {
+ prev_percent=0.0
+ while read line; do
+ percent="$(echo "$line"|cut -b2-6)"
+ # need to cut the decimal point and digits because sh can not do
+ # float compare
+ if [ "${percent%%.*}" -lt "${prev_percent%%.*}" ]; then
+ cat progress.log
+ return 1
+ fi
+ prev_percent="$percent"
+ done < progress.log
+ return 0
+}
+
+msgtest "Testing that progress does not go backward"
+testsuccess --nomsg has_progress
diff --git a/test/integration/test-apt-update-rollback b/test/integration/test-apt-update-rollback
new file mode 100755
index 0000000..8235968
--- /dev/null
+++ b/test/integration/test-apt-update-rollback
@@ -0,0 +1,217 @@
+#!/bin/sh
+#
+# test that apt-get update is transactional
+#
+set -e
+
+avoid_ims_hit() {
+ touch -d '+1hour' aptarchive/dists/unstable/main/binary-i386/Packages*
+ touch -d '+1hour' aptarchive/dists/unstable/main/source/Sources*
+ touch -d '+1hour' aptarchive/dists/unstable/*Release*
+
+ touch -d '-1hour' rootdir/var/lib/apt/lists/*
+}
+
+create_fresh_archive()
+{
+ rm -rf aptarchive/*
+ rm -f rootdir/var/lib/apt/lists/_* rootdir/var/lib/apt/lists/partial/*
+
+ insertpackage 'unstable' 'old' 'all' '1.0'
+
+ setupaptarchive --no-update
+}
+
+add_new_package() {
+ insertpackage 'unstable' 'new' 'all' '1.0'
+ insertsource 'unstable' 'new' 'all' '1.0'
+
+ setupaptarchive --no-update "$@"
+}
+
+break_repository_sources_index() {
+ mv "$APTARCHIVE/dists/unstable/main/source/Sources.gz" "$APTARCHIVE/dists/unstable/main/source/Sources.gz.orig"
+ printf 'xxx' > "$APTARCHIVE/dists/unstable/main/source/Sources"
+ compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@"
+}
+
+start_with_good_inrelease() {
+ create_fresh_archive
+ testsuccess aptget update
+ listcurrentlistsdirectory > lists.before
+ testsuccessequal 'old/unstable 1.0 all' apt list -qq
+}
+
+test_inrelease_to_new_inrelease() {
+ msgmsg 'Test InRelease to new InRelease works fine'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ testsuccess aptget update -o Debug::Acquire::Transaction=1
+ testsuccessequal 'new/unstable 1.0 all
+old/unstable 1.0 all' apt list -qq
+}
+
+test_inrelease_to_broken_hash_reverts_all() {
+ msgmsg 'Test InRelease to broken InRelease reverts everything'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ # break the Sources file
+ break_repository_sources_index '+1hour'
+
+ # test the error condition
+ testfailureequal "E: Failed to fetch file:${APTARCHIVE}/dists/unstable/main/source/Sources.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+ # ensure that the Packages file is also rolled back
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testfailureequal "E: Unable to locate package new" aptget install new -s -qq
+}
+
+test_inrelease_to_valid_release() {
+ msgmsg 'Test InRelease to valid Release'
+ start_with_good_inrelease
+
+ add_new_package '+1hour'
+ # switch to a unsigned repo now
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ # update fails
+ testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq
+
+ # test that security downgrade was not successful
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testsuccess aptget install old -s
+ testfailure aptget install new -s
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
+}
+
+test_inrelease_to_release_reverts_all() {
+ msgmsg 'Test InRelease to broken Release reverts everything'
+ start_with_good_inrelease
+
+ # switch to a unsigned repo now
+ add_new_package '+1hour'
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ # break it
+ break_repository_sources_index '+1hour'
+
+ # ensure error
+ testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq # -o Debug::acquire::transaction=1
+
+ # ensure that the Packages file is also rolled back
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testsuccess aptget install old -s
+ testfailure aptget install new -s
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
+}
+
+test_unauthenticated_to_invalid_inrelease() {
+ msgmsg 'Test UnAuthenticated to invalid InRelease reverts everything'
+ create_fresh_archive
+ rm -f "$APTARCHIVE/dists/unstable/InRelease" "$APTARCHIVE/dists/unstable/Release.gpg"
+
+ testwarning aptget update --allow-insecure-repositories
+ listcurrentlistsdirectory > lists.before
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ old
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
+
+ # go to authenticated but not correct
+ add_new_package '+1hour'
+ break_repository_sources_index '+1hour'
+
+ testfailureequal "E: Failed to fetch file:$APTARCHIVE/dists/unstable/main/source/Sources.gz Hash Sum mismatch
+ Hashes of expected file:
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz.orig') [weak]
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz.orig' | cut -d' ' -f 1)
+ Hashes of received file:
+ - SHA256:$(sha256sum 'aptarchive/dists/unstable/main/source/Sources.gz' | cut -d' ' -f 1)
+ - Filesize:$(stat -c '%s' 'aptarchive/dists/unstable/main/source/Sources.gz') [weak]
+ Last modification reported: $(lastmodification 'aptarchive/dists/unstable/main/source/Sources.gz')
+ Release file created at: $(releasefiledate 'aptarchive/dists/unstable/InRelease')
+E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -maxdepth 1 -name '*_InRelease'
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ old
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
+}
+
+test_inrelease_to_unauth_inrelease() {
+ msgmsg 'Test InRelease to InRelease without good sig'
+ start_with_good_inrelease
+
+ signreleasefiles 'Marvin Paranoid'
+
+ testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E8525D47528144E2
+W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E8525D47528144E2
+W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
+
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+}
+
+test_inrelease_to_broken_gzip() {
+ msgmsg "Test InRelease to broken gzip"
+ start_with_good_inrelease
+
+ break_repository_sources_index '+1hour'
+ generatereleasefiles '+2hours'
+ signreleasefiles
+
+ # append junk at the end of the compressed file
+ echo "lala" >> "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
+ touch -d '+2min' "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
+ # remove uncompressed file to avoid fallback
+ rm "$APTARCHIVE/dists/unstable/main/source/Sources"
+
+ testfailure aptget update
+ testsuccess grep 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+}
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+export APT_DONT_SIGN='Release.gpg'
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+ROOTDIR="${TMPWORKINGDIRECTORY}/rootdir"
+APTARCHIVE_LISTS="$(echo "$APTARCHIVE" | tr "/" "_" )"
+
+# test the following cases:
+# - InRelease -> broken InRelease revert to previous state
+# - empty lists dir and broken remote leaves nothing on the system
+# - InRelease -> hashsum mismatch for one file reverts all files to previous state
+# - Release/Release.gpg -> hashsum mismatch
+# - InRelease -> Release with hashsum mismatch revert entire state and kills Release
+# - Release -> InRelease with broken Sig/Hash removes InRelease
+# going from Release/Release.gpg -> InRelease and vice versa
+# - unauthenticated -> invalid InRelease
+
+# stuff to do:
+# - ims-hit
+# - gzip-index tests
+
+test_inrelease_to_new_inrelease
+test_inrelease_to_broken_hash_reverts_all
+test_inrelease_to_valid_release
+test_inrelease_to_release_reverts_all
+test_unauthenticated_to_invalid_inrelease
+test_inrelease_to_unauth_inrelease
+test_inrelease_to_broken_gzip
diff --git a/test/integration/test-apt-update-simple b/test/integration/test-apt-update-simple
new file mode 100755
index 0000000..0d28034
--- /dev/null
+++ b/test/integration/test-apt-update-simple
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+insertpackage 'unstable' 'bar' 'amd64' '1'
+insertpackage 'unstable' 'bar' 'i386' '1'
+insertsource 'unstable' 'foo' 'all' '1'
+
+sed -e 's#^Description-en:#Description-de:#' \
+ aptarchive/dists/unstable/main/i18n/Translation-en > aptarchive/dists/unstable/main/i18n/Translation-de
+
+setupaptarchive --no-update
+changetowebserver
+
+# the framework modifies some configs to ensure testability,
+# at the expense of creating an environment which doesn't always
+# reflect apts "normal" behavior on a "normal" system
+echo 'Acquire::IndexTargets::Randomized "true";
+Acquire::Languages { "environment"; "en"; "de"; };
+' > rootdir/etc/apt/apt.conf.d/restore-simplicity
+
+testempty aptget indextargets
+testsuccess aptget update
+testequal 'main/source/Sources
+main/binary-amd64/Packages
+main/binary-all/Packages
+main/i18n/Translation-en
+main/i18n/Translation-de' aptget indextargets --format '$(METAKEY)'
+
+# Check that -o Acquire::Queue-Mode=access does not crash
+find rootdir/var/lib/apt/lists/ -type f -delete
+if [ "$(command dpkg --print-architecture)" = "armhf" ]; then
+ msgskip "valgrind on armhf is broken"
+ testsuccess aptget update -o Acquire::Queue-Mode=access
+else
+ testsuccess valgrind aptget update -o Acquire::Queue-Mode=access
+fi
diff --git a/test/integration/test-apt-update-stale b/test/integration/test-apt-update-stale
new file mode 100755
index 0000000..a863458
--- /dev/null
+++ b/test/integration/test-apt-update-stale
@@ -0,0 +1,44 @@
+#!/bin/sh
+#
+# Ensure that a MITM can not stale the Packages/Sources without
+# raising a error message. Note that the Release file is protected
+# via the "Valid-Until" header
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+changetowebserver
+
+echo "Acquire::Languages \"none\";" > rootdir/etc/apt/apt.conf.d/00nolanguages
+testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+listcurrentlistsdirectory > lists.before
+
+# insert new version
+mkdir aptarchive/dists/unstable/main/binary-i386/saved
+cp -p aptarchive/dists/unstable/main/binary-i386/Packages* \
+ aptarchive/dists/unstable/main/binary-i386/saved
+insertpackage 'unstable' 'foo' 'i386' '2.0'
+touch -d '+1 hour' aptarchive/dists/unstable/main/binary-i386/Packages
+compressfile aptarchive/dists/unstable/main/binary-i386/Packages
+# ensure that we do not get a I-M-S hit for the Release file
+
+generatereleasefiles '+1hour'
+signreleasefiles
+
+# but now only deliver the previous Packages file instead of the new one
+# (simulating a stale attack)
+cp -p aptarchive/dists/unstable/main/binary-i386/saved/Packages* \
+ aptarchive/dists/unstable/main/binary-i386/
+
+# ensure this raises an error
+testfailure aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+testsuccess grep 'File has unexpected size' rootdir/tmp/testfailure.output
+testfileequal lists.before "$(listcurrentlistsdirectory)"
diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions
new file mode 100755
index 0000000..1f30d77
--- /dev/null
+++ b/test/integration/test-apt-update-transactions
@@ -0,0 +1,85 @@
+#!/bin/sh
+set -e
+
+# ensure that an update will only succeed entirely or not at all
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+configcompression '.' 'gz'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'i386' '1.0'
+
+setupaptarchive --no-update
+
+breakfile() {
+ breakfiles "$1" "${1}.gz"
+}
+restorefile() {
+ unbreakfiles "$1" "${1}.gz"
+}
+
+testrun() {
+ rm -rf aptarchive/dists.good
+ cp -a aptarchive/dists aptarchive/dists.good
+ insertpackage 'unstable' 'bar' 'i386' '1.0'
+ insertsource 'unstable' 'bar' 'i386' '1.0'
+ buildaptarchivefromfiles '+1 hour'
+
+ # produce an unsigned repository
+ find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+ testfailure aptget update --no-allow-insecure-repositories
+ testfileequal "$1" "$(listcurrentlistsdirectory)"
+
+ # signed but broken
+ signreleasefiles
+
+ onehashbroken() {
+ rm -rf rootdir/var/lib/apt/lists/partial
+ testfailure aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+ # each file generates two messages with this string
+ testequal '2' grep --count 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+ testfileequal "$1" "$(listcurrentlistsdirectory)"
+ }
+
+ breakfile aptarchive/dists/unstable/main/binary-i386/Packages
+ onehashbroken "$1"
+ restorefile aptarchive/dists/unstable/main/binary-i386/Packages
+
+ breakfile aptarchive/dists/unstable/main/source/Sources
+ onehashbroken "$1"
+ restorefile aptarchive/dists/unstable/main/source/Sources
+
+ rm -rf aptarchive/dists
+ cp -a aptarchive/dists.good aptarchive/dists
+}
+
+testsetup() {
+ msgmsg 'Test with no initial data over' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ mkdir -p rootdir/var/lib/apt/lists/partial
+ listcurrentlistsdirectory > listsdir.lst
+ testrun 'listsdir.lst'
+
+ msgmsg 'Test with initial data over' "$1"
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=1
+ listcurrentlistsdirectory > listsdir.lst
+ testrun 'listsdir.lst'
+}
+
+testsetup 'file'
+
+changetowebserver
+webserverconfig 'aptwebserver::support::modified-since' 'false' "$1"
+webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also
+webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'none' "$1"
+
+testsetup 'http'
+
+changetohttpswebserver
+
+testsetup 'https'
diff --git a/test/integration/test-apt-update-unauth b/test/integration/test-apt-update-unauth
new file mode 100755
index 0000000..ef1e4ec
--- /dev/null
+++ b/test/integration/test-apt-update-unauth
@@ -0,0 +1,80 @@
+#!/bin/sh
+#
+# Ensure that when going from unauthenticated to authenticated all
+# files are checked again
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+umask 022
+
+setupenvironment
+configarchitecture "i386"
+configcompression '.' 'xz'
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'any' '1.0'
+
+setupaptarchive --no-update
+changetowebserver
+
+# FIXME:
+# - also check the unauth -> auth success case, i.e. that all files are
+# reverified
+runtest() {
+ # start unauthenticated
+ rm -rf rootdir/var/lib/apt/lists/
+ find aptarchive/ -name '*Release*' -delete
+
+ testwarning aptget update --allow-insecure-repositories
+
+ # become authenticated
+ generatereleasefiles
+ signreleasefiles
+
+ # move uncompressed away
+ mv aptarchive/dists/unstable/main/binary-i386/Packages \
+ aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed
+
+ # and ensure we re-check the downloaded data
+
+ # change the local packages file
+ PKGS=$(ls rootdir/var/lib/apt/lists/*Packages*)
+ echo "meep" > $PKGS
+ listcurrentlistsdirectory > lists.before
+
+ # update and ensure all is reverted on the hashsum failure
+ testfailure aptget update -o Debug::Acquire::Transaction=1 -o Debug::pkgAcquire::Auth=1 -o Debug::pkgAcquire::worker=0 -o Debug::acquire::http=0
+
+ # ensure we have before what we have after
+ msgtest 'Check rollback on going from' 'unauth -> auth'
+ listcurrentlistsdirectory > lists.after
+ if cmp lists.before lists.after; then
+ msgpass
+ else
+ echo >&2
+ echo >&2 '### Output of previous apt-get update ###'
+ cat >&2 rootdir/tmp/testfailure.output || true
+ echo >&2 '### Changes in the lists-directory: ###'
+ diff -u >&2 lists.before lists.after || true
+ echo >&2 '### Contents of the lists-directory: ###'
+ ls -l rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists/partial || true
+ msgfail
+ fi
+
+ # move uncompressed back for release file
+ mv aptarchive/dists/unstable/main/binary-i386/Packages.uncompressed \
+ aptarchive/dists/unstable/main/binary-i386/Packages
+}
+
+for COMPRESSEDINDEXES in 'false' 'true'; do
+ echo "Acquire::GzipIndexes \"$COMPRESSEDINDEXES\";" > rootdir/etc/apt/apt.conf.d/compressindexes
+ if $COMPRESSEDINDEXES; then
+ msgmsg 'Run tests with GzipIndexes enabled'
+ else
+ msgmsg 'Run tests with GzipIndexes disabled'
+ fi
+ runtest
+done
diff --git a/test/integration/test-apt-update-weak-hashes b/test/integration/test-apt-update-weak-hashes
new file mode 100755
index 0000000..c44ab9a
--- /dev/null
+++ b/test/integration/test-apt-update-weak-hashes
@@ -0,0 +1,202 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+confighashes 'MD5'
+export APT_DONT_SIGN=''
+
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'any' '1.0'
+
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f ./aptarchive)"
+
+testnopkg() {
+ testnopackage "$@"
+ testnosrcpackage "$@"
+}
+testbadpkg() {
+ testempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+ testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*Release'
+ testnotempty apt show "$@"
+ testnotempty apt showsrc "$@"
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ $*
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y "$@"
+ testfailureequal "WARNING: The following packages cannot be authenticated!
+ $*
+E: Some packages could not be authenticated" aptget source -qq "$@"
+}
+
+testrun() {
+ local TYPE="$1"
+ local FILENAME="$2"
+ shift 2
+ local MANGLED="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "$FILENAME" | sed 's#/#_#g')"
+ msgmsg "$TYPE contains only weak hashes"
+ confighashes 'MD5'
+ generatereleasefiles
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ listcurrentlistsdirectory > lists.before
+ testfailuremsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+E: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnopkg 'foo'
+ else
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ fi
+
+ msgmsg "$TYPE contains only weak hashes, but source allows weak"
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-weak=yes] #' rootdir/etc/apt/sources.list.d/*
+ genericprepare
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED} which is considered strong enough for security purposes
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ sed -i 's#^deb\(-src\)\? \[allow-weak=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+
+ msgmsg "$TYPE contains no hashes"
+ generatereleasefiles
+ sed -i -e '/^ / d' -e '/^MD5Sum:/ d' "$APTARCHIVE/dists/unstable/Release"
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ listcurrentlistsdirectory > lists.before
+ testfailuremsg "W: No Hash entry in Release file ${MANGLED}
+E: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+ testfileequal lists.before "$(listcurrentlistsdirectory)"
+ testnopkg 'foo'
+ else
+ testwarningmsg "W: No Hash entry in Release file ${MANGLED}
+W: The repository 'file:${APTARCHIVE} unstable $(basename "$FILENAME")' provides only weak security information.
+N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update "$@"
+ testbadpkg 'foo'
+ fi
+
+ msgmsg "$TYPE contains only weak hashes for some files"
+ confighashes 'MD5' 'SHA256'
+ generatereleasefiles
+ sed -i '/^ [0-9a-fA-Z]\{64\} .*Sources$/d' "$APTARCHIVE/dists/unstable/Release"
+ signreleasefiles
+ preparetest
+ if [ -z "$1" ]; then
+ testwarningmsg "W: Skipping acquire of configured file 'main/source/Sources' as repository 'file:${APTARCHIVE} unstable InRelease' provides only weak security information for it" apt update
+ testnosrcpackage foo
+ else
+ rm -f rootdir/var/lib/apt/lists/partial/*
+ testsuccess apt update "$@"
+ testnotempty apt showsrc foo
+ fi
+ testsuccess apt show foo
+}
+
+genericprepare() {
+ rm -rf rootdir/var/lib/apt/lists
+ mkdir -p rootdir/var/lib/apt/lists/partial
+ touch rootdir/var/lib/apt/lists/lock
+ local RELEASEGPG="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "${APTARCHIVE}/dists/unstable/Release.gpg" | sed 's#/#_#g')"
+ touch "$RELEASEGPG"
+ chmod 644 "$RELEASEGPG"
+ local INRELEASE="$(readlink -f ./rootdir)/var/lib/apt/lists/partial/$(echo "${APTARCHIVE}/dists/unstable/InRelease" | sed 's#/#_#g')"
+ touch "$INRELEASE"
+ chmod 644 "$INRELEASE"
+}
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/Release" "${APTARCHIVE}/dists/unstable/Release.gpg"
+ genericprepare
+}
+testrun 'InRelease' "${APTARCHIVE}/dists/unstable/InRelease"
+testrun 'InRelease' "${APTARCHIVE}/dists/unstable/InRelease" --allow-weak-repositories -o APT::Get::List-Cleanup=0
+
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/InRelease"
+ genericprepare
+}
+testrun 'Release+Release.gpg' "${APTARCHIVE}/dists/unstable/Release"
+testrun 'Release+Release.gpg' "${APTARCHIVE}/dists/unstable/Release" --allow-weak-repositories -o APT::Get::List-Cleanup=0
+
+preparetest() {
+ rm -f "${APTARCHIVE}/dists/unstable/InRelease" "${APTARCHIVE}/dists/unstable/Release.gpg"
+ genericprepare
+}
+
+msgmsg 'Moving between Release files with good and bad hashes'
+rm -rf rootdir/var/lib/apt/lists
+confighashes 'MD5'
+generatereleasefiles 'now - 7 days'
+signreleasefiles
+testfailure apt update
+testnopkg 'foo'
+testwarning apt update --allow-weak-repositories
+testbadpkg 'foo'
+
+confighashes 'MD5' 'SHA256'
+rm -rf aptarchive/dists
+insertpackage 'unstable' 'foo2' 'i386' '1.0'
+insertsource 'unstable' 'foo2' 'any' '1.0'
+setupaptarchive --no-update 'now - 5 days'
+testsuccess apt update
+testnopkg foo
+testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+testnotempty apt show foo2
+testnotempty apt showsrc foo2
+
+confighashes 'MD5'
+rm -rf aptarchive/dists
+insertpackage 'unstable' 'foo3' 'i386' '1.0'
+insertsource 'unstable' 'foo3' 'any' '1.0'
+setupaptarchive --no-update 'now - 3 days'
+testfailure apt update
+testnopkg foo
+testnopkg foo3
+testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*InRelease' -o -name '*Release.gpg'
+testnotempty apt show foo2
+testnotempty apt showsrc foo2
+testwarning apt update --allow-weak-repositories
+testnopkg foo2
+testbadpkg foo3
+
+msgmsg 'Working with packages guarded only by weak hashes'
+confighashes 'MD5'
+rm -rf aptarchive/dists
+buildsimplenativepackage 'foo4' 'i386' '1' 'unstable'
+setupaptarchive --no-update
+testfailure apt update
+confighashes 'SHA256'
+generatereleasefiles 'now - 1 day'
+signreleasefiles
+testsuccess apt update
+cd downloaded
+testfailure apt download foo4
+cp ../rootdir/tmp/testfailure.output download.output
+testfailure grep 'Hash Sum mismatch' download.output
+testsuccess grep 'Insufficient information' download.output
+
+testsuccess apt install foo4 -s
+testfailure apt install foo4 -dy
+cp ../rootdir/tmp/testfailure.output install.output
+testfailure grep 'Hash Sum mismatch' install.output
+testsuccess grep 'Insufficient information' download.output
+
+testsuccess apt source foo4
+cp ../rootdir/tmp/testsuccess.output source.output
+testsuccess grep 'Skipping download of file' source.output
+testfailure test -e foo4_1.dsc
+testfailure test -e foo4_1.tar.*
+cd ..
diff --git a/test/integration/test-architecture-specification-parsing b/test/integration/test-architecture-specification-parsing
new file mode 100755
index 0000000..2319938
--- /dev/null
+++ b/test/integration/test-architecture-specification-parsing
@@ -0,0 +1,120 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+# we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
+NATIVE="$(command dpkg --print-architecture)"
+configarchitecture "${NATIVE}" 'armel'
+
+buildsimplenativepackage 'pkg-arch-foo' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [${NATIVE} !${NATIVE}]
+Depends: foo [${NATIVE} !${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-no-foo' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [!${NATIVE} ${NATIVE}]
+Depends: foo [!${NATIVE} ${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-foo-unrelated-no' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [!someos-any ${NATIVE}]
+Depends: foo [!someos-any ${NATIVE}]"
+buildsimplenativepackage 'pkg-arch-foo-unrelated-no2' "$NATIVE" '1.0' 'stable' "Build-Depends: foo [${NATIVE} !someos-any]
+Depends: foo [${NATIVE} !someos-any]"
+buildsimplenativepackage 'no-depends' 'armel' '1.0' 'stable' 'Build-Depends: foo [armeb], bar [arm]
+Depends: foo [armeb], bar [arm]'
+
+buildsimplenativepackage 'foo' "$NATIVE" '1.0' 'stable'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ pkg-arch-no-foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst pkg-arch-no-foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-no-foo (1.0 stable [${NATIVE}])" aptget install pkg-arch-no-foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo-unrelated-no
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo-unrelated-no (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo-unrelated-no (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo-unrelated-no -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo pkg-arch-foo-unrelated-no2
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Inst pkg-arch-foo-unrelated-no2 (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])
+Conf pkg-arch-foo-unrelated-no2 (1.0 stable [${NATIVE}])" aptget install pkg-arch-foo-unrelated-no2 -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo -s
+
+testsuccessequal 'Reading package lists...
+pkg-arch-no-foo has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget build-dep pkg-arch-no-foo -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo-unrelated-no -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 stable [${NATIVE}])
+Conf foo (1.0 stable [${NATIVE}])" aptget build-dep pkg-arch-foo-unrelated-no2 -s
+
+testsuccessequal 'Reading package lists...
+no-depends has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget build-dep no-depends -s
+
+# this is not really testing APT - more that dpkg is in line with us
+configarchitecture 'amd64' 'armel'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ no-depends:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst no-depends:armel (1.0 stable [armel])
+Conf no-depends:armel (1.0 stable [armel])' aptget install no-depends -s
diff --git a/test/integration/test-authentication-basic b/test/integration/test-authentication-basic
new file mode 100755
index 0000000..784a00c
--- /dev/null
+++ b/test/integration/test-authentication-basic
@@ -0,0 +1,153 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+changetohttpswebserver --authorization="$(printf '%s' 'star@irc:hunter2' | base64 )"
+
+echo 'See, when YOU type hunter2, it shows to us as *******' > aptarchive/bash
+echo 'Debug::Acquire::netrc "true";' > rootdir/etc/apt/apt.conf.d/netrcdebug.conf
+
+testauthfailure() {
+ testfailure apthelper download-file "${1}/bash" ./downloaded/bash
+ # crappy test, but http and https output are wastely different…
+ testsuccess grep 401 rootdir/tmp/testfailure.output
+ testfailure test -s ./downloaded/bash
+}
+
+testauthsuccess() {
+ testsuccess apthelper download-file "${1}/bash" ./downloaded/bash
+ testfileequal ./downloaded/bash "$(cat aptarchive/bash)"
+ testfilestats ./downloaded/bash '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
+ rm -f ./downloaded/bash
+
+ # lets see if got/retains acceptable permissions
+ if [ -n "$AUTHCONF" ]; then
+ if [ "$(id -u)" = '0' ]; then
+ testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:$(id -gn):600"
+ else
+ testfilestats "$AUTHCONF" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:600"
+ fi
+ fi
+
+ rm -rf rootdir/var/lib/apt/lists
+ if expr index "$1" '@' >/dev/null; then
+ testsuccesswithnotice aptget update
+ else
+ testsuccess aptget update
+ fi
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget install foo -s
+}
+
+authfile() {
+ local AUTHCONF="${2:-rootdir/etc/apt/auth.conf}"
+ mkdir -p "$(dirname "$AUTHCONF")"
+ rm -f "$AUTHCONF"
+ printf '%s' "$1" > "$AUTHCONF"
+ chmod 600 "$AUTHCONF"
+}
+
+runtest() {
+ # unauthorized fails
+ authfile ''
+ testauthfailure "$1"
+
+ protocol="${1%%://*}"
+
+ # good auth
+ authfile "machine ${protocol}://localhost
+login star@irc
+password hunter2"
+ testauthsuccess "$1"
+
+ # bad auth
+ authfile "machine ${protocol}://localhost
+login anonymous
+password hunter2"
+ testauthfailure "$1"
+
+ # 2 stanzas: unmatching + good auth
+ authfile "machine ${protocol}://debian.org
+login debian
+password jessie
+
+machine ${protocol}://localhost
+login star@irc
+password hunter2"
+ testauthsuccess "$1"
+
+ # no protocol specifier
+ authfile "machine localhost
+login star@irc
+password hunter2"
+ if [ "$protocol" = "https" ]; then
+ testauthsuccess "$1"
+ else
+ testfailure apthelper download-file "${1}/bash" ./downloaded/bash
+ testsuccessequal "W: ${1}/bash: ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/auth.conf: Credentials for localhost match, but the protocol is not encrypted. Annotate with http:// to use." grep "Credentials.*match" rootdir/tmp/testfailure.output
+ testauthfailure "$1"
+ fi
+
+ # wrong protocol specifier
+ if [ "$protocol" = "https" ]; then
+ authfile "machine http://localhost
+login star@irc
+password hunter2"
+ else
+ authfile "machine https://localhost
+login star@irc
+password hunter2"
+ fi
+ testauthfailure "$1"
+
+ # delete file, make sure it fails; add auth.conf.d snippet, works again.
+ rm rootdir/etc/apt/auth.conf
+ testauthfailure "$1"
+
+ authfile "machine ${protocol}://localhost
+login star@irc
+password hunter2" rootdir/etc/apt/auth.conf.d/myauth.conf
+ testauthsuccess "$1"
+ rm rootdir/etc/apt/auth.conf.d/myauth.conf
+}
+
+msgmsg 'server basic auth'
+rewritesourceslist "http://localhost:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+rewritesourceslist "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
+authfile ''
+testauthsuccess "http://star%40irc:hunter2@localhost:${APTHTTPPORT}"
+rewritesourceslist "https://localhost:${APTHTTPSPORT}"
+runtest "https://localhost:${APTHTTPSPORT}"
+rewritesourceslist "http://localhost:${APTHTTPPORT}"
+
+msgmsg 'proxy to server basic auth'
+webserverconfig 'aptwebserver::request::absolute' 'uri'
+# using ip instead of localhost avoids picking up the auth for the repo
+# for the proxy as well as we serve them both over the same server…
+export http_proxy="http://127.0.0.1:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+unset http_proxy
+
+msgmsg 'proxy basic auth to server basic auth'
+webserverconfig 'aptwebserver::proxy-authorization' "$(printf 'moon:deer2' | base64)"
+export http_proxy="http://moon:deer2@localhost:${APTHTTPPORT}"
+runtest "http://localhost:${APTHTTPPORT}"
+
+msgmsg 'proxy basic auth to server'
+authfile ''
+webserverconfig 'aptwebserver::authorization' ''
+testauthsuccess "http://localhost:${APTHTTPPORT}"
diff --git a/test/integration/test-bug-1053887-regex-return-failure b/test/integration/test-bug-1053887-regex-return-failure
new file mode 100755
index 0000000..46a0379
--- /dev/null
+++ b/test/integration/test-bug-1053887-regex-return-failure
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+rm -f rootdir/etc/apt/sources.list
+rm -f rootdir/etc/apt/sources.list.d/*
+
+insertinstalledpackage 'foo' 'all' '1'
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'foo' for regex '^foo$'
+Package foo is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+E: Version '2' for 'foo' was not found" apt install '^foo$'=2
diff --git a/test/integration/test-bug-254770-segfault-if-cache-not-buildable b/test/integration/test-bug-254770-segfault-if-cache-not-buildable
new file mode 100755
index 0000000..6f6e1ab
--- /dev/null
+++ b/test/integration/test-bug-254770-segfault-if-cache-not-buildable
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+msgtest 'Test run as' 'non-root'
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'root has by definition no problems accessing files'
+ exit 0
+else
+ msgpass
+fi
+
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+addtrap 'prefix' 'chmod a+x rootdir/var/lib/dpkg;'
+chmod a-x rootdir/var/lib/dpkg
+
+testsegfault() {
+ msgtest "No segfault in" "$*"
+ local TEST="$("$@" 2>&1 | grep -v 'E:')"
+ if [ -z "$TEST" ]; then
+ msgpass
+ else
+ echo
+ echo "$TEST"
+ msgfail
+ fi
+}
+
+echo 'quiet 2;' > rootdir/etc/apt/apt.conf.d/00be-quiet
+
+testsegfault aptcache gencaches
+testsegfault aptcache showpkg
+testsegfault aptcache showsrc
+testsegfault aptcache stats
+testsegfault aptcache dump
+testsegfault aptcache dumpavail
+testsegfault aptcache unmet
+testsegfault aptcache search
+testsegfault aptcache show apt
+testsegfault aptcache depends apt
+testsegfault aptcache rdepends apt
+testsegfault aptcache pkgnames apt
+testsegfault aptcache dotty apt
+testsegfault aptcache xvcg apt
+testsegfault aptcache policy apt
+
+testsegfault aptget update
+testsegfault aptget upgrade
+testsegfault aptget dselect-upgrade
+testsegfault aptget dist-upgrade
+testsegfault aptget install apt
+testsegfault aptget remove apt
+testsegfault aptget purge apt
+testsegfault aptget source apt
+testsegfault aptget build-dep apt
+testsegfault aptget check
+testsegfault aptget clean
+testsegfault aptget autoclean
+testsegfault aptget autoremove
diff --git a/test/integration/test-bug-330162-encoded-tar-header b/test/integration/test-bug-330162-encoded-tar-header
new file mode 100755
index 0000000..b779bbc
--- /dev/null
+++ b/test/integration/test-bug-330162-encoded-tar-header
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+msgtest 'Test apt-ftparchive with encoded tar header package'
+cp "$TESTDIR/deb-bug-330162-encoded-tar-header.deb" aptarchive/
+testsuccess aptftparchive packages aptarchive/
diff --git a/test/integration/test-bug-407511-fail-invalid-default-release b/test/integration/test-bug-407511-fail-invalid-default-release
new file mode 100755
index 0000000..0e1b5ef
--- /dev/null
+++ b/test/integration/test-bug-407511-fail-invalid-default-release
@@ -0,0 +1,66 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'cool' 'all' '1.0-1'
+
+getcodenamefromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n 'sid'
+ else
+ echo -n "$SUITE"
+ fi
+}
+getreleaseversionfromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n '42.0'
+ else
+ echo -n '0.8.15'
+ fi
+}
+
+getlabelfromsuite() {
+ if [ "$SUITE" = 'unstable' ]; then
+ echo -n 'UnstableTestcases'
+ else
+ echo -n 'Testcases'
+ fi
+}
+
+setupaptarchive
+
+passdist() {
+ msgtest 'Test that target-release is accepted' $1
+ testsuccess --nomsg aptget dist-upgrade -t $1
+ msgtest 'Test that target-release pins with' $1
+ aptcache policy -t $1 | grep -q ' 990' && msgpass || msgfail
+}
+
+faildist() {
+ msgtest 'Test that target-release is refused' $1
+ testfailure --nomsg aptget dist-upgrade -t $1
+}
+
+msgtest 'Test that no default-release is active in this test' 'setup'
+aptcache policy | grep -q ' 990' && msgfall || msgpass
+
+passdist unstable
+passdist sid
+faildist sidd
+faildist stable
+passdist 42.0
+passdist 42.*
+passdist 42*
+passdist 4*.0
+faildist 21.0
+faildist 21*
+# we accept, but don't validate the following
+passdist a=unstable
+passdist n=sid
+passdist v=42.0
+passdist c=main
+passdist l=UnstableTestcases
diff --git a/test/integration/test-bug-470115-new-and-tighten-recommends b/test/integration/test-bug-470115-new-and-tighten-recommends
new file mode 100755
index 0000000..f27990e
--- /dev/null
+++ b/test/integration/test-bug-470115-new-and-tighten-recommends
@@ -0,0 +1,174 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'cool' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'coolstuff' 'all' '1'
+
+insertpackage 'unstable' 'cool' 'all' '2'
+insertpackage 'unstable' 'stuff' 'all' '2'
+insertpackage 'unstable' 'coolstuff' 'all' '2'
+insertpackage 'unstable' 'super' 'all' '2'
+
+insertinstalledpackage 'tighten-cool' 'all' '1' 'Recommends: cool (>= 1)'
+insertpackage 'unstable' 'tighten-cool' 'all' '2' 'Recommends: cool (>= 2)'
+
+insertinstalledpackage 'tighten-coolorstuff' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 1)'
+insertpackage 'unstable' 'tighten-coolorstuff' 'all' '2' 'Recommends: stuff (>= 2) | cool (>= 2)'
+
+insertinstalledpackage 'tighten-coolorstuff2' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 1)'
+insertpackage 'unstable' 'tighten-coolorstuff2' 'all' '2' 'Recommends: stuff2 (>= 2) | cool (>= 2)'
+
+insertinstalledpackage 'newrec-cool' 'all' '1'
+insertpackage 'unstable' 'newrec-cool' 'all' '2' 'Recommends: cool (>= 2)'
+
+insertinstalledpackage 'newrec-super' 'all' '1'
+insertpackage 'unstable' 'newrec-super' 'all' '2' 'Recommends: super'
+
+insertinstalledpackage 'newrec-coolorstuff' 'all' '1'
+insertpackage 'unstable' 'newrec-coolorstuff' 'all' '2' 'Recommends: cool (>= 2) | stuff (>= 2)'
+
+insertinstalledpackage 'cool-gone' 'all' '1' 'Recommends: cool (>= 1) | stuff (>= 2)'
+insertpackage 'unstable' 'cool-gone' 'all' '2' 'Recommends: stuff (>= 2)'
+
+insertinstalledpackage 'super-overtake' 'all' '1' 'Recommends: cool | super, stuff | super'
+insertpackage 'unstable' 'super-overtake' 'all' '2' 'Recommends: stuff (>= 3) | super, super | cool (>= 2)'
+
+insertinstalledpackage 'upgrade-over-new' 'all' '1' 'Recommends: cool'
+insertpackage 'unstable' 'upgrade-over-new' 'all' '2' 'Recommends: cool (>= 2) | super'
+
+insertinstalledpackage 'now-satisfiable' 'all' '1' 'Recommends: cool (>= 3)'
+insertpackage 'unstable' 'now-satisfiable' 'all' '2' 'Recommends: cool (>= 2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool tighten-cool
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst tighten-cool [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf tighten-cool (2 unstable [all])' aptget install tighten-cool -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following packages will be upgraded:
+ stuff tighten-coolorstuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst stuff [1] (2 unstable [all])
+Inst tighten-coolorstuff [1] (2 unstable [all])
+Conf stuff (2 unstable [all])
+Conf tighten-coolorstuff (2 unstable [all])' aptget install tighten-coolorstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool tighten-coolorstuff2
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst tighten-coolorstuff2 [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf tighten-coolorstuff2 (2 unstable [all])' aptget install tighten-coolorstuff2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool newrec-cool
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst newrec-cool [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf newrec-cool (2 unstable [all])' aptget install newrec-cool -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ super
+The following NEW packages will be installed:
+ super
+The following packages will be upgraded:
+ newrec-super
+1 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
+Inst newrec-super [1] (2 unstable [all])
+Inst super (2 unstable [all])
+Conf newrec-super (2 unstable [all])
+Conf super (2 unstable [all])' aptget install newrec-super -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool newrec-coolorstuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst newrec-coolorstuff [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf newrec-coolorstuff (2 unstable [all])' aptget install newrec-coolorstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following packages will be upgraded:
+ cool-gone stuff
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool-gone [1] (2 unstable [all])
+Inst stuff [1] (2 unstable [all])
+Conf cool-gone (2 unstable [all])
+Conf stuff (2 unstable [all])' aptget install cool-gone -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ super
+The following NEW packages will be installed:
+ super
+The following packages will be upgraded:
+ super-overtake
+1 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
+Inst super (2 unstable [all])
+Inst super-overtake [1] (2 unstable [all])
+Conf super (2 unstable [all])
+Conf super-overtake (2 unstable [all])' aptget install super-overtake -s
+
+# if super would be in front, we would get a new here as it is new and
+# the first option in an or-group should be the preferred one…
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following packages will be upgraded:
+ cool upgrade-over-new
+2 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
+Inst cool [1] (2 unstable [all])
+Inst upgrade-over-new [1] (2 unstable [all])
+Conf cool (2 unstable [all])
+Conf upgrade-over-new (2 unstable [all])' aptget install upgrade-over-new -s
+
+# the recommends wasn't used before so while we could do it now,
+# the user doesn't seem to need it so avoid upgrading it
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ cool
+The following packages will be upgraded:
+ now-satisfiable
+1 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
+Inst now-satisfiable [1] (2 unstable [all])
+Conf now-satisfiable (2 unstable [all])' aptget install now-satisfiable -s
diff --git a/test/integration/test-bug-490000-search-in-all-translations b/test/integration/test-bug-490000-search-in-all-translations
new file mode 100755
index 0000000..26c1618
--- /dev/null
+++ b/test/integration/test-bug-490000-search-in-all-translations
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "${TESTDIR}/framework"
+
+setupenvironment
+
+ARCH='amd64'
+DIST='unstable'
+
+PKG_NAME='foo'
+PKG_VERSION='1.0'
+
+SHORT_DESCRIPTION_EN='have you fooed today?'
+LONG_DESCRIPTION_EN="${SHORT_DESCRIPTION_EN}
+ Where there's foo, there's fire."
+
+SHORT_DESCRIPTION_ZZ='bar alter ego'
+LONG_DESCRIPTION_ZZ="${SHORT_DESCRIPTION_ZZ}
+ He who foos last foos best."
+
+configure_languages()
+{
+ {
+ echo '#clear Acquire::Languages;'
+ echo 'Acquire::Languages {'
+ for language in "$@"
+ do
+ echo " \"${language}\";"
+ done
+ echo '};'
+ } > rootdir/etc/apt/apt.conf.d/languages.conf
+}
+
+new_translation_record()
+{
+ echo "Package: ${1:?Package name expected}"
+ echo "Description-md5: ${2:?Description-md5 expected}"
+ echo "Description-${3:?Language code expected}: ${4:?Package description expected}"
+ echo
+}
+
+str_md5sum()
+{
+ echo -n "${1:?String expected}" | md5sum | cut -d ' ' -f 1
+}
+
+configarchitecture "${ARCH}"
+
+insertpackage "${DIST}" "${PKG_NAME}" "${ARCH}" "${PKG_VERSION}" '' '' "${LONG_DESCRIPTION_EN}"
+# English translation was already added by insertpackage above
+new_translation_record "${PKG_NAME}" "$(str_md5sum "${LONG_DESCRIPTION_EN}")" 'zz' "${LONG_DESCRIPTION_ZZ}" > "aptarchive/dists/${DIST}/main/i18n/Translation-zz"
+
+configure_languages en zz
+setupaptarchive
+
+# ===========================
+#
+# Tests
+#
+# ===========================
+
+# ---- LP: #1907850 - check that we actually include the translations we have in the cache, even if config changed ---
+configure_languages en zz
+testsuccess aptcache showpkg ${PKG_NAME}
+cp rootdir/tmp/testsuccess.output showpkg.output
+
+testsuccess grep -qE Translation-zz showpkg.output
+rm rootdir/etc/apt/apt.conf.d/languages.conf
+rm rootdir/var/cache/apt/*.bin
+
+testsuccess aptcache showpkg ${PKG_NAME}
+cp rootdir/tmp/testsuccess.output showpkg.output
+testsuccess grep -qE Translation-zz showpkg.output
+
+# ----------[ apt ]----------
+
+# Test that all translations are searched, but the short
+# description is in the first configured language
+
+configure_languages en zz
+testequal "${PKG_NAME}/${DIST} ${PKG_VERSION} ${ARCH}
+ ${SHORT_DESCRIPTION_EN}
+" apt -qq search alter ego
+
+configure_languages zz en
+testequal "${PKG_NAME}/${DIST} ${PKG_VERSION} ${ARCH}
+ ${SHORT_DESCRIPTION_ZZ}
+" apt -qq search you today
+
+# Search in configured languages only
+configure_languages zz
+testempty apt -qq search where fire
+
+# Patterns are AND-ed i.e. all must match against a single
+# description translation
+configure_languages en zz
+testempty apt -qq search there best
+
+# -------[ apt-cache ]-------
+
+# Test that all translations are searched, but the short
+# description is in the first configured language
+
+configure_languages en zz
+testequal "${PKG_NAME} - ${SHORT_DESCRIPTION_EN}" aptcache search alter ego
+
+configure_languages zz en
+testequal "${PKG_NAME} - ${SHORT_DESCRIPTION_ZZ}" aptcache search you today
+
+# Search in configured languages only
+configure_languages zz
+testempty aptcache search where fire
+
+# Patterns are AND-ed i.e. all must match against a single
+# description translation
+configure_languages en zz
+testempty aptcache search there best
diff --git a/test/integration/test-bug-507998-dist-upgrade-recommends b/test/integration/test-bug-507998-dist-upgrade-recommends
new file mode 100755
index 0000000..b546874
--- /dev/null
+++ b/test/integration/test-bug-507998-dist-upgrade-recommends
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'tshark' 'amd64' '1.0.4-1' 'Depends: wireshark-common'
+insertinstalledpackage 'wireshark-common' 'amd64' '1.0.4-1' 'Recommends: wireshark (>= 1.0.4-1) | tshark (>= 1.0.4-1)'
+insertpackage 'unstable' 'tshark' 'amd64' '1.2.1-2' 'Depends: wireshark-common (= 1.2.1-2)'
+insertpackage 'unstable' 'wireshark-common' 'amd64' '1.2.1-2' 'Recommends: wireshark (>= 1.2.1-2) | tshark (>= 1.2.1-2)'
+insertpackage 'unstable' 'wireshark' 'amd64' '1.2.1-2' 'Depends: wireshark-common (= 1.2.1-2)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ tshark wireshark-common
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst wireshark-common [1.0.4-1] (1.2.1-2 unstable [amd64])
+Inst tshark [1.0.4-1] (1.2.1-2 unstable [amd64])
+Conf wireshark-common (1.2.1-2 unstable [amd64])
+Conf tshark (1.2.1-2 unstable [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-bug-543966-downgrade-below-1000-pin b/test/integration/test-bug-543966-downgrade-below-1000-pin
new file mode 100755
index 0000000..db81b7c
--- /dev/null
+++ b/test/integration/test-bug-543966-downgrade-below-1000-pin
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'base-files' 'all' '5.0.0'
+insertinstalledpackage 'base-files' 'all' '5.0.0-1'
+
+setupaptarchive
+
+STATUS=$(readlink -f rootdir/var/lib/dpkg/status)
+APTARCHIVE="$(readlink -f aptarchive)"
+
+testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=0
+
+writepin() {
+ echo "Package: $1
+Pin: release a=unstable
+Pin-Priority: $2" > rootdir/etc/apt/preferences
+}
+
+
+
+testpinning() {
+ local PKGPINPRIO=''
+ local REPPINPRIO=''
+ if [ "$1" != '*' ]; then
+ PKGPINPRIO=''
+ REPPINPRIO=' 500'
+ fi
+ writepin "$1" '99'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-99}
+ ${REPPINPRIO:- 99} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=99
+
+ writepin "$1" '100'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-100}
+ ${REPPINPRIO:- 100} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=100
+
+ writepin "$1" '999'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0-1
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-999}
+ ${REPPINPRIO:- 999} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=999
+
+ writepin "$1" '1000'
+ testsuccessequal "base-files:
+ Installed: 5.0.0-1
+ Candidate: 5.0.0
+ Version table:
+ *** 5.0.0-1 100
+ 100 $STATUS
+ 5.0.0 ${PKGPINPRIO:-1000}
+ ${REPPINPRIO:-1000} file:${APTARCHIVE} unstable/main all Packages" aptcache policy base-files -o apt::pin=1000
+}
+
+msgmsg 'Tests with generic-form pin'
+testpinning '*'
+msgmsg 'Tests with specific-form pin'
+testpinning 'base-files'
+msgmsg 'Tests with specific-form pin with glob'
+testpinning 'base-fil*'
+msgmsg 'Tests with specific-form pin with regex'
+testpinning '/^base-f[iI]les$/'
diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed
new file mode 100755
index 0000000..90ce58a
--- /dev/null
+++ b/test/integration/test-bug-549968-install-depends-of-not-installed
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libc6' 'all' '1.0'
+insertpackage 'unstable' 'coolstuff' 'all' '1.0' 'Recommends: extracoolstuff'
+insertpackage 'unstable' 'extracoolstuff' 'all' '1.0' 'Depends: libc6'
+
+setupaptarchive
+
+# We check the Markers here as the autoremove nuker will also
+# prevent it, but to late - its better to fail earlier
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall coolstuff:i386 < none -> 1.0 @un puN IPb > FU=1
+ coolstuff:i386 Recommends on extracoolstuff:i386 < none | 1.0 @hn puH > can't be satisfied! (dep)
+Package 'extracoolstuff' is not installed, so not removed
+Recommended packages:
+ extracoolstuff
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst coolstuff (1.0 unstable [all])
+Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s
diff --git a/test/integration/test-bug-590041-prefer-non-virtual-packages b/test/integration/test-bug-590041-prefer-non-virtual-packages
new file mode 100755
index 0000000..1b1e3aa
--- /dev/null
+++ b/test/integration/test-bug-590041-prefer-non-virtual-packages
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'armel'
+
+pkglibc6="Package: libc6
+Architecture: armel
+Version: 2.11.2-2~0.3
+Description: Embedded GNU C Library: Shared libraries
+Description-md5: b8c1e0561b75e2dc6b6482a99079c3e4
+Filename: pool/main/e/eglibc/libc6_2.11.2-2_armel.deb
+Installed-Size: 9740
+MD5sum: f5b878ce5fb8aa01a7927fa1460df537
+Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
+Priority: required
+SHA1: 0464d597dfbf949e8c17a42325b1f93fb4914afd
+SHA256: faca4a3d9ccff57568abf41f6cb81ddd835be7b5d8b0161e2d5f9a7f26aae3c0
+Section: libs
+Size: 4178958
+"
+
+pkglibdb1="Package: libdb1
+Architecture: i386
+Version: 2.1.3-13~0.3
+Replaces: libc6 (<< 2.2.5-13~0.3)
+Description: The Berkeley database routines [glibc 2.0/2.1 compatibility]
+Description-md5: de1876f7fe7f7709a110875e145e38a8
+Filename: pool/main/d/db1-compat/libdb1-compat_2.1.3-13_armel.deb
+Installed-Size: 136
+MD5sum: 4043f176ab2b40b0c01bc1211b8c103c
+Maintainer: Colin Watson <cjwatson@debian.org>
+Priority: extra
+SHA1: b9396fdd2e3e8d1d4ba9e74e7346075852d85666
+SHA256: f17decaa28d1db3eeb9eb17bebe50d437d293a509bcdd7cdfd3ebb56f5de3cea
+Section: oldlibs
+Size: 44168
+"
+
+cat >aptarchive/Packages <<EOF
+$pkglibc6
+$pkglibdb1
+EOF
+
+setupaptarchive
+
+testnopackage libc6:i386
+testsuccessequal "$pkglibc6" aptcache show libc6:armel
+testsuccessequal "$pkglibc6" aptcache show libc6
+testsuccessequal "$pkglibdb1" aptcache show libdb1:i386
+testnopackage libdb1:armel
+testsuccessequal "$pkglibdb1" aptcache show libdb1
diff --git a/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order
new file mode 100755
index 0000000..7610752
--- /dev/null
+++ b/test/integration/test-bug-590438-broken-provides-thanks-to-remove-order
@@ -0,0 +1,96 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+pkgbasefile="Package: base-files
+Status: install ok installed
+Essential: yes
+Priority: required
+Section: admin
+Installed-Size: 472
+Maintainer: Santiago Vila <sanvila@debian.org>
+Architecture: i386
+Version: 5.8
+Replaces: base, dpkg (<= 1.15.0), miscutils
+Provides: base
+Filename: pool/main/b/base-files/base-files_5.8_i386.deb
+Size: 73986
+MD5sum: 8489687ce10e656babd467c9ee389349
+Description-de: Verschiedene Dateien für das Basis-System von Debian"
+
+predependsgawk() {
+ cp "$TESTDIR/$(echo "$(basename "$0")" | sed 's/test-/status-/')" rootdir/var/lib/dpkg/status
+ echo "$pkgbasefile
+Pre-Depends: $1
+" >> rootdir/var/lib/dpkg/status
+ testsuccessequal "Inst gawk (1:3.1.7.dfsg-5 localhost [i386])
+Conf gawk (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" aptget install gawk mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g')
+}
+
+predependsgawk "gawk | mawk"
+predependsgawk "mawk | gawk"
+
+predependsgawk "aawk | mawk | gawk"
+predependsgawk "aawk | gawk | mawk"
+
+predependsgawk "gawk | awk"
+predependsgawk "aawk | gawk | awk"
+
+predependsgawk "mawk | awk"
+
+predependsgawk "awk | gawk"
+predependsgawk "awk | gawk | aawk"
+
+predependsgawk "awk | mawk"
+
+predependsgawk "aawk | awk"
+predependsgawk "awk | aawk"
+
+predependsgawk "awk"
+
+predependsgawk2() {
+ cp "$TESTDIR/$(echo "$(basename "$0")" | sed 's/test-/status-/')" rootdir/var/lib/dpkg/status
+ echo "$pkgbasefile
+Pre-Depends: $1
+" >> rootdir/var/lib/dpkg/status
+ testequalor2 "Inst coolstuff (1-1 localhost [all])
+Conf coolstuff (1-1 localhost [all])
+Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" "Inst coolstuff (1-1 localhost [all])
+Inst gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Conf coolstuff (1-1 localhost [all])
+Conf gawk2 (1:3.1.7.dfsg-5 localhost [i386])
+Remv mawk [1.3.3-15]" aptget install gawk2 mawk- -sqq -o PreDepends=$(echo "$1" | sed 's/ //g')
+}
+
+predependsgawk2 "gawk2 | mawk"
+predependsgawk2 "mawk | gawk2"
+
+predependsgawk2 "aawk | mawk | gawk2"
+predependsgawk2 "aawk | gawk2 | mawk"
+
+predependsgawk2 "gawk2 | awk"
+predependsgawk2 "aawk | gawk2 | awk"
+
+predependsgawk2 "mawk | awk"
+
+predependsgawk2 "awk | gawk2"
+predependsgawk2 "awk | gawk2 | aawk"
+
+predependsgawk2 "awk | mawk"
+
+predependsgawk2 "aawk | awk"
+predependsgawk2 "awk | aawk"
+
+predependsgawk2 "awk"
+
+
+# aptget install gawk2 mawk- -s #-o Debug::pkgOrderList=1 #-o Debug::pkgPackageManager=1
diff --git a/test/integration/test-bug-591882-conkeror b/test/integration/test-bug-591882-conkeror
new file mode 100755
index 0000000..6b90343
--- /dev/null
+++ b/test/integration/test-bug-591882-conkeror
@@ -0,0 +1,77 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+UPGRADEFAIL="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ conkeror libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9
+The following NEW packages will be installed:
+ gcc-4.4-base libavahi-client3 libavahi-common-data libavahi-common3 libc-bin
+ libdatrie1 libdb4.7 libdb4.8 libdbus-1-3 libgssapi-krb5-2 libjasper1
+ libk5crypto3 libkrb5-3 libkrb5support0 liblzma2 libpam-modules libpam0g
+ libuuid1 libxcb-atom1 libxcb-aux0 libxcb-event1 libxml2 passwd
+ sensible-utils shared-mime-info xz-utils
+The following packages will be upgraded:
+ coreutils debconf debconf-i18n debianutils defoma dpkg file fontconfig
+ fontconfig-config libacl1 libatk1.0-0 libattr1 libbz2-1.0 libc6 libcairo2
+ libcomerr2 libcups2 libexpat1 libfontconfig1 libfreetype6 libgcc1
+ libgcrypt11 libgdbm3 libglib2.0-0 libgnutls26 libgpg-error0 libgtk2.0-0
+ libgtk2.0-common libhunspell-1.2-0 libice6 libjpeg62 libkeyutils1
+ liblocale-gettext-perl libmagic1 libncurses5 libnewt0.52 libnspr4-0d
+ libnss3-1d libpango1.0-0 libpango1.0-common libpcre3 libpixman-1-0
+ libpng12-0 libpopt0 libselinux1 libslang2 libsm6 libsqlite3-0
+ libstartup-notification0 libstdc++6 libtasn1-3 libtext-charwidth-perl
+ libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0 libtiff4
+ libx11-6 libx11-data libxau6 libxcb-render-util0 libxcb-render0 libxcb1
+ libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxft2
+ libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 lsb-base ncurses-bin perl
+ perl-base perl-modules readline-common sed ttf-dejavu-core ucf whiptail
+ x11-common zlib1g
+87 upgraded, 26 newly installed, 5 to remove and 0 not upgraded.
+Need to get 0 B/54.4 MB of archives.
+After this operation, 12.4 MB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation."
+
+UPGRADESUCCESS="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9
+The following NEW packages will be installed:
+ gcc-4.4-base libasound2 libavahi-client3 libavahi-common-data
+ libavahi-common3 libc-bin libdatrie1 libdb4.7 libdb4.8 libdbus-1-3
+ libgssapi-krb5-2 libjasper1 libk5crypto3 libkrb5-3 libkrb5support0 liblzma2
+ libmozjs2d libpam-modules libpam0g libreadline6 libuuid1 libxcb-atom1
+ libxcb-aux0 libxcb-event1 libxml2 passwd sensible-utils shared-mime-info
+ xulrunner-1.9.1 xz-utils
+The following packages will be upgraded:
+ conkeror coreutils debconf debconf-i18n debianutils defoma dpkg file
+ fontconfig fontconfig-config libacl1 libatk1.0-0 libattr1 libbz2-1.0 libc6
+ libcairo2 libcomerr2 libcups2 libexpat1 libfontconfig1 libfreetype6 libgcc1
+ libgcrypt11 libgdbm3 libglib2.0-0 libgnutls26 libgpg-error0 libgtk2.0-0
+ libgtk2.0-common libhunspell-1.2-0 libice6 libjpeg62 libkeyutils1
+ liblocale-gettext-perl libmagic1 libncurses5 libnewt0.52 libnspr4-0d
+ libnss3-1d libpango1.0-0 libpango1.0-common libpcre3 libpixman-1-0
+ libpng12-0 libpopt0 libselinux1 libslang2 libsm6 libsqlite3-0
+ libstartup-notification0 libstdc++6 libtasn1-3 libtext-charwidth-perl
+ libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0 libtiff4
+ libx11-6 libx11-data libxau6 libxcb-render-util0 libxcb-render0 libxcb1
+ libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxft2
+ libxi6 libxinerama1 libxrandr2 libxrender1 libxt6 lsb-base ncurses-bin perl
+ perl-base perl-modules readline-common sed ttf-dejavu-core ucf whiptail
+ x11-common zlib1g
+88 upgraded, 30 newly installed, 4 to remove and 0 not upgraded.
+Need to get 0 B/62.9 MB of archives.
+After this operation, 36.0 MB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation."
+
+# Test that the old behavior can be restored with the option
+testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0
+testfailureequal "$UPGRADESUCCESS" aptget dist-upgrade --trivial-only #-o pkgProblemResolver::FixByInstall=0
diff --git a/test/integration/test-bug-593360-modifiers-in-names b/test/integration/test-bug-593360-modifiers-in-names
new file mode 100755
index 0000000..dc9a152
--- /dev/null
+++ b/test/integration/test-bug-593360-modifiers-in-names
@@ -0,0 +1,69 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g++ -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'g++' is not installed, so not removed
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove g++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g+++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ g++
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst g++ (4:4.4.5-1 localhost [i386])
+Conf g++ (4:4.4.5-1 localhost [i386])' aptget purge g+++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt (0.8.8 localhost [all])
+Conf apt (0.8.8 localhost [all])' aptget install apt -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt+ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget install apt++ -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ apt+
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt+ (0.8.8 localhost [all])
+Conf apt+ (0.8.8 localhost [all])' aptget purge apt++ -s
diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files
new file mode 100755
index 0000000..d71bd2c
--- /dev/null
+++ b/test/integration/test-bug-595691-empty-and-broken-archive-files
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+buildaptarchive
+touch aptarchive/Packages
+setupflataptarchive
+
+failureupdate() {
+ rm -rf rootdir/var/lib/apt
+ testfailure aptget update --allow-insecure-repositories
+ testsuccess grep "^E: Failed to fetch store:${1} Empty files can't be valid archives$" rootdir/tmp/testfailure.output
+}
+successupdate() {
+ rm -rf rootdir/var/lib/apt
+ testwarning aptget update --allow-insecure-repositories
+}
+
+createemptyarchive() {
+ find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
+ touch aptarchive/Packages
+ echo -n "" | $COMPRESSOR_CMD > aptarchive/${1}.$COMPRESS
+ find aptarchive -name '*Release*' -delete
+ rm -f aptarchive/Packages
+}
+
+createemptyfile() {
+ find aptarchive/ \( -name "Packages*" -o -name "en*" \) -type f -delete
+ touch aptarchive/Packages aptarchive/${1}.$COMPRESS
+ find aptarchive -name '*Release*' -delete
+ rm -f aptarchive/Packages
+}
+
+testoverfile() {
+ local APTARCHIVE="$(readlink -f ./aptarchive)"
+ forcecompressor "$1"
+
+ msgmsg 'archive over file' "Packages.$COMPRESS"
+ createemptyarchive 'Packages'
+ successupdate
+ createemptyfile 'Packages'
+ failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/$(echo "$APTARCHIVE" | sed -e 's#/#_#g')_Packages.${COMPRESS})"
+}
+
+testoverhttp() {
+ forcecompressor "$1"
+
+ msgmsg 'archive over http' "Packages.$COMPRESS"
+ createemptyarchive 'Packages'
+ successupdate
+ createemptyfile 'Packages'
+ failureupdate "$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages.${COMPRESS})"
+}
+
+forallsupportedcompressors testoverfile
+
+# do the same again with http instead of file
+changetowebserver
+
+forallsupportedcompressors testoverhttp
diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo
new file mode 100755
index 0000000..4d0e3dc
--- /dev/null
+++ b/test/integration/test-bug-596498-trusted-unsigned-repo
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable'
+
+msgmsg 'default setup'
+setupaptarchive
+
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt/ rootdir/var/cache/apt/*.bin
+ ${1:-testwarning} aptget update --allow-insecure-repositories
+}
+
+PKGTEXT="$(aptget install cool --assume-no -d | head -n 8)"
+DOWNLOG="$(echo "$PKGTEXT" | tail -n 1)"
+PKGTEXT="$(echo "$PKGTEXT" | head -n 7)"
+DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-*.list'
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d --allow-unauthenticated
+
+msgmsg 'sources marked trusted=no'
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [trusted=no] #' $DEBFILE
+aptgetupdate 'testsuccess'
+
+testfailureequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Install these packages without verification? [y/N] N
+E: Some packages could not be authenticated" aptget install cool --assume-no -d
+
+configarchitecture 'amd64' 'i386'
+testequal "$(echo "$PKGTEXT" | sed 's#cool$#cool:i386#g')
+WARNING: The following packages cannot be authenticated!
+ cool:i386
+Authentication warning overridden.
+$DOWNLOG
+Download complete and in download only mode" aptget install cool:i386 --assume-no -d --allow-unauthenticated
+configarchitecture 'i386'
+
+find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+msgmsg 'unsigned repo'
+sed -i -e 's#\(deb\(-src\)\?\) \[trusted=no\] #\1 #' $DEBFILE
+aptgetupdate
+
+testfailureequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Install these packages without verification? [y/N] N
+E: Some packages could not be authenticated" aptget install cool --assume-no -d
+
+testsuccessequal "$PKGTEXT
+WARNING: The following packages cannot be authenticated!
+ cool
+Authentication warning overridden.
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d --allow-unauthenticated
+
+msgmsg 'sources marked trusted=yes'
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [trusted=yes] #' $DEBFILE
+aptgetupdate 'testsuccess'
+
+testsuccessequal "$PKGTEXT
+$DOWNLOG
+Download complete and in download only mode" aptget install cool --assume-no -d
diff --git a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
new file mode 100755
index 0000000..e7e4093
--- /dev/null
+++ b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ exim4 exim4-daemon-light
+The following NEW packages will be installed:
+ postfix
+0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Need to get 0 B/1326 kB of archives.
+After this operation, 2236 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install postfix --trivial-only
diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info
new file mode 100755
index 0000000..3e13560
--- /dev/null
+++ b/test/integration/test-bug-601961-install-info
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ findutils
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ findutils
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 1745 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove findutils --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ install-info
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+After this operation, 262 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove install-info --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ essentialpkg findutils
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ findutils essentialpkg (due to findutils)
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+After this operation, 2007 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget remove essentialpkg findutils --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ findutils : Depends: essentialpkg but it is not going to be installed
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only
diff --git a/test/integration/test-bug-602412-dequote-redirect b/test/integration/test-bug-602412-dequote-redirect
new file mode 100755
index 0000000..3db7b5e
--- /dev/null
+++ b/test/integration/test-bug-602412-dequote-redirect
@@ -0,0 +1,64 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+buildsimplenativepackage 'unrelated2' 'all' '0.5~squeeze1' 'unstable'
+insertinstalledpackage 'unrelated2' 'all' '0.1'
+
+setupaptarchive --no-update
+changetowebserver -o aptwebserver::redirect::replace::/pool/=/newpool/ \
+ -o aptwebserver::redirect::replace::/dists/=/newdists/
+
+mv aptarchive/pool aptarchive/newpool
+mv aptarchive/dists aptarchive/newdists
+
+testrun() {
+ msgmsg "Test $1 redirection works in method boundaries" "$2"
+ msgtest 'Test redirection works in' 'apt-get update'
+ testsuccess --nomsg aptget update
+
+ # check that I-M-S header is kept in redirections
+ testsuccessequal "Hit:1 $2 unstable InRelease
+Reading package lists..." aptget update
+
+ msgtest 'Test redirection works in' 'package download'
+ testsuccess --nomsg aptget install unrelated --download-only -y
+}
+
+for CODE in 301 302 307 308; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "http://localhost:${APTHTTPPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+changetohttpswebserver
+
+for CODE in 301 302 307 308; do
+ webserverconfig 'aptwebserver::redirect::httpcode' "$CODE"
+ rm -f aptarchive/webserver.log.client*.log
+ testrun "$CODE" "https://localhost:${APTHTTPSPORT}"
+ testsuccess grep "^HTTP/1.1 $CODE " aptarchive/webserver.log.client*.log
+ rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+done
+
+testsuccess apt update
+testsuccess aptget install unrelated --download-only
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ unrelated
+The following packages have been kept back:
+ unrelated2
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget dist-upgrade unrelated --no-download --fix-missing -s
+testsuccess aptget dist-upgrade unrelated --no-download --fix-missing -y
+testdpkginstalled unrelated
diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove
new file mode 100755
index 0000000..47da810
--- /dev/null
+++ b/test/integration/test-bug-604222-new-and-autoremove
@@ -0,0 +1,116 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'stable' 'dummy-archive' 'i386' '0.invalid.0' 'Depends: libavcodec52, libvtk5-dev | libopenal-dev'
+insertpackage 'stable' 'libavcodec52' 'i386' '4:0.5.2-6' 'Conflicts: libvtk5-dev'
+insertpackage 'stable' 'libopenal-dev' 'i386' '1:1.12.854-2'
+insertpackage 'stable' 'libvtk5-dev' 'i386' '5.4.2-8' 'Depends: libvtk5.4 (= 5.4.2-8)'
+insertpackage 'stable' 'libvtk5.4' 'i386' '5.4.2-8' 'Depends: libavcodec52 (>= 4:0.5.1-1)'
+
+insertpackage 'stable' 'gwenview' 'i386' '4:16.08.0-1' 'Depends: libkf5kipi-bin, libkf5kipi-data'
+insertpackage 'stable' 'libkf5kipi-bin' 'i386' '4:16.08.0-1'
+insertpackage 'stable' 'libkf5kipi-data' 'i386' '4:16.08.0-1' 'Breaks: libkipi-data'
+insertpackage 'stable' 'libkipi-data' 'i386' '4:15.08.0-1' '' 'important'
+
+setupaptarchive
+
+insertinstalledpackage 'libvtk5.4' 'i386' '5.4.2-7'
+testsuccess aptmark markauto 'libvtk5.4'
+testmarkedauto 'libvtk5.4'
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ libvtk5.4
+Use '$AUTOREMOVE' to remove it.
+The following NEW packages will be installed:
+ libavcodec52
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst libavcodec52 (4:0.5.2-6 stable [i386])
+Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+The following NEW packages will be installed:
+ libavcodec52
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst libavcodec52 (4:0.5.2-6 stable [i386])
+Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s -o APT::Get::HideAutoRemove=small
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following package was automatically installed and is no longer required:
+ libvtk5.4
+Use '$AUTOREMOVE' to remove it.
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+1 package was automatically installed and is no longer required.
+Use '$AUTOREMOVE' to remove it.
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+0 upgraded, 3 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install dummy-archive --trivial-only -o APT::Get::HideAutoRemove=small
+
+rm -f rootdir/var/lib/dpkg/status rootdir/var/lib/apt/extended_states
+
+CONFLICTING='Reading package lists...
+Building dependency tree...
+ MarkInstall dummy-archive:i386 < none -> 0.invalid.0 @un puN Ib > FU=1
+ MarkInstall libavcodec52:i386 < none -> 4:0.5.2-6 @un puN > FU=0
+ MarkInstall libopenal-dev:i386 < none -> 1:1.12.854-2 @un puN > FU=0
+ Ignore MarkGarbage of libopenal-dev:i386 < none -> 1:1.12.854-2 @un puN > as its mode (Install) is protected
+ Ignore MarkGarbage of libavcodec52:i386 < none -> 4:0.5.2-6 @un puN > as its mode (Install) is protected
+The following additional packages will be installed:
+ libavcodec52 libopenal-dev
+The following NEW packages will be installed:
+ dummy-archive libavcodec52 libopenal-dev
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.'
+
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1
+testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small
+
+insertinstalledpackage 'my-metapackage' 'i386' '1' 'Depends: gwenview'
+insertinstalledpackage 'gwenview' 'i386' '4:15.08.0-1' 'Depends: libkipi-data
+Recommends: foobar' # trigger policy brokenness to avoid optimisation
+insertinstalledpackage 'libkipi-data' 'i386' '4:15.08.0-1' '' 'important'
+testsuccess aptmark markauto 'gwenview'
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages have been kept back:
+ gwenview
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt dist-upgrade -s
diff --git a/test/integration/test-bug-604401-files-are-directories b/test/integration/test-bug-604401-files-are-directories
new file mode 100755
index 0000000..4261d54
--- /dev/null
+++ b/test/integration/test-bug-604401-files-are-directories
@@ -0,0 +1,67 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+test ! -e rootdir/etc/apt/apt.conf || mv rootdir/etc/apt/apt.conf rootdir/etc/apt/apt.conf.d/000move-away-apt.conf
+
+msgtest "Directory instead of a file as apt.conf ignored"
+mkdir -p rootdir/etc/apt/apt.conf
+testsuccess --nomsg aptconfig dump
+rmdir rootdir/etc/apt/apt.conf
+
+msgtest "Good link instead of a file as apt.conf ignored"
+echo 'Test::APT::Link "good";' > rootdir/etc/apt/good-link.conf
+ln -s rootdir/etc/apt/good-link.conf rootdir/etc/apt/apt.conf
+testempty aptconfig shell TestLink 'Test::APT::Link'
+rm rootdir/etc/apt/apt.conf
+
+msgtest "Broken link instead of a file as apt.conf ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/apt.conf
+testsuccess --nomsg aptconfig dump
+rm rootdir/etc/apt/apt.conf
+
+
+test ! -e rootdir/etc/apt/sources.list || mv rootdir/etc/apt/sources.list rootdir/etc/apt/sources.list.d/000move-away-sources.list
+
+msgtest "Directory instead of a file as sources.list ignored"
+mkdir -p rootdir/etc/apt/sources.list
+testsuccess --nomsg aptget update --print-uris
+rmdir rootdir/etc/apt/sources.list
+
+msgtest "Good link instead of a file as sources.list ignored"
+echo 'deb file:///tmp/debian sid main' > rootdir/etc/apt/good-link.list
+ln -s rootdir/etc/apt/good-link.list rootdir/etc/apt/sources.list
+testempty aptget update --print-uris
+rm rootdir/etc/apt/sources.list
+
+msgtest "Broken link instead of a file as sources.list ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/sources.list
+testempty aptget update --print-uris
+rm rootdir/etc/apt/sources.list
+
+
+test ! -e rootdir/etc/apt/preferences || mv rootdir/etc/apt/preferences rootdir/etc/apt/preferences.d/000move-away-preferences
+
+msgtest "Directory instead of a file as preferences ignored"
+mkdir -p rootdir/etc/apt/preferences
+testsuccess --nomsg aptcache policy
+rmdir rootdir/etc/apt/preferences
+
+msgtest "Good link instead of a file as preferences ignored"
+echo 'Package: apt
+Pin: release a=now
+Pin-Value: 1000' > rootdir/etc/apt/good-link.pref
+ln -s rootdir/etc/apt/good-link.pref rootdir/etc/apt/preferences
+testsuccess aptcache policy
+testfailure grep '1000 ' rootdir/tmp/testsucess.output
+rm rootdir/etc/apt/preferences
+
+msgtest "Broken link instead of a file as preferences ignored"
+ln -s /tmp/doesnt-exist rootdir/etc/apt/preferences
+testsuccess --nomsg aptcache policy
+rm rootdir/etc/apt/preferences
diff --git a/test/integration/test-bug-605394-versioned-or-groups b/test/integration/test-bug-605394-versioned-or-groups
new file mode 100755
index 0000000..43f35f7
--- /dev/null
+++ b/test/integration/test-bug-605394-versioned-or-groups
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ php5 php5-cgi
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/5715 kB of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget dist-upgrade --trivial-only
+
+msgtest "Solution process doesn't involve" 'apache2-mpm-prefork'
+
+if aptget dist-upgrade --trivial-only -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 2>&1 | grep apache2-mpm-prefork > /dev/null; then
+ msgfail
+else
+ msgpass
+fi
+
+# the Packages file includes only MD5
+testfailure aptget dist-upgrade -y
+testsuccess grep 'Insufficient information available to perform this download securely' rootdir/tmp/testfailure.output
diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual
new file mode 100755
index 0000000..63f8245
--- /dev/null
+++ b/test/integration/test-bug-611729-mark-as-manual
@@ -0,0 +1,96 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage "peace-dpkg" "all" "1.0" "stable"
+
+buildsimplenativepackage "a" "all" "1.0" "stable" "Depends: b"
+buildsimplenativepackage "b" "all" "1.0" "stable"
+buildsimplenativepackage "c" "all" "1.0" "stable" "Depends: b"
+
+setupaptarchive
+
+# dpkg freaks out if the last package is removed so keep one around
+testsuccess aptget install peace-dpkg -y
+testdpkginstalled peace-dpkg
+testmarkedauto
+
+testsuccess aptget install a -y
+testdpkginstalled a b
+testdpkgnotinstalled c
+testmarkedauto 'b'
+
+testsuccess aptget remove a -y
+testdpkgnotinstalled a c
+testdpkginstalled b
+testmarkedauto 'b'
+
+testsuccess aptget install c -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto 'b'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b --only-upgrade
+testmarkedauto 'b'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b -d
+testmarkedauto 'b'
+
+rm rootdir/var/log/apt/history.log
+
+testsuccess aptget install b --reinstall -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto 'b'
+
+sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d'
+if [ -n "$SUDO_USER" ] && [ "$(id -u "$SUDO_USER")" -gt 0 ]; then
+ testfileequal 'rootdir/var/log/apt/history.log' "
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Reinstall: b:i386 (1.0)"
+else
+ testfileequal 'rootdir/var/log/apt/history.log' '
+Reinstall: b:i386 (1.0)'
+fi
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+b is already the newest version (1.0).
+b set to manually installed.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install b
+testmarkedauto
+
+testsuccess aptget remove b -y
+testdpkgnotinstalled a b c
+testmarkedauto
+
+testsuccess aptget install a b -y
+testdpkginstalled a b
+testdpkgnotinstalled c
+testmarkedauto
+
+testsuccess aptget purge a b -y
+testdpkgnotinstalled a b c
+testmarkedauto
+
+testsuccess aptget install b c -y
+testdpkgnotinstalled a
+testdpkginstalled b c
+testmarkedauto
+
+testsuccess aptget install a -y
+testdpkginstalled a b c
+testmarkedauto
diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts
new file mode 100755
index 0000000..bc57395
--- /dev/null
+++ b/test/integration/test-bug-612099-multiarch-conflicts
@@ -0,0 +1,225 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable'
+buildsimplenativepackage 'libc6' 'amd64' '1.0' 'stable'
+buildsimplenativepackage 'libc6' 'all' '2.0' 'testing'
+
+buildsimplenativepackage 'foobar' 'i386' '1.0' 'stable' 'Depends: libc6'
+buildsimplenativepackage 'foobar' 'amd64' '1.0' 'stable' 'Depends: libc6'
+
+setupaptarchive
+
+testsuccess aptget install libc6:i386 -t stable -y
+testdpkginstalled libc6:i386
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ libc6:amd64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [1.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])' aptget install libc6:amd64 -s -t stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ foobar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar (1.0 stable [i386])
+Conf foobar (1.0 stable [i386])' aptget install foobar -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libc6:amd64
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ foobar:amd64 libc6:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [1.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Inst foobar:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])
+Conf foobar:amd64 (1.0 stable [amd64])' aptget install foobar:amd64 -st stable
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar'
+The following NEW packages will be installed:
+ foobar
+The following packages will be upgraded:
+ libc6
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 [1.0] (2.0 testing [all])
+Inst foobar (1.0 stable [i386])
+Conf libc6 (2.0 testing [all])
+Conf foobar (1.0 stable [i386])" aptget install foobar/stable libc6 -st testing
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be upgraded:
+ libc6
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 [1.0] (2.0 testing [all])
+Conf libc6 (2.0 testing [all])' aptget upgrade -t testing -s
+# FIXME: on amd64 systems this test wouldn't run with a real upgrade
+# as APT (here i386) disagree about the native architecture, so
+# we fake it here:
+#aptget upgrade -y -qq >/dev/null 2>&1
+testsuccess aptget purge libc6 -y
+testsuccess aptget install libc6:i386 -y
+testdpkginstalled libc6:all
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar'
+The following NEW packages will be installed:
+ foobar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar (1.0 stable [i386])
+Conf foobar (1.0 stable [i386])" aptget install foobar/stable -st testing
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [amd64]) for 'foobar:amd64'
+The following additional packages will be installed:
+ libc6:amd64
+The following packages will be REMOVED:
+ libc6
+The following NEW packages will be installed:
+ foobar:amd64 libc6:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6 [2.0]
+Inst libc6:amd64 (1.0 stable [amd64])
+Inst foobar:amd64 (1.0 stable [amd64])
+Conf libc6:amd64 (1.0 stable [amd64])
+Conf foobar:amd64 (1.0 stable [amd64])" aptget install foobar:amd64/stable -st testing
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'libc6'
+The following packages will be DOWNGRADED:
+ libc6
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
+Inst libc6 [2.0] (1.0 stable [i386])
+Conf libc6 (1.0 stable [i386])" aptget install libc6/stable -s
+
+
+buildsimplenativepackage 'libc6-same' 'i386' '1.0' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-same' 'amd64' '1.0' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-same' 'all' '2.0' 'testing'
+
+buildsimplenativepackage 'foobar-same' 'i386' '1.0' 'stable' 'Depends: libc6-same'
+buildsimplenativepackage 'foobar-same' 'amd64' '1.0' 'stable' 'Depends: libc6-same'
+
+setupaptarchive
+
+testsuccess aptget install libc6-same:i386 -t stable -y
+testdpkginstalled libc6-same:i386
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ foobar-same
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-same (1.0 stable [i386])
+Conf foobar-same (1.0 stable [i386])' aptget install foobar-same -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libc6-same:amd64
+The following NEW packages will be installed:
+ foobar-same:amd64 libc6-same:amd64
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Inst foobar-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])
+Conf foobar-same:amd64 (1.0 stable [amd64])' aptget install foobar-same:amd64 -st stable
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ libc6-same:amd64
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])' aptget install libc6-same:amd64 -s -t stable
+
+# FIXME: We should test installing libc6-same:amd64 here, but dpkg doesn't allow it currently
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be upgraded:
+ libc6-same
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6-same [1.0] (2.0 testing [all])
+Conf libc6-same (2.0 testing [all])' aptget upgrade -t testing -s
+# FIXME: on amd64 systems this test wouldn't run with a real upgrade
+# as APT (here i386) disagree about the native architecture, so
+# we fake it here:
+#aptget upgrade -y -qq >/dev/null 2>&1
+testsuccess aptget purge libc6-same -y
+testsuccess aptget install libc6-same:i386 -y
+testdpkginstalled libc6-same:all
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'libc6-same'
+The following packages will be DOWNGRADED:
+ libc6-same
+0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
+Inst libc6-same [2.0] (1.0 stable [i386])
+Conf libc6-same (1.0 stable [i386])" aptget install libc6-same/stable -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [i386]) for 'foobar-same'
+The following NEW packages will be installed:
+ foobar-same
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-same (1.0 stable [i386])
+Conf foobar-same (1.0 stable [i386])" aptget install foobar-same/stable -st testing
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Selected version '1.0' (stable [amd64]) for 'foobar-same:amd64'
+The following additional packages will be installed:
+ libc6-same:amd64
+The following packages will be REMOVED:
+ libc6-same
+The following NEW packages will be installed:
+ foobar-same:amd64 libc6-same:amd64
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv libc6-same [2.0]
+Inst libc6-same:amd64 (1.0 stable [amd64])
+Inst foobar-same:amd64 (1.0 stable [amd64])
+Conf libc6-same:amd64 (1.0 stable [amd64])
+Conf foobar-same:amd64 (1.0 stable [amd64])" aptget install foobar-same:amd64/stable -st testing
diff --git a/test/integration/test-bug-612557-garbage-upgrade b/test/integration/test-bug-612557-garbage-upgrade
new file mode 100755
index 0000000..e0ede78
--- /dev/null
+++ b/test/integration/test-bug-612557-garbage-upgrade
@@ -0,0 +1,62 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'unrelated' 'all' '1:3.3.0-2'
+insertpackage 'unstable' 'python-uno' 'all' '1:3.3.0-2' 'Depends: libreoffice-common'
+insertpackage 'unstable' 'libreoffice-common' 'all' '1:3.3.0-2' 'Conflicts: openoffice.org-common'
+
+setupaptarchive
+
+touch rootdir/var/lib/apt/extended_states
+testsuccess aptmark markauto python-uno openoffice.org-common
+#aptmark unmarkauto openoffice.org-emailmerge
+testmarkedauto python-uno openoffice.org-common
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libreoffice-common
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge
+The following NEW packages will be installed:
+ libreoffice-common
+The following packages will be upgraded:
+ python-uno
+1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Need to get 0 B/84 B of archives.
+After this operation, 53.2 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno
+
+testsuccess aptmark markauto openoffice.org-emailmerge
+testmarkedauto python-uno openoffice.org-common openoffice.org-emailmerge
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ libreoffice-common
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge
+The following NEW packages will be installed:
+ libreoffice-common
+The following packages will be upgraded:
+ python-uno
+1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Need to get 0 B/84 B of archives.
+After this operation, 53.2 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ openoffice.org-common openoffice.org-emailmerge python-uno
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+After this operation, 53.3 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget autoremove --trivial-only
diff --git a/test/integration/test-bug-612958-use-dpkg-multiarch-config b/test/integration/test-bug-612958-use-dpkg-multiarch-config
new file mode 100755
index 0000000..54200ff
--- /dev/null
+++ b/test/integration/test-bug-612958-use-dpkg-multiarch-config
@@ -0,0 +1,83 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+testpass() {
+ msgtest 'Test architecture handling success' "$1 with $2"
+ rm -f archs.conf
+ aptconfig dump --no-empty --format='%V%n' APT::Architectures > archs.conf
+ testsuccess --nomsg grep "^$2\$" archs.conf
+}
+
+testfail() {
+ msgtest 'Test architecture handling failure' "$1 with $2"
+ rm -f archs.conf
+ aptconfig dump --no-empty --format='%V%n' APT::Architectures > archs.conf
+ testfailure --nomsg grep "^$2\$" archs.conf
+}
+
+testpass 'no config' 'i386'
+testfail 'no config' 'amd64'
+testfail 'no config' 'armel'
+
+CONFFILE=rootdir/etc/apt/apt.conf.d/99multiarch
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'APT::Architectures:: "i386";' >> $CONFFILE
+echo 'APT::Architectures:: "amd64";' >> $CONFFILE
+
+testpass 'apt config' 'i386'
+testpass 'apt config' 'amd64'
+testfail 'apt config' 'armel'
+
+echo 'APT::Architectures:: "armel";' >> $CONFFILE
+
+testpass 'apt config' 'armel'
+
+rm $CONFFILE
+
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'APT::Architectures "i386,amd64";' >> $CONFFILE
+
+testpass 'apt config' 'i386'
+testpass 'apt config' 'amd64'
+testfail 'apt config' 'armel'
+
+rm $CONFFILE
+
+echo '#clear APT::Architectures;' >> $CONFFILE
+echo 'Dir::Bin::dpkg "./dpkg-printer";' >> $CONFFILE
+
+echo '#! /bin/sh
+echo "amd64"' > ./dpkg-printer
+chmod +x ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testfail 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64 armel"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testpass 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64
+armel"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testpass 'dpkg config' 'armel'
+
+echo '#! /bin/sh
+echo "amd64
+i386"' > ./dpkg-printer
+
+testpass 'dpkg config' 'i386'
+testpass 'dpkg config' 'amd64'
+testfail 'dpkg config' 'armel'
diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency
new file mode 100755
index 0000000..46c3d94
--- /dev/null
+++ b/test/integration/test-bug-613420-new-garbage-dependency
@@ -0,0 +1,58 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libreoffice' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
+insertpackage 'unstable' 'libreoffice-core' 'all' '1:3.3.1~rc1-2' 'Conflicts: openoffice.org-core'
+insertpackage 'unstable' 'libreoffice-officebean' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core'
+insertpackage 'unstable' 'openoffice.org-officebean' 'all' '1:3.3.0-5' 'Depends: libreoffice-officebean'
+
+setupaptarchive
+
+touch rootdir/var/lib/apt/extended_states
+testsuccess aptmark markauto openoffice.org-officebean
+testmarkedauto openoffice.org-officebean
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ libreoffice-officebean openoffice.org-officebean
+Use '$AUTOREMOVE' to remove them.
+The following additional packages will be installed:
+ libreoffice-core libreoffice-officebean openoffice.org-officebean
+The following packages will be REMOVED:
+ openoffice.org-core
+The following NEW packages will be installed:
+ libreoffice libreoffice-core libreoffice-officebean
+The following packages will be upgraded:
+ openoffice.org-officebean
+1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Need to get 0 B/168 B of archives.
+After this operation, 126 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+2 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+The following additional packages will be installed:
+ libreoffice-core libreoffice-officebean openoffice.org-officebean
+The following packages will be REMOVED:
+ openoffice.org-core
+The following NEW packages will be installed:
+ libreoffice libreoffice-core libreoffice-officebean
+The following packages will be upgraded:
+ openoffice.org-officebean
+1 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Need to get 0 B/168 B of archives.
+After this operation, 126 MB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation." aptget install libreoffice --trivial-only -o APT::Get::HideAutoRemove=small
diff --git a/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted b/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted
new file mode 100755
index 0000000..533cf77
--- /dev/null
+++ b/test/integration/test-bug-617690-allow-unauthenticated-makes-all-untrusted
@@ -0,0 +1,68 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable'
+
+setupaptarchive --no-update
+
+testfileexists() {
+ msgtest 'Test for existence of file' "$1"
+ test -e "$1" && msgpass || msgfail
+ rm -f "$1"
+}
+
+testfilemissing() {
+ msgtest 'Test for non-existence of file' "$1"
+ test -e "$1" && msgfail || msgpass
+ rm -f "$1"
+}
+
+testrun() {
+ rm -rf rootdir/var/lib/apt
+ cd downloaded
+
+ if [ "$1" = 'trusted' ]; then
+ testsuccess aptget update
+
+ testsuccess aptget download cool
+ testfileexists 'cool_1.0_i386.deb'
+
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ else
+ testwarning aptget update --allow-insecure-repositories
+
+ testfailure aptget download cool
+ testfilemissing 'cool_1.0_i386.deb'
+
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ fi
+
+ mv ../aptarchive/pool/cool_1.0_i386.deb ../aptarchive/pool/cool_1.0_i386.deb.bak
+ echo 'this is not a good package' > ../aptarchive/pool/cool_1.0_i386.deb
+ testfailure aptget download cool
+ testfilemissing cool_1.0_i386.deb
+
+ testfailure aptget download cool --allow-unauthenticated # unauthenticated doesn't mean unchecked
+ testfilemissing cool_1.0_i386.deb
+
+ rm -f ../aptarchive/pool/cool_1.0_i386.deb
+ mv ../aptarchive/pool/cool_1.0_i386.deb.bak ../aptarchive/pool/cool_1.0_i386.deb
+ testsuccess aptget download cool --allow-unauthenticated
+ testfileexists 'cool_1.0_i386.deb'
+ cd - >/dev/null
+}
+
+testrun 'trusted'
+
+find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
+testrun 'untrusted'
+
+changetowebserver
+testrun 'untrusted'
diff --git a/test/integration/test-bug-618288-multiarch-same-lockstep b/test/integration/test-bug-618288-multiarch-same-lockstep
new file mode 100755
index 0000000..eeecb40
--- /dev/null
+++ b/test/integration/test-bug-618288-multiarch-same-lockstep
@@ -0,0 +1,41 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libsame' 'i386,amd64' '1' 'Multi-Arch: same' 'required'
+insertinstalledpackage 'apt' 'i386' '1' 'Depends: libsame (= 1)
+Essential: yes' 'required'
+insertinstalledpackage 'apt2' 'amd64' '1' 'Depends: libsame (= 1)
+Essential: yes' 'required'
+buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same' '' 'required'
+buildsimplenativepackage 'apt' 'i386' '2' 'unstable' 'Depends: libsame (= 2)' '' 'required'
+buildsimplenativepackage 'apt2' 'amd64' '2' 'unstable' 'Depends: libsame (= 2)' '' 'required'
+
+setupaptarchive
+testsuccess aptget dist-upgrade -s -o Debug::pkgPackageManager=1
+
+# order in switch libsame:{amd64,i386} are unpacked is irrelevant, as both are installed - but we need to do it together
+OUTPUT=rootdir/tmp/testsuccess.output
+LS_U_AMD="$(grep -o -n '^Inst libsame ' $OUTPUT | cut -d: -f1)"
+LS_U_INT="$(grep -o -n '^Inst libsame:i386 ' $OUTPUT | cut -d: -f1)"
+LS_C_AMD="$(grep -o -n '^Conf libsame ' $OUTPUT | cut -d: -f1)"
+LS_C_INT="$(grep -o -n '^Conf libsame:i386 ' $OUTPUT | cut -d: -f1)"
+
+msgtest 'Test if' 'libsame:amd64 unpack before configure'
+test "$LS_U_AMD" -lt "$LS_C_AMD" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:i386 unpack before configure'
+test "$LS_U_INT" -lt "$LS_C_INT" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:amd64 unpack is before libsame:i386 configure'
+test "$LS_U_AMD" -lt "$LS_C_INT" && msgpass || msgfail
+
+msgtest 'Test if' 'libsame:i386 unpack is before libsame:amd64 configure'
+test "$LS_U_INT" -lt "$LS_C_AMD" && msgpass || msgfail
+
+# lets see if it really does work out
+testsuccess apt dist-upgrade -y
diff --git a/test/integration/test-bug-618848-always-respect-user-requests b/test/integration/test-bug-618848-always-respect-user-requests
new file mode 100755
index 0000000..225db29
--- /dev/null
+++ b/test/integration/test-bug-618848-always-respect-user-requests
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'libdb4.8' 'all' '1.0'
+insertinstalledpackage 'exim4' 'all' '1.0' 'Depends: exim4-daemon-light | exim4-daemon-heavy'
+insertinstalledpackage 'exim4-daemon-light' 'all' '1.0' 'Depends: libdb4.8'
+insertpackage 'unstable' 'exim4-daemon-heavy' 'all' '1.0' 'Depends: libdb4.8'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkDelete libdb4.8:i386 < 1.0 @ii pmK > FU=1
+ MarkDelete exim4-daemon-light:i386 < 1.0 @ii mK Ib > FU=0
+ MarkInstall exim4-daemon-heavy:i386 < none -> 1.0 @un umN Ib > FU=0
+ exim4-daemon-heavy:i386 Depends on libdb4.8:i386 < 1.0 @ii pmR > can't be satisfied! (dep)
+ MarkDelete exim4:i386 < 1.0 @ii mK Ib > FU=0
+The following packages will be REMOVED:
+ exim4 exim4-daemon-light libdb4.8
+ MarkDelete exim4:i386 < 1.0 @ii K > FU=1
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv exim4 [1.0]
+ MarkDelete exim4-daemon-light:i386 < 1.0 @ii K > FU=1
+Remv exim4-daemon-light [1.0]
+ MarkDelete libdb4.8:i386 < 1.0 @ii K > FU=1
+Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1
diff --git a/test/integration/test-bug-623443-fail-on-bad-proxies b/test/integration/test-bug-623443-fail-on-bad-proxies
new file mode 100755
index 0000000..d91a3ab
--- /dev/null
+++ b/test/integration/test-bug-623443-fail-on-bad-proxies
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive --no-update
+changetowebserver
+
+testsuccess apt update
+rm -rf rootdir/var/lib/apt/lists
+
+export http_proxy=enrico:password@proxy-cache.localnet:3128
+testfailure apt update
+unset http_proxy
+testsuccess grep 'Unsupported proxy configured' rootdir/tmp/testfailure.output
+
+changetohttpswebserver
+
+testsuccess apt update
+rm -rf rootdir/var/lib/apt/lists
+
+export http_proxy=enrico:password@proxy-cache.localnet:3128
+testfailure apt update
+unset http_proxy
+testsuccess grep 'Unsupported proxy configured' rootdir/tmp/testfailure.output
+
+echo 'Acquire::http::Proxy "foo://example.org";
+Acquire::https::Proxy "DIRECT";' > rootdir/etc/apt/apt.conf.d/proxy.conf
+testsuccess apt update
diff --git a/test/integration/test-bug-624218-Translation-file-handling b/test/integration/test-bug-624218-Translation-file-handling
new file mode 100755
index 0000000..c116278
--- /dev/null
+++ b/test/integration/test-bug-624218-Translation-file-handling
@@ -0,0 +1,171 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'unrelated' 'i386' '1'
+insertpackage 'unstable' 'ancientstuff' 'all' '1'
+insertpackage 'unstable' 'boringstuff' 'all' '1' '' '' 'shared short description'
+insertpackage 'unstable' 'coolstuff' 'all' '1'
+insertpackage 'unstable' 'dullstuff' 'all' '1' '' '' 'shared short description'
+insertpackage 'unstable' 'evilstuff' 'all' '1'
+insertpackage 'unstable' 'foostuff' 'all' '1' '' '' 'shared short description'
+insertpackage 'unstable' 'goodstuff' 'all' '1'
+insertpackage 'unstable' "longdesc" 'all' '1' '' '' "$(for i in $(seq 0 100); do printf '%s' 'lorem ipsum '; done)"
+
+setupaptarchive --no-update
+changetowebserver
+
+testsuccess aptget update
+PKGORDER='coolstuff foostuff coolstuff foostuff'
+msgtest 'Prepare expectation for' 'aptcache show'
+if aptcache show $PKGORDER | grep -v '^ ' > aptcacheshow.out 2>&1; then
+ msgpass
+else
+ cat aptcacheshow.out || true
+ msgfail
+fi
+testsuccessequal '4' grep -c '^Package: ' aptcacheshow.out
+msgtest 'Prepare expectation for' 'apt show'
+if apt show $PKGORDER | grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' > aptshow.out 2>&1; then
+ msgpass
+else
+ cat aptshow.out || true
+ msgfail
+fi
+testsuccessequal '4' grep -c '^Package: ' aptshow.out
+rm -rf rootdir/var/lib/apt/lists
+
+checkaptshow() {
+ testsuccess aptcache show $PKGORDER
+ sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output
+ testequal "$(cat aptcacheshow.out)
+" grep -v '^ ' rootdir/tmp/testsuccess.output
+
+ testsuccess apt show $PKGORDER
+ sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output
+ testequal "$(cat aptshow.out)
+" grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output
+
+ if [ -n "$(ls rootdir/var/lib/apt/lists/*Translation* 2>/dev/null)" ]; then
+ testsuccess find rootdir/var/lib/apt/lists/ -name '*Translation*' -delete
+
+ testsuccess aptcache show $PKGORDER
+ sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output
+ testequal "$(cat aptcacheshow.out)
+" grep -v '^ ' rootdir/tmp/testsuccess.output
+
+ testsuccess apt show $PKGORDER
+ sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output
+ testequal "$(cat aptshow.out)
+" grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output
+ fi
+}
+
+translationslisted() {
+ msgtest 'No download of non-existent locals' "$1"
+ export LC_ALL=""
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of existent locals' "$1"
+ testsuccess --nomsg aptget update
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of en in LC_ALL=C' "$1"
+ export LC_ALL=C
+ testsuccess --nomsg aptget update
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+ unset LC_ALL
+
+ msgtest 'Download of en as forced language' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ cp rootdir/tmp/testsuccess.output testsuccess.output
+ testsuccess grep -q -e 'Translation-en ' testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of nothing else in forced language' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=en
+ testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download no Translation- if forced language is non-existent' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=ast_DE
+ testfailure grep -q -e 'Translation-' rootdir/tmp/testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+
+ msgtest 'Download of nothing if none is forced' "$1"
+ testsuccess --nomsg aptget update -o Acquire::Languages=none
+ testfailure grep -q -e 'Translation' rootdir/tmp/testsuccess.output
+ checkaptshow
+ rm -rf rootdir/var/lib/apt/lists
+}
+
+translationslisted 'with full Index'
+
+# No Release file at all, so no records about Translation files
+# (fallback to guessing)
+find aptarchive \( -name 'Release' -o -name 'InRelease' \) -delete
+echo 'Acquire::AllowInsecureRepositories "true";' > rootdir/etc/apt/apt.conf.d/allow-insecure-repositories.conf
+
+msgtest 'Download of en as forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=en
+testsuccess grep -q -e 'Translation-en ' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing else in forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=en
+testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of ast_DE as forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
+testsuccess grep -q -e 'Translation-ast_DE$' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing else in forced language' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=ast_DE
+testfailure grep -q -e 'Translation-[^a][^s]' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+msgtest 'Download of nothing if none is forced' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=none
+testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+mkdir -p rootdir/var/lib/apt/lists
+touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE
+
+msgtest 'Download of builtin files' 'without Index'
+testwarning --nomsg aptget update
+testsuccess grep -q -e 'Translation-ast_DE' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
+
+mkdir -p rootdir/var/lib/apt/lists
+touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE
+
+msgtest 'Download of nothing (even builtin) if none is forced' 'without Index'
+testwarning --nomsg aptget update -o Acquire::Languages=none
+testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output
+checkaptshow
+rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction
new file mode 100755
index 0000000..0cf8d35
--- /dev/null
+++ b/test/integration/test-bug-632221-cross-dependency-satisfaction
@@ -0,0 +1,353 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'libc6' 'amd64,armel' '1.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libc6-dev' 'amd64,armel' '1.0' 'Depends: libc6
+Multi-Arch: same'
+insertpackage 'unstable' 'libfwibble1' 'amd64,armel' '1.0' 'Depends: libc6
+Multi-Arch: same'
+insertpackage 'unstable' 'libfwibble-dev' 'amd64,armel' '1.0' 'Depends: libfwibble1'
+insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed'
+insertpackage 'unstable' 'amdboot' 'amd64' '1.0'
+insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'arm-stuff' 'armel' '1.0'
+insertpackage 'unstable' 'linux-stuff' 'amd64,armel' '1.0'
+
+insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev, arm-stuff [eabi-any-any-arm gnueabi-any-arm] | linux-stuff [ linux-any]'
+
+insertsource 'unstable' 'forbidden-no' 'any' '1' 'Build-Depends: amdboot:any'
+insertsource 'unstable' 'forbidden-same' 'any' '1' 'Build-Depends: libc6:any'
+insertsource 'unstable' 'forbidden-foreign' 'any' '1' 'Build-Depends: doxygen:any'
+
+insertpackage 'unstable' 'specific' 'amd64' '1.0' 'Depends: libc6:amd64'
+insertpackage 'unstable' 'specific' 'armel' '1.0' 'Depends: libc6:armel'
+
+insertsource 'unstable' 'source-specific-amd64' 'amd64' '1' 'Build-Depends: specific:amd64'
+insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: specific:armel'
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:forbidden-no:armel : Depends: amdboot:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:forbidden-same:armel : Depends: libc6:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:forbidden-foreign:armel : Depends: doxygen:any but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6 specific
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1.0 unstable [amd64])
+Inst specific (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6 specific
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1.0 unstable [amd64])
+Inst specific (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf specific (1.0 unstable [amd64])' aptget build-dep source-specific-amd64 -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6:armel specific:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:armel (1.0 unstable [armel])
+Inst specific:armel (1.0 unstable [armel])
+Conf libc6:armel (1.0 unstable [armel])
+Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libc6:armel specific:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:armel (1.0 unstable [armel])
+Inst specific:armel (1.0 unstable [armel])
+Conf libc6:armel (1.0 unstable [armel])
+Conf specific:armel (1.0 unstable [armel])' aptget build-dep source-specific-armel -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot cool doxygen foreigner libc6 libc6-dev libfwibble-dev libfwibble1
+ linux-stuff
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst cool (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libfwibble1 (1.0 unstable [amd64])
+Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
+Conf amdboot (1.0 unstable [amd64])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libfwibble1 (1.0 unstable [amd64])
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot arm-stuff:armel cool doxygen foreigner libc6 libc6:armel libc6-dev
+ libc6-dev:armel libfwibble-dev:armel libfwibble1:armel
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
+Inst cool (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6:armel (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libc6-dev:armel (1.0 unstable [armel])
+Inst libfwibble1:armel (1.0 unstable [armel])
+Inst libfwibble-dev:armel (1.0 unstable [armel])
+Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6:armel (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libc6-dev:armel (1.0 unstable [armel])
+Conf libfwibble1:armel (1.0 unstable [armel])
+Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel
+
+configarchitecture 'armel' 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 arm-stuff cool doxygen foreigner libc6 libc6-dev
+ libfwibble-dev libfwibble1
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
+Inst cool (1.0 unstable [armel])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libfwibble1 (1.0 unstable [armel])
+Inst libfwibble-dev (1.0 unstable [armel])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
+Conf cool (1.0 unstable [armel])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libfwibble1 (1.0 unstable [armel])
+Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 cool doxygen foreigner libc6 libc6:amd64 libc6-dev
+ libc6-dev:amd64 libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst cool (1.0 unstable [armel])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6:amd64 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libc6-dev:amd64 (1.0 unstable [amd64])
+Inst libfwibble1:amd64 (1.0 unstable [amd64])
+Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf cool (1.0 unstable [armel])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6:amd64 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libc6-dev:amd64 (1.0 unstable [amd64])
+Conf libfwibble1:amd64 (1.0 unstable [amd64])
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
+
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'cool' 'amd64' '0.5'
+insertinstalledpackage 'foreigner' 'armel' '0.5'
+
+APT_ON_AMD64='Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1 linux-stuff
+The following packages will be upgraded:
+ cool foreigner:armel
+2 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst cool [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst foreigner:armel [0.5] (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libfwibble1 (1.0 unstable [amd64])
+Inst libfwibble-dev (1.0 unstable [amd64])
+Inst linux-stuff (1.0 unstable [amd64])
+Conf amdboot (1.0 unstable [amd64])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf foreigner:armel (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libfwibble1 (1.0 unstable [amd64])
+Conf libfwibble-dev (1.0 unstable [amd64])
+Conf linux-stuff (1.0 unstable [amd64])'
+testsuccessequal "$APT_ON_AMD64" aptget build-dep apt -s
+testsuccessequal "Reading package lists...
+$APT_ON_AMD64" aptget build-dep apt -s -a amd64
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot arm-stuff:armel doxygen libc6 libc6:armel libc6-dev libc6-dev:armel
+ libfwibble-dev:armel libfwibble1:armel
+The following packages will be upgraded:
+ cool
+1 upgraded, 9 newly installed, 0 to remove and 1 not upgraded.
+Inst amdboot (1.0 unstable [amd64])
+Inst arm-stuff:armel (1.0 unstable [armel])
+Inst cool [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [amd64])
+Inst libc6 (1.0 unstable [amd64])
+Inst libc6:armel (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [amd64])
+Inst libc6-dev:armel (1.0 unstable [armel])
+Inst libfwibble1:armel (1.0 unstable [armel])
+Inst libfwibble-dev:armel (1.0 unstable [armel])
+Conf amdboot (1.0 unstable [amd64])
+Conf arm-stuff:armel (1.0 unstable [armel])
+Conf cool (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [amd64])
+Conf libc6 (1.0 unstable [amd64])
+Conf libc6:armel (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [amd64])
+Conf libc6-dev:armel (1.0 unstable [armel])
+Conf libfwibble1:armel (1.0 unstable [armel])
+Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel
+
+configarchitecture 'armel' 'amd64'
+
+APT_ON_ARMEL='Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 arm-stuff doxygen libc6 libc6-dev libfwibble-dev libfwibble1
+The following packages will be upgraded:
+ cool:amd64
+1 upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst arm-stuff (1.0 unstable [armel])
+Inst cool:amd64 [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libfwibble1 (1.0 unstable [armel])
+Inst libfwibble-dev (1.0 unstable [armel])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf arm-stuff (1.0 unstable [armel])
+Conf cool:amd64 (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libfwibble1 (1.0 unstable [armel])
+Conf libfwibble-dev (1.0 unstable [armel])'
+testsuccessequal "$APT_ON_ARMEL" aptget build-dep apt -s
+testsuccessequal "Reading package lists...
+$APT_ON_ARMEL" aptget build-dep apt -s -a armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ amdboot:amd64 doxygen libc6 libc6:amd64 libc6-dev libc6-dev:amd64
+ libfwibble-dev:amd64 libfwibble1:amd64 linux-stuff:amd64
+The following packages will be upgraded:
+ cool:amd64 foreigner
+2 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Inst amdboot:amd64 (1.0 unstable [amd64])
+Inst cool:amd64 [0.5] (1.0 unstable [amd64])
+Inst doxygen (1.0 unstable [armel])
+Inst foreigner [0.5] (1.0 unstable [armel])
+Inst libc6 (1.0 unstable [armel])
+Inst libc6:amd64 (1.0 unstable [amd64])
+Inst libc6-dev (1.0 unstable [armel])
+Inst libc6-dev:amd64 (1.0 unstable [amd64])
+Inst libfwibble1:amd64 (1.0 unstable [amd64])
+Inst libfwibble-dev:amd64 (1.0 unstable [amd64])
+Inst linux-stuff:amd64 (1.0 unstable [amd64])
+Conf amdboot:amd64 (1.0 unstable [amd64])
+Conf cool:amd64 (1.0 unstable [amd64])
+Conf doxygen (1.0 unstable [armel])
+Conf foreigner (1.0 unstable [armel])
+Conf libc6 (1.0 unstable [armel])
+Conf libc6:amd64 (1.0 unstable [amd64])
+Conf libc6-dev (1.0 unstable [armel])
+Conf libc6-dev:amd64 (1.0 unstable [amd64])
+Conf libfwibble1:amd64 (1.0 unstable [amd64])
+Conf libfwibble-dev:amd64 (1.0 unstable [amd64])
+Conf linux-stuff:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64
diff --git a/test/integration/test-bug-633350-do-not-kill-last-char-in-Release b/test/integration/test-bug-633350-do-not-kill-last-char-in-Release
new file mode 100755
index 0000000..d7dd261
--- /dev/null
+++ b/test/integration/test-bug-633350-do-not-kill-last-char-in-Release
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'cool' 'amd64' '1.0'
+
+export APT_DONT_SIGN='InRelease'
+setupaptarchive --no-update
+
+echo 'NotAutomatic: yes' >> aptarchive/dists/unstable/Release
+signreleasefiles
+testsuccess aptget update
diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold
new file mode 100755
index 0000000..fe3bde6
--- /dev/null
+++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native' 'strange-arch'
+
+insertpackage 'unstable' 'unrelated' 'strange-arch' '1'
+
+insertinstalledpackage 'apt' 'native' '0.8.9' 'Depends: libc6 (>= 2.3.4)'
+insertinstalledpackage 'libc6' 'native' '2.4.1-1'
+insertinstalledpackage 'oldcrap' 'all' '1-1'
+
+insertpackage 'unstable' 'apt' 'native' '0.8.10' 'Depends: libc6 (>= 2.10), libdb4.8
+Breaks: oldcrap'
+insertpackage 'unstable' 'libc6' 'native' '2.11.2-7'
+insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3'
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ oldcrap
+The following NEW packages will be installed:
+ libdb4.8
+The following packages will be upgraded:
+ apt libc6
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Need to get 0 B/126 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+testsuccess aptmark hold apt
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ apt
+The following packages will be upgraded:
+ libc6
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/42 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only -o Test='hold-back-apt'
diff --git a/test/integration/test-bug-657695-resolver-breaks-on-virtuals b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
new file mode 100755
index 0000000..42b8521
--- /dev/null
+++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'xserver-xorg-core' 'amd64' '2:1.7.6-2ubuntu7.10'
+for i in $(seq 1 50); do
+ insertinstalledpackage "xserver-xorg-video-driver$i" 'amd64' '1.0' 'Provides: xserver-xorg-video-6'
+done
+
+insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks: xserver-xorg-video-6'
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ xserver-xorg-video-driver1 xserver-xorg-video-driver10
+ xserver-xorg-video-driver11 xserver-xorg-video-driver12
+ xserver-xorg-video-driver13 xserver-xorg-video-driver14
+ xserver-xorg-video-driver15 xserver-xorg-video-driver16
+ xserver-xorg-video-driver17 xserver-xorg-video-driver18
+ xserver-xorg-video-driver19 xserver-xorg-video-driver2
+ xserver-xorg-video-driver20 xserver-xorg-video-driver21
+ xserver-xorg-video-driver22 xserver-xorg-video-driver23
+ xserver-xorg-video-driver24 xserver-xorg-video-driver25
+ xserver-xorg-video-driver26 xserver-xorg-video-driver27
+ xserver-xorg-video-driver28 xserver-xorg-video-driver29
+ xserver-xorg-video-driver3 xserver-xorg-video-driver30
+ xserver-xorg-video-driver31 xserver-xorg-video-driver32
+ xserver-xorg-video-driver33 xserver-xorg-video-driver34
+ xserver-xorg-video-driver35 xserver-xorg-video-driver36
+ xserver-xorg-video-driver37 xserver-xorg-video-driver38
+ xserver-xorg-video-driver39 xserver-xorg-video-driver4
+ xserver-xorg-video-driver40 xserver-xorg-video-driver41
+ xserver-xorg-video-driver42 xserver-xorg-video-driver43
+ xserver-xorg-video-driver44 xserver-xorg-video-driver45
+ xserver-xorg-video-driver46 xserver-xorg-video-driver47
+ xserver-xorg-video-driver48 xserver-xorg-video-driver49
+ xserver-xorg-video-driver5 xserver-xorg-video-driver50
+ xserver-xorg-video-driver6 xserver-xorg-video-driver7
+ xserver-xorg-video-driver8 xserver-xorg-video-driver9
+The following packages will be upgraded:
+ xserver-xorg-core
+1 upgraded, 0 newly installed, 50 to remove and 0 not upgraded.
+Need to get 0 B/42 B of archives.
+After this operation, 2150 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
diff --git a/test/integration/test-bug-661537-build-profiles-support b/test/integration/test-bug-661537-build-profiles-support
new file mode 100755
index 0000000..d24484d
--- /dev/null
+++ b/test/integration/test-bug-661537-build-profiles-support
@@ -0,0 +1,161 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '0' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'bar' 'all' '1.0'
+
+insertsource 'unstable' 'buildprofiles' 'any' '1' 'Build-Depends: foo (>= 1.0) [i386 arm] <!stage1 !cross>, bar'
+
+# table from https://wiki.debian.org/BuildProfileSpec
+insertsource 'unstable' 'spec-1' 'any' '1' 'Build-Depends: foo <!stage1>'
+insertsource 'unstable' 'spec-2' 'any' '1' 'Build-Depends: foo <stage1>'
+insertsource 'unstable' 'spec-3' 'any' '1' 'Build-Depends: foo <!stage1 !notest>'
+insertsource 'unstable' 'spec-4' 'any' '1' 'Build-Depends: foo <stage1 notest>'
+insertsource 'unstable' 'spec-5' 'any' '1' 'Build-Depends: foo <!stage1 notest>'
+insertsource 'unstable' 'spec-6' 'any' '1' 'Build-Depends: foo <stage1 !notest>'
+insertsource 'unstable' 'spec-7' 'any' '1' 'Build-Depends: foo <stage1> <!notest>'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Inst foo (1.0 unstable [all])
+Conf bar (1.0 unstable [all])
+Conf foo (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=armel
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [all])
+Conf bar (1.0 unstable [all])' aptget build-dep buildprofiles -s -o APT::Architecture=i386 -P stage1
+
+KEEP='Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [all])
+Conf foo (1.0 unstable [all])'
+setdrop() {
+ DROP="Reading package lists...
+$1 has no build depends.
+Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."
+}
+
+msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support'
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.17.14'; then
+ msgpass
+ testwithdpkg() {
+ msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'"
+ local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwithdpkg.output"
+ if dpkgcheckbuilddeps -d "$1" -P "$2" /dev/null >$OUTPUT 2>&1; then
+ if [ "$3" = "$DROP" ]; then
+ msgpass
+ else
+ cat $OUTPUT
+ msgfail
+ fi
+ else
+ if [ "$3" = "$KEEP" ]; then
+ msgpass
+ else
+ cat $OUTPUT
+ msgfail
+ fi
+ fi
+ }
+else
+ msgskip
+ testwithdpkg() {
+ msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'"
+ msgskip
+ }
+fi
+
+testprofile() {
+ if [ -n "$3" ]; then
+ testequal "$4" aptget build-dep "$1" -s -P "$3"
+ export DEB_BUILD_PROFILES="$(echo "$3" | tr ',' ' ')"
+ testequal "$4" aptget build-dep "$1" -s -o with::environment=1
+ unset DEB_BUILD_PROFILES
+ else
+ testequal "$4" aptget build-dep "$1" -s
+ fi
+ testwithdpkg "$2" "$3" "$4"
+}
+
+testsuccess aptcache gencaches
+setdrop 'spec-1'
+testprofile 'spec-1' 'foo <!stage1>' '' "$KEEP"
+testprofile 'spec-1' 'foo <!stage1>' 'stage1' "$DROP"
+testprofile 'spec-1' 'foo <!stage1>' 'notest' "$KEEP"
+testprofile 'spec-1' 'foo <!stage1>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-2'
+testprofile 'spec-2' 'foo <stage1>' '' "$DROP"
+testprofile 'spec-2' 'foo <stage1>' 'stage1' "$KEEP"
+testprofile 'spec-2' 'foo <stage1>' 'notest' "$DROP"
+testprofile 'spec-2' 'foo <stage1>' 'stage1,notest' "$KEEP"
+
+setdrop 'spec-3'
+testprofile 'spec-3' 'foo <!stage1 !notest>' '' "$KEEP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1' "$DROP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'notest' "$DROP"
+testprofile 'spec-3' 'foo <!stage1 !notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-4'
+testprofile 'spec-4' 'foo <stage1 notest>' '' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'stage1' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'notest' "$DROP"
+testprofile 'spec-4' 'foo <stage1 notest>' 'stage1,notest' "$KEEP"
+
+setdrop 'spec-5'
+testprofile 'spec-5' 'foo <!stage1 notest>' '' "$DROP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1' "$DROP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'notest' "$KEEP"
+testprofile 'spec-5' 'foo <!stage1 notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-6'
+testprofile 'spec-6' 'foo <stage1 !notest>' '' "$DROP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1' "$KEEP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'notest' "$DROP"
+testprofile 'spec-6' 'foo <stage1 !notest>' 'stage1,notest' "$DROP"
+
+setdrop 'spec-7'
+testprofile 'spec-7' 'foo <stage1> <!notest>' '' "$KEEP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1' "$KEEP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'notest' "$DROP"
+testprofile 'spec-7' 'foo <stage1> <!notest>' 'stage1,notest' "$KEEP"
diff --git a/test/integration/test-bug-673536-pre-depends-breaks-loop b/test/integration/test-bug-673536-pre-depends-breaks-loop
new file mode 100755
index 0000000..650866e
--- /dev/null
+++ b/test/integration/test-bug-673536-pre-depends-breaks-loop
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+buildsimplenativepackage 'advanced' 'native' '1' 'stable'
+buildsimplenativepackage 'advanced' 'native' '2' 'unstable' 'Pre-Depends: basic'
+buildsimplenativepackage 'basic' 'native' '2' 'unstable' 'Pre-Depends: common'
+
+buildsimplenativepackage 'common' 'native' '2~conflict' 'unstable-conflict' 'Conflicts: advanced (<= 1)'
+buildsimplenativepackage 'common' 'native' '2~break' 'unstable-break' 'Breaks: advanced (<= 1)'
+
+setupaptarchive
+
+# we check with 'real' packages here as the simulation reports a 'Conf broken'
+# which is technical correct for the simulation, but testing errormsg is ugly
+
+testloopbreak() {
+ rm -f rootdir/var/lib/dpkg/status rootdir/var/lib/apt/extended_states
+
+ testsuccess aptget install advanced=1 -y -t "$1"
+ testdpkginstalled advanced
+ testdpkgnotinstalled basic common
+
+ testsuccess aptget dist-upgrade -y -t "$1"
+ testdpkginstalled advanced basic common
+}
+
+testloopbreak 'unstable-break'
+testloopbreak 'unstable-conflict'
diff --git a/test/integration/test-bug-675449-essential-are-protected b/test/integration/test-bug-675449-essential-are-protected
new file mode 100755
index 0000000..e7460ae
--- /dev/null
+++ b/test/integration/test-bug-675449-essential-are-protected
@@ -0,0 +1,115 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'pkg-native' 'amd64' '1' 'Multi-Arch: foreign
+Essential: yes'
+insertinstalledpackage 'pkg-foreign' 'i386' '1' 'Multi-Arch: foreign
+Essential: yes'
+insertinstalledpackage 'pkg-none-native' 'amd64' '1' 'Essential: yes'
+insertinstalledpackage 'pkg-none-foreign' 'i386' '1' 'Essential: yes'
+
+insertpackage 'unstable' 'pkg-native' 'amd64,i386' '2' 'Multi-Arch: foreign
+Essential: yes'
+insertpackage 'unstable' 'pkg-foreign' 'amd64,i386' '2' 'Multi-Arch: foreign
+Depends: pkg-depends-new
+Essential: yes'
+insertpackage 'unstable' 'pkg-none-native' 'amd64,i386' '2' 'Essential: yes'
+insertpackage 'unstable' 'pkg-none-foreign' 'amd64,i386' '2' 'Essential: yes
+Depends: pkg-depends-new'
+
+insertpackage 'unstable' 'pkg-none-new' 'amd64,i386' '2' 'Essential: yes'
+insertpackage 'unstable' 'pkg-depends-new' 'amd64,i386' '2' 'Essential: yes'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-native*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-native
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-native [1]' aptget purge pkg-native -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-foreign:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-foreign:i386
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-foreign:i386 [1]' aptget purge pkg-foreign:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-none-native*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-none-native
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-none-native [1]' aptget purge pkg-none-native -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkg-none-foreign:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ pkg-none-foreign:i386
+0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
+Purg pkg-none-foreign:i386 [1]' aptget purge pkg-none-foreign:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ pkg-depends-new:i386 pkg-none-new
+The following packages will be upgraded:
+ pkg-foreign:i386 pkg-native pkg-none-foreign:i386 pkg-none-native
+4 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst pkg-depends-new:i386 (2 unstable [i386])
+Conf pkg-depends-new:i386 (2 unstable [i386])
+Inst pkg-foreign:i386 [1] (2 unstable [i386])
+Conf pkg-foreign:i386 (2 unstable [i386])
+Inst pkg-native [1] (2 unstable [amd64])
+Conf pkg-native (2 unstable [amd64])
+Inst pkg-none-foreign:i386 [1] (2 unstable [i386])
+Conf pkg-none-foreign:i386 (2 unstable [i386])
+Inst pkg-none-native [1] (2 unstable [amd64])
+Conf pkg-none-native (2 unstable [amd64])
+Inst pkg-none-new (2 unstable [amd64])
+Conf pkg-none-new (2 unstable [amd64])' aptget dist-upgrade -s
+
+insertinstalledpackage 'foo' 'amd64' '1' 'Depends: libfoo
+Essential: yes'
+insertinstalledpackage 'libfoo' 'amd64' '1'
+testequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo* libfoo*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ foo libfoo (due to foo)
+0 upgraded, 0 newly installed, 2 to remove and 4 not upgraded.
+Purg foo [1]
+Purg libfoo [1]' aptget purge foo libfoo -s
+
+testequal 'Reading package lists...
+Building dependency tree...
+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 : Depends: libfoo but it is not going to be installed
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget purge libfoo -s
diff --git a/test/integration/test-bug-679371-apt-get-autoclean-multiarch b/test/integration/test-bug-679371-apt-get-autoclean-multiarch
new file mode 100755
index 0000000..47e5aa1
--- /dev/null
+++ b/test/integration/test-bug-679371-apt-get-autoclean-multiarch
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'pkgall' 'all' '1' 'stable'
+buildsimplenativepackage 'pkgnative' 'amd64' '1' 'stable'
+buildsimplenativepackage 'pkgforeign' 'i386' '1' 'stable'
+
+setupaptarchive
+
+changetowebserver
+
+testsuccess aptget update
+testsuccess aptget install pkgall pkgnative pkgforeign -y
+
+# if we work with an old dpkg, pkgforeign will be listed differently,
+# so test with aptcache for install status instead
+testdpkginstalled pkgall pkgnative
+testsuccess aptcache show pkgforeign/installed
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...' aptget autoclean -s
diff --git a/test/integration/test-bug-680041-apt-mark-holds-correctly b/test/integration/test-bug-680041-apt-mark-holds-correctly
new file mode 100755
index 0000000..bdb0866
--- /dev/null
+++ b/test/integration/test-bug-680041-apt-mark-holds-correctly
@@ -0,0 +1,80 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'pkgarch' 'amd64' '1'
+insertinstalledpackage 'pkgall' 'all' '1'
+
+insertpackage 'unstable' 'pkgarch' 'amd64' '2'
+insertpackage 'unstable' 'pkgall' 'all' '2'
+
+setupaptarchive
+
+runtests() {
+ testempty aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ pkgall pkgarch
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/84 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'pkgarch set on hold.' aptmark hold pkgarch
+ testsuccessequal 'pkgarch' aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ pkgarch
+The following packages will be upgraded:
+ pkgall
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/42 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'Canceled hold on pkgarch.' aptmark unhold pkgarch
+ testempty aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ pkgall pkgarch
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/84 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'pkgall set on hold.' aptmark hold pkgall
+ testsuccessequal 'pkgall' aptmark showhold
+
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ pkgall
+The following packages will be upgraded:
+ pkgarch
+1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
+Need to get 0 B/42 B of archives.
+After this operation, 0 B of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
+
+ testsuccessequal 'Canceled hold on pkgall.' aptmark unhold pkgall
+ testempty aptmark showhold
+}
+# single-arch
+runtests
+# multi-arch
+configarchitecture 'amd64' 'i386'
+runtests
diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages
new file mode 100755
index 0000000..831e1f8
--- /dev/null
+++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages
@@ -0,0 +1,107 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'po-debconf' 'all' '1'
+insertsource 'unstable' 'dash' 'any' '1' 'Build-Depends: po-debconf'
+insertpackage 'unstable' 'make-po-debconf-pure-virtual' 'armel' '1' 'Depends: po-debconf'
+
+insertsource 'unstable' 'diffutils' 'any' '1' 'Build-Depends: texi2html'
+
+insertpackage 'unstable' 'libselinux1-dev' 'amd64' '1' 'Provides: libselinux-dev'
+insertsource 'unstable' 'sed' 'any' '1' 'Build-Depends: libselinux-dev'
+
+insertpackage 'unstable' 'libsehurd1-dev' 'amd64,armel' '1' 'Provides: libsehurd-dev'
+insertsource 'unstable' 'sed2' 'any' '1' 'Build-Depends: libsehurd-dev'
+
+setupaptarchive
+
+testsuccessequal 'Package: po-debconf:armel
+Versions:
+
+Reverse Depends:
+ make-po-debconf-pure-virtual:armel,po-debconf:armel
+Dependencies:
+Provides:
+Reverse Provides: ' aptcache showpkg po-debconf:armel
+testsuccessequal 'N: Unable to locate package texi2html:armel' aptcache showpkg texi2html:armel
+
+testsuccessequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ po-debconf
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst po-debconf (1 unstable [all])
+Conf po-debconf (1 unstable [all])' aptget build-dep dash -s
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:dash:armel : Depends: po-debconf:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:diffutils:armel : Depends: texi2html:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libselinux1-dev
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libselinux1-dev (1 unstable [amd64])
+Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s
+
+testfailureequal 'Reading package lists...
+Reading package lists...
+Building dependency tree...
+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:
+ builddeps:sed:armel : Depends: libselinux-dev:armel but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsehurd1-dev
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsehurd1-dev (1 unstable [amd64])
+Conf libsehurd1-dev (1 unstable [amd64])" aptget build-dep sed2 -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsehurd1-dev:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsehurd1-dev:armel (1 unstable [armel])
+Conf libsehurd1-dev:armel (1 unstable [armel])" aptget build-dep -aarmel sed2 -s
diff --git a/test/integration/test-bug-686346-package-missing-architecture b/test/integration/test-bug-686346-package-missing-architecture
new file mode 100755
index 0000000..d28600a
--- /dev/null
+++ b/test/integration/test-bug-686346-package-missing-architecture
@@ -0,0 +1,113 @@
+#!/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'
+
+setupaptarchive
+
+testsuccessequal '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
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional 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
+
+# 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 …
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+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'
+testsuccess --nomsg aptget purge pkgd -y
+testdpkgnotinstalled pkgd
+
+# there is a pkgb with an architecture
+testdpkginstalled pkgb
+msgtest 'Test apt-get purge' 'pkgb:none'
+testsuccess --nomsg aptget purge pkgb:none -y
+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'
+testequalor2 "Reading package lists...
+Building dependency tree...
+Reading state information...
+You might want to run 'apt --fix-broken 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 --fix-broken." "Reading package lists...
+Building dependency tree...
+Reading state information...
+You might want to run 'apt --fix-broken 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 but 2 is installed
+ Conflicts: pkgb:none but 1 is installed
+ pkgg : Conflicts: pkgb but 2 is installed
+ Conflicts: pkgb:none but 1 is installed
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." aptget check
+
+# check that dependencies are generated for none-packages
+rm rootdir/var/lib/dpkg/status
+insertinstalledpackage 'pkgx' 'none' '1'
+insertinstalledpackage 'pkgy' 'none' '1' 'Depends: pkgz, pkgx (>= 1)'
+insertinstalledpackage 'pkgz' 'none' '1'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgx:none* pkgy:none*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg pkgy:none [1]
+Purg pkgx:none [1]' aptget purge pkgx -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgy:none* pkgz:none*
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Purg pkgy:none [1]
+Purg pkgz:none [1]' aptget purge pkgz -s
diff --git a/test/integration/test-bug-689582-100-char-long-path-names b/test/integration/test-bug-689582-100-char-long-path-names
new file mode 100755
index 0000000..290654b
--- /dev/null
+++ b/test/integration/test-bug-689582-100-char-long-path-names
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+mkdir aptarchive/testpkg
+cd aptarchive/testpkg
+
+for i in $(seq 98 102); do
+ touch "$(printf "%0${i}d" "$i")"
+done
+tar zcf data.tar.gz 00*
+
+echo 'Package: testpkg
+Version: 1-1
+Architecture: all
+Maintainer: Joe Sixpack <joe@example.org>
+Description: Package for test
+Section: debug
+Priority: extra' > control
+tar zcf control.tar.gz control
+
+echo '2.0' > debian-binary
+ar cr ../testpkg.deb debian-binary control.tar.gz data.tar.gz
+
+cd - > /dev/null
+
+testsuccessequal '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000102 testpkg
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101 testpkg
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100 testpkg
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099 testpkg
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098 testpkg' aptftparchive contents aptarchive/
diff --git a/test/integration/test-bug-691453-apt-cache-search-multi-pattern b/test/integration/test-bug-691453-apt-cache-search-multi-pattern
new file mode 100755
index 0000000..8aa6ca7
--- /dev/null
+++ b/test/integration/test-bug-691453-apt-cache-search-multi-pattern
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'foobar' 'native' '1' '' '' 'funky tool'
+insertpackage 'unstable' 'coolstuff' 'native' '1' '' '' 'funky tool just like foo and bar'
+insertpackage 'unstable' 'foo' 'native' '1' '' '' 'tool best used with bar'
+insertpackage 'unstable' 'bar' 'native' '1' '' '' 'tool best used with foo'
+insertpackage 'unstable' 'baz' 'native' '1' 'Provides: bar' '' 'alternative tool best used with foo'
+
+setupaptarchive
+
+# in this special case the following queries should be equal
+FOOBAR='foobar - funky tool
+coolstuff - funky tool just like foo and bar
+foo - tool best used with bar
+bar - tool best used with foo
+baz - alternative tool best used with foo'
+
+testsuccessequal "$FOOBAR" aptcache search foo
+testsuccessequal "$FOOBAR" aptcache search bar
+testsuccessequal "$FOOBAR" aptcache search foo bar
+
+testsuccessequal 'foobar - funky tool
+foo - tool best used with bar' aptcache search -n foo
+testsuccessequal 'foobar - funky tool
+bar - tool best used with foo
+baz - alternative tool best used with foo' aptcache search -n bar
+testsuccessequal 'foobar - funky tool' aptcache search -n foo bar
diff --git a/test/integration/test-bug-709560-set-candidate-release b/test/integration/test-bug-709560-set-candidate-release
new file mode 100755
index 0000000..43eea36
--- /dev/null
+++ b/test/integration/test-bug-709560-set-candidate-release
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'experimental' 'foo' 'all' '2.0' 'Depends: foo-dep (= 2.1)'
+insertpackage 'experimental' 'foo-dep' 'all' '2.1'
+
+
+(
+cat <<EOF
+Package: *
+Pin: release a=experimental
+Pin-Priority: -10
+EOF
+) > rootdir/etc/apt/preferences
+
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2.0' (experimental [all]) for 'foo'
+Selected version '2.1' (experimental [all]) for 'foo-dep' because of 'foo'
+The following additional packages will be installed:
+ foo-dep
+The following NEW packages will be installed:
+ foo foo-dep
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-dep (2.1 experimental [all])
+Inst foo (2.0 experimental [all])
+Conf foo-dep (2.1 experimental [all])
+Conf foo (2.0 experimental [all])" aptget install -q0 -s foo/experimental
diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
new file mode 100755
index 0000000..9c96bbe
--- /dev/null
+++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
@@ -0,0 +1,152 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'toolkit' 'amd64' '2' 'unstable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'libsame' 'i386,amd64' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libsame' 'i386,amd64' '2' 'unstable' 'Multi-Arch: same'
+buildsimplenativepackage 'stuff' 'i386,amd64' '1' 'stable' 'Depends: libsame (= 1), toolkit (= 1)'
+buildsimplenativepackage 'stuff' 'i386,amd64' '2' 'unstable' 'Depends: libsame (= 2), toolkit (= 2)'
+
+setupsimplenativepackage 'confpkg' 'amd64' '1' 'unstable'
+BUILDDIR='incoming/confpkg-1'
+echo 'foo "bar";' > ${BUILDDIR}/pkg.conf
+echo 'pkg.conf /etc/pkg.conf' >> ${BUILDDIR}/debian/install
+buildpackage "$BUILDDIR" 'unstable' 'main' 'amd64'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+hook='pre-install-pkgs'
+
+enablehookversion() {
+ echo "#!/bin/sh
+FD=0
+echo -n > ${hook}-v${1}.list
+if [ -n \"${2}\" ]; then
+ FD=\$APT_HOOK_INFO_FD
+ if [ "\$FD" != \"${2}\" ]; then echo \"ERROR: Information is not on requested FD: \$FD != ${2}\" >> ${hook}-v${1}.list; fi
+fi
+while read </dev/fd/\$FD line; do
+ if echo \"\$line\" | grep -Fq '**'; then
+ echo \"\$line\"
+ fi
+done >> ${hook}-v${1}.list" > ${hook}-v${1}.sh
+ chmod +x ${hook}-v${1}.sh
+ echo "dpkg::${hook}:: \"./${hook}-v${1}.sh --foo -bar\";
+DPkg::Tools::options::\"./${hook}-v${1}.sh\"::Version \"$1\";" > rootdir/etc/apt/apt.conf.d/hook-v$1
+ if [ -n "$2" ]; then
+ echo "DPkg::Tools::options::\"./${hook}-v${1}.sh\"::InfoFD \"${2}\";" >> rootdir/etc/apt/apt.conf.d/hook-v$1
+ fi
+}
+
+observehook() {
+ rm -f ${hook}-v2.list ${hook}-v3.list
+ msgtest 'Observe hooks while' "$*"
+ testsuccess --nomsg aptget "$@" -y --allow-downgrades --planner $planner -o Debug::pkgDPkgProgressReporting=1
+ # different planners have different orders – we don't care in this test here
+ if [ -e ${hook}-v2.list ]; then
+ sort < ${hook}-v2.list > ${hook}-v2.list.new
+ mv ${hook}-v2.list.new ${hook}-v2.list
+ fi
+ if [ -e ${hook}-v3.list ]; then
+ sort < ${hook}-v3.list > ${hook}-v3.list.new
+ mv ${hook}-v3.list.new ${hook}-v3.list
+ fi
+}
+
+testrun() {
+ observehook install stuff -t stable
+ testfileequal "${hook}-v2.list" 'libsame - < 1 **CONFIGURE**
+stuff - < 1 **CONFIGURE**
+toolkit - < 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 1 amd64 same **CONFIGURE**
+stuff - - none < 1 amd64 none **CONFIGURE**
+toolkit - - none < 1 all foreign **CONFIGURE**'
+
+ observehook install stuff -t unstable
+ testfileequal "${hook}-v2.list" 'libsame 1 < 2 **CONFIGURE**
+stuff 1 < 2 **CONFIGURE**
+toolkit 1 < 2 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame 1 amd64 same < 2 amd64 same **CONFIGURE**
+stuff 1 amd64 none < 2 amd64 none **CONFIGURE**
+toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
+
+ observehook install stuff:i386 -t unstable
+ testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
+stuff - < 2 **CONFIGURE**
+stuff 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 2 i386 same **CONFIGURE**
+stuff - - none < 2 i386 none **CONFIGURE**
+stuff 2 amd64 none > - - none **REMOVE**'
+
+ observehook remove libsame
+ testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**'
+
+ observehook install stuff:i386/stable libsame:i386/stable toolkit/stable
+ testfileequal "${hook}-v2.list" 'libsame 2 > 1 **CONFIGURE**
+stuff 2 > 1 **CONFIGURE**
+toolkit 2 > 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 i386 same > 1 i386 same **CONFIGURE**
+stuff 2 i386 none > 1 i386 none **CONFIGURE**
+toolkit 2 amd64 foreign > 1 all foreign **CONFIGURE**'
+
+ observehook install 'libsame:*'
+ testfileequal "${hook}-v2.list" 'libsame - < 2 **CONFIGURE**
+libsame 1 < 2 **CONFIGURE**
+stuff 1 < 2 **CONFIGURE**
+toolkit 1 < 2 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'libsame - - none < 2 amd64 same **CONFIGURE**
+libsame 1 i386 same < 2 i386 same **CONFIGURE**
+stuff 1 i386 none < 2 i386 none **CONFIGURE**
+toolkit 1 all foreign < 2 amd64 foreign **CONFIGURE**'
+
+ observehook purge stuff:i386 'libsame:*' toolkit
+ testfileequal "${hook}-v2.list" 'libsame 2 > - **REMOVE**
+libsame 2 > - **REMOVE**
+stuff 2 > - **REMOVE**
+toolkit 2 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'libsame 2 amd64 same > - - none **REMOVE**
+libsame 2 i386 same > - - none **REMOVE**
+stuff 2 i386 none > - - none **REMOVE**
+toolkit 2 amd64 foreign > - - none **REMOVE**'
+
+ observehook install confpkg
+ testfileequal "${hook}-v2.list" 'confpkg - < 1 **CONFIGURE**'
+ testfileequal "${hook}-v3.list" 'confpkg - - none < 1 amd64 none **CONFIGURE**'
+
+ observehook remove confpkg
+ testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
+
+ msgtest 'Conffiles of package remained after remove' 'confpkg'
+ dpkg -l confpkg | grep -q '^rc' && msgpass || msgfail
+
+ observehook purge confpkg
+ testfileequal "${hook}-v2.list" 'confpkg 1 > - **REMOVE**'
+ testfileequal "${hook}-v3.list" 'confpkg 1 amd64 none > - - none **REMOVE**'
+
+ msgtest 'Conffiles are gone after purge' 'confpkg'
+ dpkg -l confpkg 2>/dev/null | grep -q '^rc' && msgfail || msgpass
+}
+
+runwithplanner()
+{
+ msgmsg 'Running with planner' "$1"
+ planner="$1"
+ enablehookversion 2
+ enablehookversion 3
+ testrun
+
+ enablehookversion 2 13
+ enablehookversion 3 13
+ testrun
+}
+
+runwithplanner 'apt'
diff --git a/test/integration/test-bug-712435-missing-descriptions b/test/integration/test-bug-712435-missing-descriptions
new file mode 100755
index 0000000..c231993
--- /dev/null
+++ b/test/integration/test-bug-712435-missing-descriptions
@@ -0,0 +1,162 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+PACKAGESTANZA='Version: 0.9.7.8
+Installed-Size: 3270
+Maintainer: APT Development Team <deity@lists.debian.org>
+Architecture: amd64
+Filename: pool/main/a/apt/apt_0.9.7.8_amd64.deb
+MD5sum: 3a622acda41620df50aa22a9fac6f32e'
+
+DESCRIPTION='Description: commandline package manager
+ This APT has Super Cow Powers.'
+
+TRANSDESCRIPTION='Description-en: commandline package manager
+ This APT has translated Super Cow Powers.'
+
+echo "Package: apt-normal
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+Package: apt-both-below
+$PACKAGESTANZA
+$DESCRIPTION
+$TRANSDESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+
+Package: apt-both-middle
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+$TRANSDESCRIPTION
+
+Package: apt-both-top
+$PACKAGESTANZA
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+$DESCRIPTION
+$TRANSDESCRIPTION
+
+Package: apt-trans
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: cccccccccccccccccccccccccccccccc
+
+Package: apt-md5
+$PACKAGESTANZA
+Description-md5: dddddddddddddddddddddddddddddddd
+
+Package: apt-none
+$PACKAGESTANZA
+
+Package: apt-intermixed
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+Package: apt-intermixed2
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+$TRANSDESCRIPTION
+X-Foo-Flag: Something with a Description
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Bar-Flag: no
+
+Package: apt-intermixed3
+$PACKAGESTANZA
+$DESCRIPTION
+X-Some-Flag: yes
+$TRANSDESCRIPTION
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" > aptarchive/Packages
+
+
+setupaptarchive
+
+testsuccessequal "Package: apt-normal
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+" aptcache show apt-normal
+
+for variant in 'below' 'middle' 'top'; do
+ testsuccessequal "Package: apt-both-$variant
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+" aptcache show apt-both-$variant
+done
+
+testsuccessequal "Package: apt-trans
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: cccccccccccccccccccccccccccccccc
+" aptcache show apt-trans
+
+testsuccessequal "Package: apt-md5
+$PACKAGESTANZA
+Description-md5: dddddddddddddddddddddddddddddddd
+" aptcache show apt-md5
+
+testsuccessequal "Package: apt-none
+$PACKAGESTANZA
+" aptcache show apt-none
+
+testsuccessequal "Package: apt-intermixed
+$PACKAGESTANZA
+$DESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+" aptcache show apt-intermixed
+
+testsuccessequal "Package: apt-intermixed2
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+" aptcache show apt-intermixed2
+
+testsuccessequal "Package: apt-intermixed3
+$PACKAGESTANZA
+$TRANSDESCRIPTION
+Description-md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Some-Flag: yes
+X-Foo-Flag: Something with a Description
+X-Bar-Flag: no
+" aptcache show apt-intermixed3
+
+msgtest 'Test that no description does not destroy' 'showpkg'
+aptcache showpkg apt-none | sed 's#/tmp/.*_aptarchive_#/tmp/aptarchive_#' >showpkg.explosion && msgpass || msgfail
+testfileequal showpkg.explosion 'Package: apt-none
+Versions:
+0.9.7.8 (/tmp/aptarchive_Packages)
+
+
+Reverse Depends:
+Dependencies:
+0.9.7.8 -
+Provides:
+0.9.7.8 -
+Reverse Provides: '
+
+testempty aptcache search nonexistentstring
+
+# packages without a description can't be found
+testsuccessequal 'apt-normal - commandline package manager
+apt-both-below - commandline package manager
+apt-both-middle - commandline package manager
+apt-both-top - commandline package manager
+apt-trans - commandline package manager
+apt-intermixed - commandline package manager
+apt-intermixed2 - commandline package manager
+apt-intermixed3 - commandline package manager' aptcache search apt
diff --git a/test/integration/test-bug-717891-abolute-uris-for-proxies b/test/integration/test-bug-717891-abolute-uris-for-proxies
new file mode 100755
index 0000000..5f1b754
--- /dev/null
+++ b/test/integration/test-bug-717891-abolute-uris-for-proxies
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive
+changetowebserver --request-absolute='uri'
+
+msgtest 'Check that absolute paths are' 'not accepted'
+testfailure --nomsg aptget update --allow-insecure-repositories
+
+echo "Acquire::http::Proxy \"http://localhost:${APTHTTPPORT}\";" > rootdir/etc/apt/apt.conf.d/99proxy
+
+msgtest 'Check that requests to proxies are' 'absolute uris via config'
+testsuccess --nomsg aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ unrelated
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget install unrelated -s
+
+rm -f rootdir/etc/apt/apt.conf.d/99proxy
+echo "Acquire::http::Proxy-Auto-Detect \"${TMPWORKINGDIRECTORY}/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
+cat > "${TMPWORKINGDIRECTORY}/apt-proxy-detect" <<EOF
+#!/bin/sh
+set -e
+echo "http://localhost:${APTHTTPPORT}"
+EOF
+chmod 755 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+
+msgtest 'Check that requests to proxies are' 'absolute uris via auto-detect'
+testsuccess aptget update -o Debug::Acquire::http=1
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ unrelated
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated (0.5~squeeze1 unstable [all])
+Conf unrelated (0.5~squeeze1 unstable [all])' aptget install unrelated -s
+
+chmod 444 "${TMPWORKINGDIRECTORY}/apt-proxy-detect"
+msgtest 'Check that non-executable proxy commands result in' 'permission error'
+testfailure --nomsg aptget update
+testsuccess grep 'can not be executed' rootdir/tmp/testfailure.output
diff --git a/test/integration/test-bug-718329-support-data.tar-uncompressed b/test/integration/test-bug-718329-support-data.tar-uncompressed
new file mode 100755
index 0000000..9318025
--- /dev/null
+++ b/test/integration/test-bug-718329-support-data.tar-uncompressed
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+art() {
+ ar t "$@" | grep -v control.tar
+}
+
+test_process_package_with_compression() {
+ COMPRESSOR="$1"
+ DATA_TAR="$2"
+
+ msgmsg "Testing apt-ftparchive with compression type: $COMPRESSOR"
+
+ buildsimplenativepackage 'pkg' 'all' '1.0' '' '' 'some descr' '' '' '' "$COMPRESSOR"
+ testsuccessequal "debian-binary
+$DATA_TAR" art incoming/pkg_1.0_all.deb
+
+ testequal "Package: pkg" echo "$(aptftparchive packages incoming/|grep ^Package)"
+
+ testsuccessequal "usr/bin/pkg-all pkg
+usr/share/doc/pkg/FEATURES pkg
+usr/share/doc/pkg/changelog pkg
+usr/share/doc/pkg/copyright pkg" aptftparchive contents incoming/
+
+ rm -rf incoming/*
+}
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+test_process_package_with_compression "gzip" "data.tar.gz"
+test_process_package_with_compression "none" "data.tar"
+test_process_package_with_compression "xz" "data.tar.xz"
diff --git a/test/integration/test-bug-719263-print-uris-removes-authentication b/test/integration/test-bug-719263-print-uris-removes-authentication
new file mode 100755
index 0000000..e79e691
--- /dev/null
+++ b/test/integration/test-bug-719263-print-uris-removes-authentication
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'unrelated' 'all' '1'
+buildsimplenativepackage 'unrelated' 'all' '2' 'unstable'
+
+setupaptarchive
+
+testnoact() {
+ cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status-backup-noact
+ touch rootdir/var/lib/apt/extended_states
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be upgraded:
+ unrelated
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated [1] (2 unstable [all])
+Conf unrelated (2 unstable [all])' aptget install unrelated -s
+ testsuccess aptget install unrelated -y
+ testdpkginstalled unrelated
+ rm -rf rootdir/var/cache/apt/*.bin
+ cp -a rootdir/var/lib/dpkg/status-backup-noact rootdir/var/lib/dpkg/status
+}
+
+testnoact
+testsuccess aptget update --print-uris
+testnoact
+
+# same thing, just not with InRelease this time
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update -o Acquire::TryInRelease=0
+
+testnoact
+testsuccess aptget update --print-uris -o Acquire::TryInRelease=0
+testnoact
diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge
new file mode 100755
index 0000000..4b36989
--- /dev/null
+++ b/test/integration/test-bug-720597-build-dep-purge
@@ -0,0 +1,65 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+
+# we need this construct here as it isn't really possible to fake native arch for dpkg-* tools
+NATIVE="$(command dpkg --print-architecture)"
+configarchitecture $NATIVE
+
+insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign'
+insertinstalledpackage 'pkga' 'all' '1'
+buildsimplenativepackage 'pkgb' "$NATIVE" '1' 'stable' 'Conflicts: pkga'
+buildsimplenativepackage 'pkgc' "$NATIVE" '1' 'stable' 'Build-Depends: pkgb'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkga
+The following NEW packages will be installed:
+ pkgb
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv pkga [1]
+Inst pkgb (1 stable [$NATIVE])
+Conf pkgb (1 stable [$NATIVE])" aptget build-dep pkgc -s
+
+testsuccessequal "Reading package lists...
+Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ pkga*
+The following NEW packages will be installed:
+ pkgb
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Purg pkga [1]
+Inst pkgb (1 stable [$NATIVE])
+Conf pkgb (1 stable [$NATIVE])" aptget build-dep pkgc -s --purge
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testdpkgnotinstalled pkgb
+testsuccess apt build-dep pkgc -y -o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgDepCache::Marker=1
+testdpkginstalled pkgb
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testsuccess apt purge pkgb pkgc -y
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt autoremove -s
+testsuccess apt build-dep pkgc -y -o APT::Get::Build-Dep-Automatic=true
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ pkgb
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv pkgb [1]' apt autoremove -s
diff --git a/test/integration/test-bug-722207-print-uris-even-if-very-quiet b/test/integration/test-bug-722207-print-uris-even-if-very-quiet
new file mode 100755
index 0000000..73290a7
--- /dev/null
+++ b/test/integration/test-bug-722207-print-uris-even-if-very-quiet
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'apt' 'all' '1'
+insertpackage 'unstable' 'apt' 'all' '2'
+insertsource 'unstable' 'apt' 'all' '2'
+insertsource 'unstable' 'apt2' 'all' '1'
+
+getoriginfromsuite() { echo 'Debian'; }
+setupaptarchive
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+testsuccessequal "'file:${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 42 " aptget upgrade -qq --print-uris
+testsuccessequal "'file:${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 42 " aptget dist-upgrade -qq --print-uris
+testsuccessequal "'file:${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 42 " aptget install apt -qq --print-uris
+testsuccessequal "'file:${APTARCHIVE}/pool/main/apt/apt_2_all.deb' apt_2_all.deb 42 SHA256:0000000000000000000000000000000000000000000000000000000000000000" aptget download apt -qq --print-uris
+testsuccessequal "'file:${APTARCHIVE}/apt_2.dsc' apt_2.dsc 9 SHA256:7776436a6d741497f1cd958014e1a05b352224231428152aae39da3c17fd2fd4
+'file:${APTARCHIVE}/apt_2.tar.gz' apt_2.tar.gz 12 SHA256:f57f565eabe3fde0ec6e6e0bcc8db1d86fe2b4d6344a380a23520ddbb7728e99" aptget source apt -qq --print-uris
+testsuccessequal "'https://metadata.ftp-master.debian.org/changelogs/main/a/apt/apt_2_changelog' apt.changelog" aptget changelog apt -qq --print-uris
+
+testsuccessequal "'file:${APTARCHIVE}/apt_2.dsc' apt_2.dsc 9 SHA256:7776436a6d741497f1cd958014e1a05b352224231428152aae39da3c17fd2fd4
+'file:${APTARCHIVE}/apt_2.tar.gz' apt_2.tar.gz 12 SHA256:f57f565eabe3fde0ec6e6e0bcc8db1d86fe2b4d6344a380a23520ddbb7728e99
+'file:${APTARCHIVE}/apt2_1.dsc' apt2_1.dsc 10 SHA256:5693ba5efbfa21216f13661d344611aabe70ce3c343554ab46d4d9c24fdfd13a
+'file:${APTARCHIVE}/apt2_1.tar.gz' apt2_1.tar.gz 13 SHA256:1464c609fd09934c270ec629020d5e248b080607f715e47ef088cc8ab8480541" aptget source apt apt2 -qq --print-uris
diff --git a/test/integration/test-bug-723586-any-stripped-in-single-arch b/test/integration/test-bug-723586-any-stripped-in-single-arch
new file mode 100755
index 0000000..38eb026
--- /dev/null
+++ b/test/integration/test-bug-723586-any-stripped-in-single-arch
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'python3' 'all' '3.2.3-6'
+
+insertpackage 'unstable' 'python3' 'amd64' '3.3.2-16' 'Multi-Arch: allowed'
+insertpackage 'stable' 'python3-gnupg' 'all' '0.3.5-2' 'Depends: python3:any (>= 3.2.3-3~)'
+
+insertpackage 'unstable' 'python-mips' 'amd64' '3' 'Depends: python3:mips'
+
+setupaptarchive
+
+INSTALLLOG='Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ python3
+The following NEW packages will be installed:
+ python3-gnupg
+The following packages will be upgraded:
+ python3
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst python3 [3.2.3-6] (3.3.2-16 unstable [amd64])
+Inst python3-gnupg (0.3.5-2 stable [all])
+Conf python3 (3.3.2-16 unstable [amd64])
+Conf python3-gnupg (0.3.5-2 stable [all])'
+
+FAILLOG='Reading package lists...
+Building dependency tree...
+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:
+ python-mips : Depends: python3:mips but it is not installable
+E: Unable to correct problems, you have held broken packages.'
+
+testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
+aptcache showpkg python3 > showpkg.log
+testfailureequal "$FAILLOG" aptget install python-mips -s
+
+# same test, but this time in a multi-arch environment
+configarchitecture 'amd64' 'armhf'
+rm rootdir/var/cache/apt/*.bin
+
+testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s
+testsuccessequal "$(cat showpkg.log)" aptcache showpkg python3
+testfailureequal "$FAILLOG" aptget install python-mips -s
diff --git a/test/integration/test-bug-723705-tagfile-truncates-fields b/test/integration/test-bug-723705-tagfile-truncates-fields
new file mode 100755
index 0000000..1542228
--- /dev/null
+++ b/test/integration/test-bug-723705-tagfile-truncates-fields
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+setupaptarchive
+
+aptget install --print-uris -y cdebconf-newt-terminal cdebconf-gtk-terminal 2>&1 | sed "s#file:\(//\|\)${TMPWORKINGDIRECTORY}#file:/tmp#g" > filename.log
+
+testfileequal filename.log "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cdebconf-gtk-udeb cdebconf-newt-udeb cdebconf-udeb libc6-udeb
+ libglib2.0-udeb libgtk2.0-0-udeb libvte9-udeb
+The following NEW packages will be installed:
+ cdebconf-gtk-terminal cdebconf-gtk-udeb cdebconf-newt-terminal
+ cdebconf-newt-udeb cdebconf-udeb libc6-udeb libglib2.0-udeb libgtk2.0-0-udeb
+ libvte9-udeb
+0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/4774 kB of archives.
+After this operation, 19.8 MB of additional disk space will be used.
+'file:/tmp/aptarchive/pool/main/c/cdebconf/cdebconf-udeb_0.185_amd64.udeb' cdebconf-udeb_0.185_amd64.udeb 77376 MD5Sum:e3883706fdbf54c2e5ea959c92b2d37f
+'file:/tmp/aptarchive/pool/main/c/cdebconf/cdebconf-gtk-udeb_0.185_amd64.udeb' cdebconf-gtk-udeb_0.185_amd64.udeb 27278 MD5Sum:a1bbbc1d4fb8e0615b5621abac021924
+'file:/tmp/aptarchive/pool/main/c/cdebconf/cdebconf-newt-udeb_0.185_amd64.udeb' cdebconf-newt-udeb_0.185_amd64.udeb 19192 MD5Sum:de27807f56dae2f2403b3322d5fe6bd2
+'file:/tmp/aptarchive/pool/main/g/glib2.0/libglib2.0-udeb_2.36.4-1_amd64.udeb' libglib2.0-udeb_2.36.4-1_amd64.udeb 1714604 MD5Sum:72da029f1bbb36057d874f1f82a5d00a
+'file:/tmp/aptarchive/pool/main/e/eglibc/libc6-udeb_2.17-92%2bb1_amd64.udeb' libc6-udeb_2.17-92+b1_amd64.udeb 1056000 MD5Sum:7fd7032eeeecf7f76eff79a0543fbd72
+'file:/tmp/aptarchive/pool/main/g/gtk%2b2.0/libgtk2.0-0-udeb_2.24.20-1_amd64.udeb' libgtk2.0-0-udeb_2.24.20-1_amd64.udeb 1643046 MD5Sum:25513478eb2e02e5766c0eea0b411ca9
+'file:/tmp/aptarchive/pool/main/v/vte/libvte9-udeb_0.28.2-5_amd64.udeb' libvte9-udeb_1%3a0.28.2-5_amd64.udeb 216968 MD5Sum:7da7201effaf5ced19abd9d0b45aa2c6
+'file:/tmp/aptarchive/pool/main/c/cdebconf-terminal/cdebconf-gtk-terminal_0.22_amd64.udeb' cdebconf-gtk-terminal_0.22_amd64.udeb 14734 MD5Sum:f9c3a7354560cb88e0396e2b7ba54363
+'file:/tmp/aptarchive/pool/main/c/cdebconf-terminal/cdebconf-newt-terminal_0.22_amd64.udeb' cdebconf-newt-terminal_0.22_amd64.udeb 4538 MD5Sum:20db6152fce5081fcbf49c7c08f21246"
diff --git a/test/integration/test-bug-728500-tempdir b/test/integration/test-bug-728500-tempdir
new file mode 100755
index 0000000..7497ffc
--- /dev/null
+++ b/test/integration/test-bug-728500-tempdir
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'coolstuff' 'all' '1.0'
+
+setupaptarchive
+changetowebserver
+
+msgtest 'Test apt-get update with incorrect' 'TMPDIR'
+
+export TMPDIR=/does-not-exists
+testsuccess aptget update -o Debug::Acquire::gpg=1
+unset TMPDIR
+
+testsuccessequal 'coolstuff' aptcache pkgnames
+testsuccess ls rootdir/var/lib/apt/lists/*InRelease
diff --git a/test/integration/test-bug-732746-preferences b/test/integration/test-bug-732746-preferences
new file mode 100755
index 0000000..d3bbdad
--- /dev/null
+++ b/test/integration/test-bug-732746-preferences
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'bar' 'i386' '1.0'
+
+cat > rootdir/etc/apt/preferences << EOF
+# random test comment header
+
+# commented out by puppy^Wpuppet
+#Package: foo
+#Pin: origin "ftp.debian.org"
+#Pin: 800
+
+Package: bar
+Pin: version 1.0
+Pin-Priority: 700
+
+#Package: bar
+#Pin: version 1.0
+#Pin: 800
+EOF
+
+testsuccessequal "Reading package lists...
+Building dependency tree..." aptget check
+
+msgtest "Ensure policy is applied"
+aptcache policy bar|grep -q "*** 1.0 700" && msgpass || msgfail
diff --git a/test/integration/test-bug-733028-gpg-resource-limit b/test/integration/test-bug-733028-gpg-resource-limit
new file mode 100755
index 0000000..b44facd
--- /dev/null
+++ b/test/integration/test-bug-733028-gpg-resource-limit
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'foobar' 'all' '1'
+
+setupaptarchive --no-update
+
+for i in $(seq 1 50); do
+ touch rootdir/etc/apt/trusted.gpg.d/emptykey-${i}.gpg
+done
+testaptkeys 'Joe Sixpack'
+
+testsuccess aptget update
+msgtest 'Test for no gpg errors/warnings in' 'apt-get update'
+sed -i -e "s#${TMPWORKINGDIRECTORY}#/tmp/tmp.XXXXXX#g" rootdir/tmp/testsuccess.output
+if grep -iq 'GPG' rootdir/tmp/testsuccess.output; then
+ cat rootdir/tmp/testsuccess.output
+ msgfail
+else
+ msgpass
+fi
diff --git a/test/integration/test-bug-734922-apt-showsrc-duplicate b/test/integration/test-bug-734922-apt-showsrc-duplicate
new file mode 100755
index 0000000..d4370e2
--- /dev/null
+++ b/test/integration/test-bug-734922-apt-showsrc-duplicate
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'i386'
+
+# foo is identical, show it only once in showsrc
+insertpackage "unstable" "foo" "i386" "1.0"
+insertpackage "testing" "foo" "i386" "1.0"
+insertsource "unstable" "foo" "i386" "1.0"
+insertsource "testing" "foo" "i386" "1.0"
+
+# bar is different, show twice
+insertsource "unstable" "bar" "i386" "1.0"
+insertsource "testing" "bar" "i386" "2.0"
+
+setupaptarchive
+
+# ensure "foo" is not shown twice
+aptcache showsrc foo bar|grep ^Package: > out.txt
+testequal "Package: foo
+Package: bar
+Package: bar" cat out.txt
diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable
new file mode 100755
index 0000000..b836451
--- /dev/null
+++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'lib32nss-mdns' 'amd64' '0.10-6' 'Depends: libnss-mdns-i386 (= 0.10-6)'
+insertpackage 'unstable' 'libnss-mdns' 'amd64,i386' '0.10-6' 'Multi-Arch: same
+Breaks: lib32nss-mdns (<< 0.10-6)'
+insertpackage 'unstable' 'libnss-mdns-i386' 'i386' '0.10-6' 'Multi-Arch: foreign
+Depends: libnss-mdns'
+# introduce some dummies so that there are versions, but none works
+insertpackage 'unstable' 'libnss-mdns-i386' 'amd64' '0.1-6'
+insertpackage 'experimental' 'libnss-mdns-amd64' 'i386,amd64' '0.10-6' 'Provides: libnss-mdns-i386'
+
+insertpackage 'unstable' 'foo' 'amd64' '1' 'Depends: libfoo'
+insertpackage 'unstable' 'libfoo' 'amd64' '1' 'Depends: libfoo-bin'
+insertpackage 'unstable' 'libfoo-bin' 'i386' '0.10-6' 'Multi-Arch: foreign'
+
+insertinstalledpackage 'lib32nss-mdns' 'amd64' '0.9-1'
+insertinstalledpackage 'libnss-mdns' 'amd64' '0.9-1'
+
+insertinstalledpackage 'i-make-packages-important' 'all' '1' 'Depends: libnss-mdns'
+
+setupaptarchive --no-update
+
+# make libnss-mdns-i386 unavailable
+configarchitecture 'amd64'
+testsuccess aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ lib32nss-mdns
+The following packages will be upgraded:
+ libnss-mdns
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv lib32nss-mdns [0.9-1]
+Inst libnss-mdns [0.9-1] (0.10-6 unstable [amd64])
+Conf libnss-mdns (0.10-6 unstable [amd64])' aptget dist-upgrade -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ libfoo : Depends: libfoo-bin but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install foo -s
+
+# activate multiarch
+configarchitecture 'amd64' 'i386'
+testsuccess aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ libnss-mdns:i386 libnss-mdns-i386:i386
+The following packages will be upgraded:
+ lib32nss-mdns libnss-mdns
+2 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst lib32nss-mdns [0.9-1] (0.10-6 unstable [amd64]) []
+Inst libnss-mdns [0.9-1] (0.10-6 unstable [amd64]) []
+Inst libnss-mdns:i386 (0.10-6 unstable [i386]) []
+Inst libnss-mdns-i386:i386 (0.10-6 unstable [i386])
+Conf lib32nss-mdns (0.10-6 unstable [amd64])
+Conf libnss-mdns (0.10-6 unstable [amd64])
+Conf libnss-mdns:i386 (0.10-6 unstable [i386])
+Conf libnss-mdns-i386:i386 (0.10-6 unstable [i386])' aptget dist-upgrade -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libfoo libfoo-bin:i386
+The following NEW packages will be installed:
+ foo libfoo libfoo-bin:i386
+0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded.
+Inst libfoo-bin:i386 (0.10-6 unstable [i386])
+Inst libfoo (1 unstable [amd64])
+Inst foo (1 unstable [amd64])
+Conf libfoo-bin:i386 (0.10-6 unstable [i386])
+Conf libfoo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])' aptget install foo -s
diff --git a/test/integration/test-bug-737130-multicompress-file-modes b/test/integration/test-bug-737130-multicompress-file-modes
new file mode 100755
index 0000000..2ae5166
--- /dev/null
+++ b/test/integration/test-bug-737130-multicompress-file-modes
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+cat >aptarchive/ftparchive.conf <<EOF
+Dir { ArchiveDir "$(pwd)/aptarchive"; CacheDir "$(pwd)/aptarchive"; };
+Default { Translation::Compress ". gzip bzip2 xz"; FileMode 0644; };
+tree "dists/sid" {
+ Sections "main";
+ Architectures "i386";
+ LongDescription "false";
+};
+EOF
+mkdir -p aptarchive/dists/sid/main/binary-i386
+mkdir -p aptarchive/dists/sid/main/i18n
+testsuccess aptftparchive generate aptarchive/ftparchive.conf
+i18n=aptarchive/dists/sid/main/i18n
+for comp in '' .gz .bz2 .xz; do
+ msgtest 'Test apt-ftparchive file mode is 644 for' "Translation-en$comp"
+ FILEMODE="$(stat --format %a "$i18n/Translation-en$comp")"
+ if [ "$FILEMODE" != '644' ]; then
+ msgfail "Mode was '$FILEMODE'!"
+ else
+ msgpass
+ fi
+done
diff --git a/test/integration/test-bug-738785-switch-protocol b/test/integration/test-bug-738785-switch-protocol
new file mode 100755
index 0000000..471d12e
--- /dev/null
+++ b/test/integration/test-bug-738785-switch-protocol
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage 'apt' 'all' '1.0' 'stable'
+
+# setup http redirecting to https
+getlabelfromsuite() { echo 'Testcases'; }
+setupaptarchive --no-update
+changetohttpswebserver -o 'aptwebserver::support::http=false'
+webserverconfig 'aptwebserver::redirect::replace::/downgrademe/' "http://localhost:${APTHTTPPORT}/"
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "https://localhost:${APTHTTPSPORT}/"
+sed -i -e "s#:${APTHTTPSPORT}/#:${APTHTTPPORT}/redirectme#" -e 's# https:# http:#' rootdir/etc/apt/sources.list.d/*
+
+testsuccess aptget update -o Debug::Acquire::http=1 -o Debug::Acquire::https=1 -o Debug::pkgAcquire::Worker=1
+
+msgtest 'Test that the webserver does not answer' 'http requests'
+downloadfile "http://localhost:${APTHTTPPORT}/pool/main/a/apt/apt_1.0/changelog" changelog >/dev/null 2>&1 && msgfail || msgpass
+
+echo "Acquire::Changelogs::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/redirectme/pool/@CHANGEPATH@/changelog\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/redirectme/pool/main/a/apt/apt_1.0/changelog' apt.changelog" aptget changelog apt --print-uris
+
+cd downloaded
+testsuccess aptget changelog apt -d
+testsuccess test -s apt.changelog
+rm -f apt.changelog
+
+testsuccess aptget download apt
+testsuccess test -s apt_1.0_all.deb
+rm apt_1.0_all.deb
+cd - >/dev/null
+
+testsuccess aptget install apt -y
+testdpkginstalled 'apt'
+
+cd downloaded
+testfailureequal "E: The method 'https' is explicitly disabled via configuration.
+N: If you meant to use Tor remember to use tor+https instead of https." aptget download apt -o Dir::Bin::Methods::https=false
+testfailure test -e apt_1.0_all.deb
+cd - >/dev/null
+
+# check that downgrades from https to http are not allowed
+webserverconfig 'aptwebserver::support::http' 'true'
+sed -i -e "s#:${APTHTTPPORT}/redirectme#:${APTHTTPSPORT}/downgrademe#" -e 's# http:# https:#' rootdir/etc/apt/sources.list.d/*
+testfailure aptget update --allow-insecure-repositories -o Acquire::https::Timeout=1 -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::https=1
diff --git a/test/integration/test-bug-740843-versioned-up-down-breaks b/test/integration/test-bug-740843-versioned-up-down-breaks
new file mode 100755
index 0000000..69adcef
--- /dev/null
+++ b/test/integration/test-bug-740843-versioned-up-down-breaks
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'foo-driver' 'amd64' '1' 'Depends: libfoo (= 1)
+Recommends: libgl1-foo-glx (= 1)
+Breaks: libgl1-foo-glx (<< 1), libgl1-foo-glx (>> 1)'
+insertinstalledpackage 'libgl1-foo-glx' 'amd64,i386' '1' 'Depends: libfoo (= 1)
+Multi-Arch: same'
+insertinstalledpackage 'libfoo' 'amd64,i386' '1' 'Multi-Arch: same'
+
+buildsimplenativepackage 'foo-driver' 'amd64' '2' 'stable' 'Depends: libfoo (= 2)
+Recommends: libgl1-foo-glx (= 2)
+Breaks: libgl1-foo-glx (<< 2), libgl1-foo-glx (>> 2)'
+buildsimplenativepackage 'libgl1-foo-glx' 'amd64,i386' '2' 'stable' 'Depends: libfoo (= 2)
+Multi-Arch: same'
+buildsimplenativepackage 'libfoo' 'amd64,i386' '2' 'stable' 'Multi-Arch: same'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ foo-driver libfoo libfoo:i386 libgl1-foo-glx libgl1-foo-glx:i386
+5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-foo-glx [1] (2 stable [amd64]) [libgl1-foo-glx:amd64 on libgl1-foo-glx:i386] [libgl1-foo-glx:i386 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:amd64] [libgl1-foo-glx:i386 foo-driver:amd64 ]
+Inst libgl1-foo-glx:i386 [1] (2 stable [i386]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:i386] [foo-driver:amd64 ]
+Inst foo-driver [1] (2 stable [amd64]) []
+Inst libfoo:i386 [1] (2 stable [i386]) [libfoo:amd64 on libfoo:i386] [libfoo:i386 on libfoo:amd64] [libfoo:amd64 ]
+Inst libfoo [1] (2 stable [amd64])
+Conf libgl1-foo-glx (2 stable [amd64])
+Conf libgl1-foo-glx:i386 (2 stable [i386])
+Conf foo-driver (2 stable [amd64])
+Conf libfoo:i386 (2 stable [i386])
+Conf libfoo (2 stable [amd64])' 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ foo-driver libfoo libfoo:i386 libgl1-foo-glx libgl1-foo-glx:i386
+5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-foo-glx [1] (2 stable [amd64]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [libgl1-foo-glx:amd64 on libgl1-foo-glx:i386] [libgl1-foo-glx:i386 on libgl1-foo-glx:amd64] [foo-driver:amd64 libgl1-foo-glx:i386 ]
+Inst libgl1-foo-glx:i386 [1] (2 stable [i386]) [foo-driver:amd64 on libgl1-foo-glx:amd64] [foo-driver:amd64 on libgl1-foo-glx:i386] [foo-driver:amd64 ]
+Inst foo-driver [1] (2 stable [amd64]) []
+Inst libfoo:i386 [1] (2 stable [i386]) [libfoo:amd64 on libfoo:i386] [libfoo:i386 on libfoo:amd64] [libfoo:amd64 ]
+Inst libfoo [1] (2 stable [amd64])
+Conf libgl1-foo-glx (2 stable [amd64])
+Conf libgl1-foo-glx:i386 (2 stable [i386])
+Conf foo-driver (2 stable [amd64])
+Conf libfoo:i386 (2 stable [i386])
+Conf libfoo (2 stable [amd64])' aptget dist-upgrade -s
+
+testsuccess aptget dist-upgrade -y -o Debug::pkgPackageManager=1 -o Debug::pkgOrderList=1
diff --git a/test/integration/test-bug-745036-new-foreign-invalidates-cache b/test/integration/test-bug-745036-new-foreign-invalidates-cache
new file mode 100755
index 0000000..6207bad
--- /dev/null
+++ b/test/integration/test-bug-745036-new-foreign-invalidates-cache
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable,installed' 'cool-foo' 'amd64' '1.0' 'Depends: foo'
+insertpackage 'unstable,installed' 'foo' 'amd64' '1.0' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccess aptget check -s
+
+configarchitecture 'amd64' 'i386'
+testfailureequal 'E: The package cache was built for different architectures: amd64 vs amd64,i386' aptget check -s -o pkgCacheFile::Generate=false
+
+testsuccess aptget check -s
+
+insertinstalledpackage 'awesome-foo' 'i386' '1.0' 'Depends: foo'
+
+testsuccess aptget check -s
+
+testsuccess aptget update --no-download
+
+testsuccess aptget check -s
diff --git a/test/integration/test-bug-745046-candidate-propagation-fails b/test/integration/test-bug-745046-candidate-propagation-fails
new file mode 100755
index 0000000..64aaa6a
--- /dev/null
+++ b/test/integration/test-bug-745046-candidate-propagation-fails
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'gedit' 'amd64' '1'
+
+insertpackage 'unstable' 'gedit' 'amd64' '1'
+insertpackage 'experimental' 'gedit' 'amd64' '2' 'Depends: common (>= 2)'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [amd64]) for 'gedit'
+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:
+ gedit : Depends: common (>= 2) but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install gedit/experimental -sq=0
+
+insertinstalledpackage 'common' 'amd64' '2'
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [amd64]) for 'gedit'
+The following packages will be upgraded:
+ gedit
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst gedit [1] (2 experimental [amd64])
+Conf gedit (2 experimental [amd64])" aptget install gedit/experimental -sq=0
diff --git a/test/integration/test-bug-747261-arch-specific-conflicts b/test/integration/test-bug-747261-arch-specific-conflicts
new file mode 100755
index 0000000..e137043
--- /dev/null
+++ b/test/integration/test-bug-747261-arch-specific-conflicts
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'sparc' 'armel'
+
+insertinstalledpackage 'foobar' 'armel' '1'
+msgtest 'Check that dpkg supports' 'arch-specific dependencies'
+if ! dpkgcheckbuilddeps -d 'foobar:armel' /dev/null 2>/dev/null >/dev/null; then
+ dpkgcheckbuilddeps -d 'foobar:armel' /dev/null || true
+ msgskip
+ exit 0
+else
+ msgpass
+fi
+
+buildsimplenativepackage 'libc6' 'amd64,sparc,armel' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'libc6-i386' 'amd64' '1' 'stable' 'Conflicts: libc6:sparc'
+
+setupaptarchive
+
+testsuccess aptget install 'libc6:amd64' 'libc6:sparc' -y
+testdpkginstalled 'libc6:amd64' 'libc6:sparc'
+testdpkgnotinstalled 'libc6-i386' 'libc6:armel'
+
+testsuccess aptget install libc6-i386 -y
+testdpkginstalled 'libc6:amd64' 'libc6-i386'
+testdpkgnotinstalled 'libc6:sparc' 'libc6:armel'
+
+testsuccess aptget install libc6:armel -y
+testdpkginstalled 'libc6:amd64' 'libc6:armel' 'libc6-i386'
+testdpkgnotinstalled 'libc6:sparc'
+
+testsuccess aptget install libc6:sparc -y
+testdpkginstalled 'libc6:amd64' 'libc6:armel' 'libc6:sparc'
+testdpkgnotinstalled 'libc6-i386'
+
+testsuccess aptget purge 'libc6:*' 'libc6-i386' -y
+testdpkgnotinstalled 'libc6:amd64' 'libc6:armel' 'libc6:sparc' 'libc6-i386'
+
+# check that (the actually simpler) single arch is fine, too
+configarchitecture 'amd64'
+testfailure aptget install libc6:sparc -s
+testsuccess aptget install libc6 libc6-i386 -y
diff --git a/test/integration/test-bug-753297-upgradable b/test/integration/test-bug-753297-upgradable
new file mode 100755
index 0000000..f33a659
--- /dev/null
+++ b/test/integration/test-bug-753297-upgradable
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+cat > rootdir/etc/apt/preferences <<EOF
+Package: *
+Pin: release testing
+Pin-Priority: 600
+
+Package: *
+Pin: release unstable
+Pin-Priority: 1
+EOF
+
+insertpackage 'testing,installed' 'foo' 'all' '1'
+insertpackage 'testing-updates' 'foo' 'all' '2'
+insertpackage 'unstable' 'foo' 'all' '3'
+
+insertinstalledpackage 'bar' 'all' '1'
+insertpackage 'testing' 'bar' 'all' '2'
+
+setupaptarchive
+
+testsuccessequal "Listing...
+bar/testing 2 all [upgradable from: 1]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradable
+
+testsuccessequal "Listing...
+bar/testing 2 all [upgradable from: 1]
+foo/testing,now 1 all [installed]" apt list
diff --git a/test/integration/test-bug-758153-versioned-provides-support b/test/integration/test-bug-758153-versioned-provides-support
new file mode 100755
index 0000000..7bf9d76
--- /dev/null
+++ b/test/integration/test-bug-758153-versioned-provides-support
@@ -0,0 +1,413 @@
+#!/bin/sh
+set -e
+
+# dpkg implements versioned provides in commit 5bb02fe80e9f40dcad9703a72f67cf615ff217b5
+# but previous versions seem to allow parsing, working and ignoring it.
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd'
+insertinstalledpackage 'webserver' 'all' '1' 'Provides: httpd'
+
+insertpackage 'unstable' 'webapp' 'all' '2' 'Depends: httpd (>= 2)'
+insertpackage 'unstable' 'webserver' 'amd64' '2' 'Provides: httpd (= 2)'
+insertpackage 'unstable' 'foreign-webserver' 'i386' '2' 'Multi-Arch: foreign
+Provides: httpd (= 2)'
+
+insertpackage 'experimental' 'webapp' 'all' '3' 'Depends: httpd (>= 1.5)'
+insertpackage 'experimental' 'webserver' 'amd64' '3' 'Provides: httpd (= 3)'
+
+insertpackage 'experimental' 'foreign-webserver' 'i386' '4' 'Multi-Arch: foreign
+Provides: httpd (= 4)'
+insertpackage 'experimental' 'cool-webapp' 'all' '4' 'Depends: httpd (>= 4)'
+
+# arch-qualified provides, see #777071
+insertpackage 'unstable' 'foo' 'all' '1' 'Provides: bar:i386'
+insertpackage 'unstable' 'baz' 'i386,amd64' '1' 'Depends: bar'
+insertpackage 'experimental' 'baz' 'i386,amd64' '2' 'Depends: bar:i386'
+insertpackage 'experimental' 'baz-broken' 'i386' '2' 'Depends: bar:amd64'
+
+insertpackage 'unstable' 'next' 'amd64' '1' 'Multi-Arch: foreign
+Provides: next (= 2)'
+insertpackage 'unstable' 'needsrealnext' 'amd64,i386' '2' 'Depends: next (>= 2)'
+
+insertpackage 'unstable' 'virtualnext2' 'amd64' '1' 'Multi-Arch: foreign
+Provides: next2 (= 2)'
+insertpackage 'unstable' 'needsnext2' 'amd64,i386' '2' 'Depends: next2 (>= 2)'
+
+insertpackage 'unstable' 'virtualnext3' 'amd64' '1' 'Multi-Arch: no
+Provides: next3 (= 2)'
+insertpackage 'unstable' 'needsnext3' 'amd64,i386' '2' 'Depends: next3 (>= 2)'
+
+insertpackage 'unstable' 'selfprov' 'amd64' '2' 'Provides: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov1' 'amd64' '1' 'Depends: selfprov (= 1)'
+insertpackage 'unstable' 'needsselfprov2' 'amd64' '1' 'Depends: selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov12' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2)'
+insertpackage 'unstable' 'needsselfprov123' 'amd64' '1' 'Depends: selfprov (= 1), selfprov (= 2), selfprov (= 3)'
+
+setupaptarchive
+
+SOMEPACKAGESCOULDNOT='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:'
+
+for binary in 'aptget' 'apt'; do
+ for method in 'upgrade' 'dist-upgrade'; do
+ for solver in 'internal' 'apt'; do
+ if [ "$solver" = 'apt' ]; then
+ HEADER='Execute external solver...'
+ else
+ HEADER='Calculating upgrade...'
+ fi
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (2 unstable [all])" $binary $method -s --solver $solver
+ done
+ done
+done
+
+for solver in 'internal' 'apt'; do
+ msgmsg 'Testing with solver' "$solver"
+ HEADER_PRE='Reading package lists...
+Building dependency tree...'
+ HEADER_POST='Execute external solver...'
+ HEADER="${HEADER_PRE}"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (2 unstable [all])" aptget install webapp webserver -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (2 unstable [amd64])
+Inst webapp [1] (3 experimental [all])
+Conf webserver (2 unstable [amd64])
+Conf webapp (3 experimental [all])" aptget install webapp=3 webserver -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following packages will be upgraded:
+ webapp webserver
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst webserver [1] (3 experimental [amd64])
+Inst webapp [1] (2 unstable [all])
+Conf webserver (3 experimental [amd64])
+Conf webapp (2 unstable [all])" aptget install webapp webserver=3 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (2 unstable [i386])
+Inst webapp [1] (2 unstable [all])
+Conf foreign-webserver:i386 (2 unstable [i386])
+Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (2 unstable [i386])
+Inst webapp [1] (3 experimental [all])
+Conf foreign-webserver:i386 (2 unstable [i386])
+Conf webapp (3 experimental [all])" aptget install webapp=3 foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ foreign-webserver:i386
+The following packages will be upgraded:
+ webapp
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst foreign-webserver:i386 (4 experimental [i386])
+Inst webapp [1] (2 unstable [all])
+Conf foreign-webserver:i386 (4 experimental [i386])
+Conf webapp (2 unstable [all])" aptget install webapp foreign-webserver:i386=4 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ WEBAPP_ERR="$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ cool-webapp : Depends: httpd (>= 4)
+
+$SOMEPACKAGESCOULDNOT
+ cool-webapp : Depends: httpd (>= 4)
+E: External solver failed with: The following packages have unmet dependencies:"
+ else
+ WEBAPP_ERR="$HEADER
+$SOMEPACKAGESCOULDNOT
+ cool-webapp : Depends: httpd (>= 4)
+E: Unable to correct problems, you have held broken packages."
+ fi
+ testfailureequal "$WEBAPP_ERR" aptget install cool-webapp -s --solver $solver
+ testfailureequal "$WEBAPP_ERR" aptget install cool-webapp foreign-webserver:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ cool-webapp foreign-webserver:i386
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foreign-webserver:i386 (4 experimental [i386])
+Inst cool-webapp (4 experimental [all])
+Conf foreign-webserver:i386 (4 experimental [i386])
+Conf cool-webapp (4 experimental [all])" aptget install cool-webapp foreign-webserver:i386=4 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz:i386 (1 unstable [i386])
+Conf foo (1 unstable [all])
+Conf baz:i386 (1 unstable [i386])" aptget install baz:i386 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ baz : Depends: bar but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ baz : Depends: bar but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install baz:amd64 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ baz : Depends: bar but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install baz:amd64 -s --solver $solver
+ fi
+
+ HEADER="${HEADER_PRE}
+Selected version '2' (experimental [amd64]) for 'baz'"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz (2 experimental [amd64])
+Conf foo (1 unstable [all])
+Conf baz (2 experimental [amd64])" aptget install baz/experimental -s --solver $solver
+
+ HEADER="${HEADER_PRE}
+Selected version '2' (experimental [i386]) for 'baz:i386'"
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER}
+${HEADER_POST}"
+ fi
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ baz:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo (1 unstable [all])
+Inst baz:i386 (2 experimental [i386])
+Conf foo (1 unstable [all])
+Conf baz:i386 (2 experimental [i386])" aptget install baz:i386/experimental -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ HEADER="${HEADER_PRE}
+${HEADER_POST}"
+ else
+ HEADER="${HEADER_PRE}"
+ fi
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install baz-broken -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ baz-broken:i386 : Depends: bar:amd64 but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install baz-broken -s --solver $solver
+ fi
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ next
+The following NEW packages will be installed:
+ needsrealnext next
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst next (1 unstable [amd64])
+Inst needsrealnext (2 unstable [amd64])
+Conf next (1 unstable [amd64])
+Conf needsrealnext (2 unstable [amd64])" aptget install needsrealnext -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ next
+The following NEW packages will be installed:
+ needsrealnext:i386 next
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst next (1 unstable [amd64])
+Inst needsrealnext:i386 (2 unstable [i386])
+Conf next (1 unstable [amd64])
+Conf needsrealnext:i386 (2 unstable [i386])" aptget install needsrealnext:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext2
+The following NEW packages will be installed:
+ needsnext2 virtualnext2
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext2 (1 unstable [amd64])
+Inst needsnext2 (2 unstable [amd64])
+Conf virtualnext2 (1 unstable [amd64])
+Conf needsnext2 (2 unstable [amd64])" aptget install needsnext2 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext2
+The following NEW packages will be installed:
+ needsnext2:i386 virtualnext2
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext2 (1 unstable [amd64])
+Inst needsnext2:i386 (2 unstable [i386])
+Conf virtualnext2 (1 unstable [amd64])
+Conf needsnext2:i386 (2 unstable [i386])" aptget install needsnext2:i386 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ virtualnext3
+The following NEW packages will be installed:
+ needsnext3 virtualnext3
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst virtualnext3 (1 unstable [amd64])
+Inst needsnext3 (2 unstable [amd64])
+Conf virtualnext3 (1 unstable [amd64])
+Conf needsnext3 (2 unstable [amd64])" aptget install needsnext3 -s --solver $solver
+
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+
+$SOMEPACKAGESCOULDNOT
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+E: External solver failed with: The following packages have unmet dependencies:" aptget install needsnext3:i386 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ needsnext3:i386 : Depends: next3:i386 (>= 2) but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install needsnext3:i386 -s --solver $solver
+ fi
+
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ selfprov
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Conf selfprov (2 unstable [amd64])" apt install selfprov -s --solver $solver
+ if [ "$solver" = 'apt' ]; then
+ HEADER_POST_NL="
+$HEADER_POST"
+ else
+ HEADER_POST_NL=''
+ fi
+ testsuccessequal "$HEADER_PRE
+Selected version '2' (unstable [amd64]) for 'selfprov'$HEADER_POST_NL
+The following NEW packages will be installed:
+ selfprov
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Conf selfprov (2 unstable [amd64])" apt install selfprov=1 -s --solver $solver
+ testsuccessequal "$HEADER
+The following NEW packages will be installed:
+ selfprov
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Conf selfprov (2 unstable [amd64])" apt install selfprov=2 -s --solver $solver
+
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov1 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov1 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov1 (1 unstable [amd64])" aptget install needsselfprov1 -s --solver $solver
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov2 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov2 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov2 (1 unstable [amd64])" aptget install needsselfprov2 -s --solver $solver
+ testsuccessequal "$HEADER
+The following additional packages will be installed:
+ selfprov
+The following NEW packages will be installed:
+ needsselfprov12 selfprov
+0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst selfprov (2 unstable [amd64])
+Inst needsselfprov12 (1 unstable [amd64])
+Conf selfprov (2 unstable [amd64])
+Conf needsselfprov12 (1 unstable [amd64])" aptget install needsselfprov12 -s --solver $solver
+ if [ "$solver" = 'apt' ]; then
+ testfailureequal "$HEADER
+The solver encountered an error of type: ERR_UNSOLVABLE
+The following information might help you to understand what is wrong:
+The following packages have unmet dependencies:
+ needsselfprov123 : Depends: selfprov (= 3)
+
+$SOMEPACKAGESCOULDNOT
+ needsselfprov123 : Depends: selfprov (= 1)
+ Depends: selfprov (= 2)
+ Depends: selfprov (= 3)
+E: External solver failed with: The following packages have unmet dependencies:" aptget install needsselfprov123 -s --solver $solver
+ else
+ testfailureequal "$HEADER
+$SOMEPACKAGESCOULDNOT
+ needsselfprov123 : Depends: selfprov (= 3)
+E: Unable to correct problems, you have held broken packages." aptget install needsselfprov123 -s --solver $solver
+ fi
+done
diff --git a/test/integration/test-bug-762160-relpath b/test/integration/test-bug-762160-relpath
new file mode 100755
index 0000000..6a800aa
--- /dev/null
+++ b/test/integration/test-bug-762160-relpath
@@ -0,0 +1,17 @@
+#!/bin/sh
+# regression test for bug #762160 where apt-get update fails when a
+# relative directory is given
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive
+changetowebserver
+
+testsuccess aptget update -o Dir=./rootdir
+testsuccess aptget update -o Dir=./rootdir
diff --git a/test/integration/test-bug-767891-force-essential-important b/test/integration/test-bug-767891-force-essential-important
new file mode 100755
index 0000000..7a23de5
--- /dev/null
+++ b/test/integration/test-bug-767891-force-essential-important
@@ -0,0 +1,100 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'apt' 'amd64' '1'
+insertinstalledpackage 'foo' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'bar' 'amd64' '1' 'Provides: foo'
+
+insertpackage 'unstable' 'foo2' 'amd64,i386' '1' 'Multi-Arch: same'
+
+setupaptarchive
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential=''
+
+msgmsg 'foo:i386 got the Important flag'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential='foo'
+
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceEssential::='foo'
+
+msgmsg 'essentials only from native'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ foo2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo2 (1 unstable [amd64])
+Conf foo2 (1 unstable [amd64])' apt full-upgrade -s -o pkgCacheGen::ForceEssential::='foo2'
+
+msgmsg 'important only effects installed'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ apt* bar* foo* foo:i386*
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ apt foo foo:i386
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Purg apt [1]
+Purg bar [1]
+Purg foo [1]
+Purg foo:i386 [1]' apt purge apt foo foo:i386 bar -s -o pkgCacheGen::ForceImportant::='foo'
+rm -f rootdir/var/cache/apt/*.bin
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' apt full-upgrade -s -o pkgCacheGen::ForceImportant::='foo2'
diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
new file mode 100755
index 0000000..ce2c193
--- /dev/null
+++ b/test/integration/test-bug-769609-triggers-still-pending-after-run
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+msgtest 'Check if installed dpkg supports' 'noawait trigger'
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.16.1'; then
+ msgpass
+else
+ msgskip 'dpkg version too old'
+ exit 0
+fi
+configdpkgnoopchroot
+
+buildtriggerpackages() {
+ local TYPE="$1"
+ setupsimplenativepackage "triggerable-$TYPE" 'all' '1.0' 'unstable' "Depends: trigdepends-$TYPE"
+ BUILDDIR="incoming/triggerable-${TYPE}-1.0"
+ cat >"${BUILDDIR}/debian/postinst" <<EOF
+#!/bin/sh
+if [ "\$1" = 'triggered' ]; then
+ echo "TRIGGER IS RUNNING"
+fi
+EOF
+ echo "$TYPE /usr/share/doc" > "${BUILDDIR}/debian/triggers"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+ buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
+}
+
+#buildtriggerpackages 'interest'
+buildtriggerpackages 'interest-noawait'
+buildsimplenativepackage "trigstuff" 'all' '1.0' 'unstable'
+
+setupaptarchive
+
+runtests() {
+ local TYPE="$1"
+ msgmsg 'Working with trigger type' "$TYPE"
+ testsuccess aptget install triggerable-$TYPE -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+
+ testsuccess aptget install trigdepends-$TYPE -y --reinstall
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+
+ testsuccess aptget install trigstuff -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE trigstuff
+
+ testsuccess aptget purge trigstuff -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testsuccess grep '^REWRITE ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
+ testdpkgnotinstalled trigstuff
+
+ testsuccess aptget purge trigdepends-$TYPE -y
+ cp rootdir/tmp/testsuccess.output terminal.output
+ testfailure grep '^REWRITE ' terminal.output
+ testfailure grep 'TRIGGER IS RUNNING' terminal.output
+ testdpkgnotinstalled triggerable-$TYPE trigdepends-$TYPE
+}
+#runtests 'interest'
+runtests 'interest-noawait'
diff --git a/test/integration/test-bug-770291-reinstall b/test/integration/test-bug-770291-reinstall
new file mode 100755
index 0000000..a1caf25
--- /dev/null
+++ b/test/integration/test-bug-770291-reinstall
@@ -0,0 +1,98 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable,installed' 'libc6' 'i386' '1'
+insertpackage 'unstable,installed' 'libselinux1' 'i386' '1'
+
+cp rootdir/var/lib/dpkg/status dpkg.status
+
+insertpackage 'unstable,installed' 'init' 'i386' '1' 'Depends: systemd-sysv
+Essential: yes'
+insertpackage 'unstable,installed' 'systemd-sysv' 'i386' '215-5+b1' 'Depends: systemd (= 215-5+b1)
+Pre-Depends: systemd'
+# fun fact: we need these two pre-depends to get systemd ordered before systemd-sysv as
+# many pre-depends mean: do early (as they are a pain, so get them out of the way early)
+insertpackage 'unstable,installed' 'systemd' 'i386' '215-5+b1' 'Pre-Depends: libc6, libselinux1'
+
+# depends loop
+insertpackage 'unstable,installed' 'dependsa' 'i386' '1' 'Depends: dependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'dependsb' 'i386' '1' 'Depends: dependsa
+Essential: yes'
+
+# pre-depends loop
+insertpackage 'unstable,installed' 'predependsa' 'i386' '1' 'Pre-Depends: predependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'predependsb' 'i386' '1' 'Pre-Depends: predependsa
+Essential: yes'
+
+# pre-depends-to-depends loop
+insertpackage 'unstable,installed' 'predependsdependsa' 'i386' '1' 'Pre-Depends: predependsdependsb
+Essential: yes'
+insertpackage 'unstable,installed' 'predependsdependsb' 'i386' '1' 'Depends: predependsdependsa
+Essential: yes'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst systemd [215-5+b1] (215-5+b1 unstable [i386])
+Conf systemd (215-5+b1 unstable [i386])
+Inst systemd-sysv [215-5+b1] (215-5+b1 unstable [i386])
+Conf systemd-sysv (215-5+b1 unstable [i386])' aptget install --reinstall systemd systemd-sysv -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst dependsa [1] (1 unstable [i386])
+Inst dependsb [1] (1 unstable [i386])
+Conf dependsb (1 unstable [i386])
+Conf dependsa (1 unstable [i386])' aptget install --reinstall dependsa dependsb -s
+
+# there is a chance dpkg can actually do these, BUT this depends on the maintainerscripts (not) present
+# which is very risky to depend on (and apt doesn't know about that anyhow).
+testfailure aptget install --reinstall predependsa predependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Couldn't configure predependsa:i386, probably a dependency cycle.$" rootdir/tmp/testfailure.output
+
+# FIXME: the error message is a catch all here, not like the one above
+testfailure aptget install --reinstall predependsdependsa predependsdependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Could not configure 'predependsdependsb:i386'. $" rootdir/tmp/testfailure.output
+
+
+msgmsg 'While we are at it, lets try these loops without reinstall as well'
+cp dpkg.status rootdir/var/lib/dpkg/status
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ systemd systemd-sysv
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst systemd (215-5+b1 unstable [i386])
+Conf systemd (215-5+b1 unstable [i386])
+Inst systemd-sysv (215-5+b1 unstable [i386])
+Conf systemd-sysv (215-5+b1 unstable [i386])' aptget install systemd systemd-sysv -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ dependsa dependsb
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst dependsa (1 unstable [i386]) []
+Inst dependsb (1 unstable [i386])
+Conf dependsb (1 unstable [i386])
+Conf dependsa (1 unstable [i386])' aptget install dependsa dependsb -s
+
+# there is a chance dpkg can actually do these, BUT this depends on the maintainerscripts (not) present
+# which is very risky to depend on (and apt doesn't know about that anyhow).
+testfailure aptget install predependsa predependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Couldn't configure predependsa:i386, probably a dependency cycle.$" rootdir/tmp/testfailure.output
+
+# FIXME: the error message is a catch all here, not like the one above
+testfailure aptget install predependsdependsa predependsdependsb -s -o Debug::pkgPackageManager=1
+testsuccess grep "^E: Could not configure 'predependsdependsb:i386'. $" rootdir/tmp/testfailure.output
diff --git a/test/integration/test-bug-778375-server-has-no-reason-phrase b/test/integration/test-bug-778375-server-has-no-reason-phrase
new file mode 100755
index 0000000..e04f485
--- /dev/null
+++ b/test/integration/test-bug-778375-server-has-no-reason-phrase
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+echo 'found' > aptarchive/working
+changetohttpswebserver -o 'aptwebserver::redirect::replace::/redirectme/=/' \
+ -o 'aptwebserver::httpcode::200=200' -o 'aptwebserver::httpcode::404=404' \
+ -o 'aptwebserver::httpcode::301=301'
+webserverconfig 'aptwebserver::empty-response-header::' 'foobar'
+webserverconfig 'aptwebserver::response-header::HTTP-Trigger-Field' 'bug'
+webserverconfig 'aptwebserver::response-header::Httputter-Trigger-Field' 'bug'
+
+testdownload() {
+ rm -f downfile
+ msgtest "download of a $1 via" "${3%%:*}"
+ $2 --nomsg downloadfile "$3" downfile
+
+ cp rootdir/tmp/testsuccess.output download.log
+ #looking for "HTTP server doesn't give Reason-Phrase for 200"
+ testsuccess grep 'give Reason-Phrase for' download.log
+
+ if [ "$2" = 'testsuccess' ]; then
+ testfileequal downfile 'found'
+ else
+ testfailure test -e downfile
+ fi
+}
+
+runtest() {
+ testdownload 'file works' 'testsuccess' "$1/working"
+ testdownload 'file via redirect works' 'testsuccess' "$1/redirectme/working"
+
+ testdownload 'non-existent file fails' 'testfailure' "$1/failing"
+ testdownload 'non-existent file via redirect fails' 'testfailure' "$1/redirectme/failing"
+}
+
+runtest "http://localhost:${APTHTTPPORT}"
+runtest "https://localhost:${APTHTTPSPORT}"
diff --git a/test/integration/test-bug-782777-single-arch-weirdness b/test/integration/test-bug-782777-single-arch-weirdness
new file mode 100755
index 0000000..695d053
--- /dev/null
+++ b/test/integration/test-bug-782777-single-arch-weirdness
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Ensure that the order in which packages are in the binary cache
+# does not effect if they can be found or not
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'abar' 'i386' '1'
+insertpackage 'unstable' 'foobar' 'i386' '1' 'Depends: abar:amd64, zfoo:amd64'
+insertpackage 'unstable' 'zfoo' 'i386' '1'
+
+setupaptarchive
+
+testrun() {
+ rm -f rootdir/var/lib/apt/extended_states
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar zfoo -s
+
+ testequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ abar zfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst abar (1 unstable [i386])
+Inst zfoo (1 unstable [i386])
+Conf abar (1 unstable [i386])
+Conf zfoo (1 unstable [i386])' aptget install abar:i386 zfoo:i386 -s
+
+ testequal "Reading package lists...
+Building dependency tree...
+Package abar:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+Package zfoo:amd64 is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+E: Package 'abar:amd64' has no installation candidate
+E: Package 'zfoo:amd64' has no installation candidate" aptget install abar:amd64 zfoo:amd64 -s
+
+ insertinstalledpackage 'abar' 'i386' '1'
+ insertinstalledpackage 'zfoo' 'i386' '1'
+
+ testequal 'abar
+zfoo' aptmark showmanual abar zfoo
+ testequal 'abar set to automatically installed.
+zfoo set to automatically installed.' aptmark auto abar zfoo
+ testempty aptmark showmanual abar zfoo
+ testequal 'abar
+zfoo' aptmark showauto abar zfoo
+
+ rm -f rootdir/var/lib/dpkg/status
+}
+
+msgmsg 'Single-Arch testrun'
+testrun
+msgmsg 'Multi-Arch testrun'
+configarchitecture 'i386' 'amd64'
+testrun
diff --git a/test/integration/test-bug-796070-downgrade-realpkg b/test/integration/test-bug-796070-downgrade-realpkg
new file mode 100755
index 0000000..1013247
--- /dev/null
+++ b/test/integration/test-bug-796070-downgrade-realpkg
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+buildsimplenativepackage 'apt' 'all' '1.0.10.1' 'stable' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
+buildsimplenativepackage 'libapt-pkg4.16' 'all' '1.0.10.1' 'stable' 'Breaks: apt (<< 0.9.4~), libapt-inst1.5 (<< 0.9.9~)'
+buildsimplenativepackage 'libapt-pkg5.0' 'all' '1.1~exp9' 'unstable' 'Breaks: apt (<< 1.1~exp4), libapt-inst1.5 (<< 0.9.9~)'
+buildsimplenativepackage 'apt' 'all' '1.1~exp9' 'unstable' 'Depends: libapt-pkg5.0'
+
+setupaptarchive
+
+# Check with the APT name, aka essential
+testsuccess aptget install apt -t stable -y
+testsuccess aptget dist-upgrade -y
+
+testsuccess aptget install apt/stable -y --allow-downgrades -o Debug::pkgPackageManager=1 #-o Debug::pkgDpkgPM=1
+testdpkginstalled apt libapt-pkg4.16
+testdpkgnotinstalled libapt-pkg5.0
diff --git a/test/integration/test-bug-796070-downgrade-simulate b/test/integration/test-bug-796070-downgrade-simulate
new file mode 100755
index 0000000..61ecc87
--- /dev/null
+++ b/test/integration/test-bug-796070-downgrade-simulate
@@ -0,0 +1,67 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'apt' 'all' '1.0.10.1' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)'
+insertinstalledpackage 'libapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: apt (<< 0.9.4~), libapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'libapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: apt (<< 1.1~exp4), libapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'apt' 'all' '1.1~exp9' 'Depends: libapt-pkg5.0'
+
+insertpackage 'unstable' 'napt' 'all' '1.0.10.1' 'Depends: nlibapt-pkg4.16 (>= 1.0.10.1)'
+insertinstalledpackage 'nlibapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: napt (<< 0.9.4~), nlibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'nlibapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: napt (<< 1.1~exp4), nlibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'napt' 'all' '1.1~exp9' 'Depends: nlibapt-pkg5.0'
+
+insertpackage 'unstable' 'eapt' 'all' '1.0.10.1' 'Depends: elibapt-pkg4.16 (>= 1.0.10.1)
+Essential: yes'
+insertinstalledpackage 'elibapt-pkg4.16' 'all' '1.0.10.1' 'Breaks: eapt (<< 0.9.4~), elibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'elibapt-pkg5.0' 'all' '1.1~exp9' 'Breaks: eapt (<< 1.1~exp4), elibapt-inst1.5 (<< 0.9.9~)'
+insertinstalledpackage 'eapt' 'all' '1.1~exp9' 'Depends: elibapt-pkg5.0
+Essential: yes'
+
+
+setupaptarchive
+
+
+# Check with a normal package
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ nlibapt-pkg5.0
+The following packages will be DOWNGRADED:
+ napt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Remv nlibapt-pkg5.0 [1.1~exp9] [napt:i386 ]
+Inst napt [1.1~exp9] (1.0.10.1 unstable [all])
+Conf napt (1.0.10.1 unstable [all])' apt install -s napt=1.0.10.1
+
+
+# Check with Essential
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ elibapt-pkg5.0
+The following packages will be DOWNGRADED:
+ eapt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Inst eapt [1.1~exp9] (1.0.10.1 unstable [all]) [elibapt-pkg5.0:i386 on eapt:i386] [elibapt-pkg5.0:i386 ]
+Remv elibapt-pkg5.0 [1.1~exp9]
+Conf eapt (1.0.10.1 unstable [all])' apt install -s eapt=1.0.10.1
+
+
+# Check with the APT name, aka essential
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libapt-pkg5.0
+The following packages will be DOWNGRADED:
+ apt
+0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 0 not upgraded.
+Inst apt [1.1~exp9] (1.0.10.1 unstable [all]) [libapt-pkg5.0:i386 on apt:i386] [libapt-pkg5.0:i386 ]
+Remv libapt-pkg5.0 [1.1~exp9]
+Conf apt (1.0.10.1 unstable [all])' apt install -s apt=1.0.10.1
diff --git a/test/integration/test-bug-807012-mixed-case-package-names b/test/integration/test-bug-807012-mixed-case-package-names
new file mode 100755
index 0000000..4f003ab
--- /dev/null
+++ b/test/integration/test-bug-807012-mixed-case-package-names
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+TMPDIR=$(readlink -f .)
+
+insertinstalledpackage 'worldofgoo' 'all' '1'
+insertpackage 'unstable' 'WorldOfGoo' 'all' '1'
+
+setupaptarchive
+
+testsuccessequal "worldofgoo:
+ Installed: 1
+ Candidate: 1
+ Version table:
+ *** 1 500
+ 500 file:${TMPDIR}/aptarchive unstable/main all Packages
+ 100 ${TMPDIR}/rootdir/var/lib/dpkg/status" \
+ aptcache policy worldofgoo
diff --git a/test/integration/test-bug-814139-pickup-of-different-cache-states b/test/integration/test-bug-814139-pickup-of-different-cache-states
new file mode 100755
index 0000000..dffeb73
--- /dev/null
+++ b/test/integration/test-bug-814139-pickup-of-different-cache-states
@@ -0,0 +1,60 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'build-essential' 'amd64' '1'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable' 'Build-Depends: bar'
+buildsimplenativepackage 'bar' 'all' '1' 'stable'
+
+setupaptarchive
+
+cp rootdir/var/lib/dpkg/status status.backup
+
+testrun() {
+ cp status.backup rootdir/var/lib/dpkg/status
+ cleanup
+ testdpkgnotinstalled 'bar'
+ testsuccess aptget build-dep foo -y
+ testdpkginstalled 'bar'
+ cleanup
+ cd downloaded
+ testsuccess aptget source foo
+ testsuccess test -s foo_1.tar.* -a -s foo_1.dsc
+ rm foo_1.tar.* foo_1.dsc
+ testsuccess test -d foo-1
+ rm -rf foo-1
+ cd ..
+ cleanup
+ testsuccess aptget install foo -y
+}
+
+msgmsg 'Caches fully up-to-date'
+cleanup() {
+ rm -f rootdir/var/cache/apt/*.bin
+ testsuccess aptcache gencaches
+}
+testrun
+
+msgmsg 'pkgcache.bin is missing'
+cleanup() {
+ rm -f rootdir/var/cache/apt/*.bin
+ testsuccess aptcache gencaches
+ rm rootdir/var/cache/apt/pkgcache.bin
+}
+testrun
+
+msgmsg 'Caches are not writeable'
+rm rootdir/var/cache/apt/*.bin
+addtrap 'prefix' 'chmod 755 rootdir/var/cache/apt;'
+chmod 555 rootdir/var/cache/apt
+testsuccess aptcache gencaches
+cleanup() {
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt" '%a' '=' '555'
+}
+testrun
diff --git a/test/integration/test-bug-818628-unreadable-source b/test/integration/test-bug-818628-unreadable-source
new file mode 100755
index 0000000..e7ad26d
--- /dev/null
+++ b/test/integration/test-bug-818628-unreadable-source
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+cat rootdir/etc/apt/apt.conf.d/01multiarch.conf >> $(getaptconfig)
+
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'Tests for unreadable files do not work as root'
+ exit 0
+fi
+
+insertinstalledpackage 'foo' 'amd64' '1'
+insertpackage 'unstable' 'foo' 'amd64' '2'
+
+setupaptarchive --no-update
+
+touch rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
+touch rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.sources
+touch rootdir/etc/apt/apt.conf.d/unreadable.conf
+touch rootdir/etc/apt/preferences.d/unreadable.pref
+
+addtrap 'prefix' "chmod -R +r '$(escape_shell "$TMPWORKINGDIRECTORY")/rootdir/etc/apt';"
+chmod -r rootdir/etc/apt/trusted.gpg.d
+testfailure apt update
+chmod +r rootdir/etc/apt/trusted.gpg.d
+testsuccess apt update
+testsuccess apt policy foo
+testsuccess apt search foo
+testsuccessequal "Listing...
+foo/unstable 2 amd64 [upgradable from: 1]
+N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradable
+
+runthemall() {
+ local ERR="$1"
+ local ERRNOTICEVER="$1${2-
+N: There is 1 additional version. Please use the '-a' switch to see it}"
+ local ERRNOTICEREC="$1${2-
+N: There is 1 additional record. Please use the '-a' switch to see it}"
+ testwarningmsg "$ERR" aptcache policy
+ testwarningmsg "$ERR" aptcache policy foo
+ testwarningmsg "$ERR" aptcache depends foo
+ testwarningmsg "$ERR" aptcache rdepends foo
+ testwarningmsg "$ERR" aptcache search foo
+ testwarningmsg "$ERR" apt policy
+ testwarningmsg "$ERR" apt policy foo
+ testwarningmsg "$ERR" apt depends foo
+ testwarningmsg "$ERR" apt rdepends foo
+ testwarningmsg "$ERR" apt search foo
+ testwarningmsg "$ERRNOTICEVER" apt list --upgradable
+ testwarningmsg "$ERRNOTICEREC" apt show foo
+ testwarningmsg "$ERRNOTICEREC" aptcache show foo --no-all-versions
+ testwarningmsg "$ERR" aptmark auto foo
+ testwarningmsg "$ERR" aptmark manual foo
+ testwarningmsg "$ERR" aptmark auto foo
+}
+echo 'Apt::Cmd::Disable-Script-Warning "true";' >> aptconfig.conf
+
+msgmsg 'Unreadable one-line-style sources file'
+chmod -r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
+runthemall "W: Unable to read $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list - open (13: Permission denied)"
+chmod +r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
+
+msgmsg 'Unreadable deb822-style sources file'
+chmod -r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.sources
+runthemall "W: Unable to read $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.sources - open (13: Permission denied)"
+chmod +r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.sources
+
+msgmsg 'Unreadable config file'
+chmod -r rootdir/etc/apt/apt.conf.d/unreadable.conf
+runthemall "W: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/unreadable.conf - open (13: Permission denied)"
+chmod +r rootdir/etc/apt/apt.conf.d/unreadable.conf
+
+msgmsg 'Unreadable preferences file'
+chmod -r rootdir/etc/apt/preferences.d/unreadable.pref
+runthemall "W: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/unreadable.pref - open (13: Permission denied)"
+chmod +r rootdir/etc/apt/preferences.d/unreadable.pref
+
+msgmsg 'Unreadable sources directory'
+chmod -r rootdir/etc/apt/sources.list.d
+runthemall "W: Unable to read $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/ - opendir (13: Permission denied)" ""
+chmod +r rootdir/etc/apt/sources.list.d
+
+msgmsg 'Unreadable config directory'
+chmod -r rootdir/etc/apt/apt.conf.d
+runthemall "W: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ - opendir (13: Permission denied)"
+chmod +r rootdir/etc/apt/apt.conf.d
+
+msgmsg 'Unreadable preferences directory'
+chmod -r rootdir/etc/apt/preferences.d
+runthemall "W: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/ - opendir (13: Permission denied)"
+chmod +r rootdir/etc/apt/preferences.d
diff --git a/test/integration/test-bug-829651 b/test/integration/test-bug-829651
new file mode 100755
index 0000000..976bb04
--- /dev/null
+++ b/test/integration/test-bug-829651
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+if [ "$(id -u)" = '0' ]; then
+ msgskip 'Tests for unreadable files do not work as root'
+ exit 0
+fi
+
+insertinstalledpackage 'foo' 'amd64' '1'
+insertpackage 'unstable' 'foo' 'amd64' '2'
+
+setupaptarchive
+
+
+testsuccess aptget indextargets
+
+aptget clean
+chmod -r rootdir/var/lib/dpkg/status
+
+testfailureequal "E: Could not open file ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status - open (13: Permission denied)
+E: Problem opening ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+E: The package lists or status file could not be parsed or opened." aptget indextargets
diff --git a/test/integration/test-bug-835094-configure-before-purge b/test/integration/test-bug-835094-configure-before-purge
new file mode 100755
index 0000000..16a196c
--- /dev/null
+++ b/test/integration/test-bug-835094-configure-before-purge
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'kernel' 'amd64' '1' 'unstable' 'Depends: initramfs-tools | linux-initramfs-tool'
+
+#buildsimplenativepackage 'initramfs-tools' 'amd64' '1.0.16' 'unstable' 'Provides: linux-initramfs-tool'
+setupsimplenativepackage 'initramfs-tools' 'amd64' '1' 'unstable' 'Provides: linux-initramfs-tool'
+BUILDDIR='incoming/initramfs-tools-1'
+mkdir -p "${BUILDDIR}/debian/initramfs-tools/etc"
+echo 'foo2=bar2;' > "${BUILDDIR}/init.conf"
+echo 'init.conf /etc/init.conf' >> "${BUILDDIR}/debian/install"
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+buildsimplenativepackage 'dracut' 'amd64' '1' 'unstable' 'Provides: linux-initramfs-tool
+Conflicts: initramfs-tools'
+
+setupaptarchive
+
+testdpkgnotinstalled 'kernel' 'initramfs-tools' 'dracut'
+testsuccess apt install kernel -y
+testdpkginstalled 'kernel' 'initramfs-tools'
+testsuccess test -s rootdir/etc/init.conf
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ initramfs-tools*
+The following NEW packages will be installed:
+ dracut
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Purg initramfs-tools [1] [kernel:amd64 ]
+Inst dracut (1 unstable [amd64])
+Conf dracut (1 unstable [amd64])' apt install --purge dracut -s
+testsuccess apt install --purge dracut -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0
+testsuccess apt install --purge dracut -y
+testdpkginstalled 'kernel' 'dracut'
+testdpkgnotinstalled 'initramfs-tools'
+testsuccess test ! -s rootdir/etc/init.conf
diff --git a/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit b/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit
new file mode 100755
index 0000000..5023475
--- /dev/null
+++ b/test/integration/test-bug-838779-untrusted-to-trusted-Release-hit
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+
+changetowebserver
+
+testsuccess aptget update
+testdpkgnotinstalled 'foo'
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
+testsuccess apt purge foo -y
+testdpkgnotinstalled 'foo'
+
+msgmsg 'Untrusted to trusted hit' 'InRelease'
+rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+mv rootdir/etc/apt/trusted.gpg.d rootdir/etc/apt/trusted.gpg.d-bak
+testfailure aptget update
+testwarning aptget update --allow-insecure-repositories
+testfailure apt install foo -y
+testdpkgnotinstalled 'foo'
+mv rootdir/etc/apt/trusted.gpg.d-bak rootdir/etc/apt/trusted.gpg.d
+testsuccess aptget update
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
+testsuccess apt purge foo -y
+testdpkgnotinstalled 'foo'
+
+msgmsg 'Untrusted to trusted hit' 'Release.gpg'
+find aptarchive -name 'InRelease' -delete
+rm -rf rootdir/var/lib/apt/lists rootdir/var/cache/apt/archives
+mv rootdir/etc/apt/trusted.gpg.d rootdir/etc/apt/trusted.gpg.d-bak
+testfailure aptget update
+testwarning aptget update --allow-insecure-repositories
+testfailure apt install foo -y
+testdpkgnotinstalled 'foo'
+mv rootdir/etc/apt/trusted.gpg.d-bak rootdir/etc/apt/trusted.gpg.d
+testsuccess aptget update
+testsuccess apt install foo -y
+testdpkginstalled 'foo'
diff --git a/test/integration/test-bug-841874-warning-for-mismatching-distribution b/test/integration/test-bug-841874-warning-for-mismatching-distribution
new file mode 100755
index 0000000..7502eef
--- /dev/null
+++ b/test/integration/test-bug-841874-warning-for-mismatching-distribution
@@ -0,0 +1,49 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'testing' 'foo' 'all' '1'
+
+getcodenamefromsuite() { echo -n 'stretch'; }
+setupaptarchive --no-update
+APTARCHIVE="$(readlink -f './aptarchive')"
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/stretch"
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/zurg"
+
+testfailure apt show foo
+testsuccess apt update
+testsuccess apt show foo
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#testing#stretch#g' rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+testsuccess apt show foo
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#stretch#zurg#g' rootdir/etc/apt/sources.list.d/*
+testwarningmsg "W: Conflicting distribution: file:$APTARCHIVE zurg InRelease (expected zurg but got stretch)" apt update
+testsuccess apt show foo
+
+# check that 'foo/bar' is rewritten to 'foo' while we are at it
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#zurg#stretch/updates#g' rootdir/etc/apt/sources.list.d/*
+testfailure apt update
+testfailure apt show foo
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/stretch/updates"
+testsuccess apt update
+testsuccess apt show foo
+
+# … but only if needed
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e 's#stretch#buster#g' rootdir/etc/apt/sources.list.d/*
+sed -i -e 's#^Codename: stretch$#Codename: buster/updates#g' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailure apt update
+testfailure apt show foo
+ln -s "${APTARCHIVE}/dists/testing" "${APTARCHIVE}/dists/buster"
+testsuccess apt update
+testsuccess apt show foo
diff --git a/test/integration/test-bug-869859-retry-downloads b/test/integration/test-bug-869859-retry-downloads
new file mode 100755
index 0000000..4e169b3
--- /dev/null
+++ b/test/integration/test-bug-869859-retry-downloads
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+testsecondsgreaterequal() {
+ seconds="$1"
+ shift
+ before=$(date +%s)
+ "$@"
+ after=$(date +%s)
+ msggroup 'testsecondsgreaterequal'
+ msgtest "Checking that previous test took more than $secondss"
+ if [ $((after - before)) -lt $seconds ]; then
+ msgfail "Took $((after - before)) second"
+ else
+ msgpass
+ fi
+ msggroup
+}
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'testpkg' 'all' '1' 'stable'
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess apt update
+
+cd downloaded
+testsuccess apt download testpkg
+testsuccess test -f testpkg_1_all.deb
+rm -f testpkg_1_all.deb
+
+msgmsg 'Fail after too many retries'
+webserverconfig 'aptwebserver::failrequest' '429'
+webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '99'
+testsecondsgreaterequal 5 testfailureequal "Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 1 seconds
+Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+ 429 Unknown HTTP code
+Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 2 seconds
+Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+ 429 Unknown HTTP code
+Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 4 seconds
+Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+ 429 Unknown HTTP code
+Err:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1
+ 429 Unknown HTTP code
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/testpkg_1_all.deb 429 Unknown HTTP code" apt download testpkg -o acquire::retries=3 -o debug::acquire::retries=true -q
+testfailure test -f testpkg_1_all.deb
+
+msgmsg 'Success in the third try'
+webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '2'
+testsuccess apt download testpkg -o acquire::retries=3 -o acquire::retries::delay=false
+testsuccess test -f testpkg_1_all.deb
+rm -f testpkg_1_all.deb
+
+msgmsg 'Do not try everything again, hard failures keep hard failures'
+webserverconfig 'aptwebserver::failrequest' '404'
+webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '2'
+testfailure apt download testpkg -o acquire::retries=3
+testfailure test -f testpkg_1_all.deb
+
+cat ../rootdir/etc/apt/sources.list.d/apt-test-*.list > ../rootdir/etc/apt/sources.list.d/00http-source.list
+changetohttpswebserver
+
+msgmsg 'Check download from alternative sources if first failed'
+webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '0'
+testsuccess apt update
+testsuccess apt download testpkg -o acquire::retries=0
+testsuccess test -f testpkg_1_all.deb
+rm -f testpkg_1_all.deb
+
+# we make the first source fail by disabling http support
+webserverconfig 'aptwebserver::support::http' 'false'
+testsuccess apt download testpkg -o acquire::retries=0
+cp ../rootdir/tmp/testsuccess.output alt.output
+testsuccess grep '^ 400 Bad Request' alt.output
+testsuccess test -f testpkg_1_all.deb
+rm -f testpkg_1_all.deb
diff --git a/test/integration/test-bug-870675-hang-on-unsupported-method b/test/integration/test-bug-870675-hang-on-unsupported-method
new file mode 100755
index 0000000..0d79b8f
--- /dev/null
+++ b/test/integration/test-bug-870675-hang-on-unsupported-method
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+echo 'foo' > aptarchive/foobar
+echo 'bar' > aptarchive/foobar2
+
+testsuccess apthelper download-file "http://localhost:${APTHTTPPORT}/foobar" ./downloaded/foobar 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15'
+rm -f ./downloaded/foobar
+testsuccess apthelper download-file "http://localhost:${APTHTTPPORT}/foobar" ./downloaded/foobar 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15' \
+ "http://localhost:${APTHTTPPORT}/foobar2" ./downloaded/foobar2 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+rm -f ./downloaded/foobar ./downloaded/foobar2
+
+testfailure apthelper download-file "foo://localhost:${APTHTTPPORT}/foobar" ./downloaded/foobar 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15'
+testsuccess grep 'The method driver .*/foo could not be found' rootdir/tmp/testfailure.output
+rm -f ./downloaded/foobar
+testfailure apthelper download-file "foo://localhost:${APTHTTPPORT}/foobar" ./downloaded/foobar 'SHA1:f1d2d2f924e986ac86fdf7b36c94bcdf32beec15' \
+ "foo://localhost:${APTHTTPPORT}/foobar2" ./downloaded/foobar2 'SHA1:e242ed3bffccdf271b7fbaf34ed72d089537b42f'
+testsuccess grep 'The method driver .*/foo could not be found' rootdir/tmp/testfailure.output
+rm -f ./downloaded/foobar ./downloaded/foobar2
diff --git a/test/integration/test-bug-872963-apt-ftparchive-disable-hashes b/test/integration/test-bug-872963-apt-ftparchive-disable-hashes
new file mode 100755
index 0000000..ff01246
--- /dev/null
+++ b/test/integration/test-bug-872963-apt-ftparchive-disable-hashes
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+touch aptarchive/apt_1.5~rc1.tar.xz
+cat >> aptarchive/apt_1.5~rc1.dsc << EOF
+Format: 3.0 (native)
+Source: apt
+Binary: apt
+Architecture: any all
+Version: 1.5~rc1
+Build-Depends: foo
+Package-List:
+ apt deb admin important arch=any
+Checksums-Sha1:
+ 332b354b0c7cbd936a4a95f3ce149aa03677cabf 2095076 apt_1.5~rc1.tar.xz
+Checksums-Sha256:
+ 14d09b2c1e13f9a70aac3322987ff26f36c53010639763573c9aa4987e52e47a 2095076 apt_1.5~rc1.tar.xz
+Checksums-Sha512:
+ 4f570c10c3fd549b2e27db4481fbc1ebebed52bd06a8ba7c0716b3917a8452bb3d3cd4fbb02561e02af09b1973a65a4cc69a42c21e858b1d5c3caa970aea4fd4 2095076 apt_1.5~rc1.tar.xz
+Files:
+ 7ea24e77b6203e08ca4158831df26825 2095076 apt_1.5~rc1.tar.xz
+EOF
+
+
+rm rootdir/etc/apt/apt.conf.d/*
+
+for HASH in MD5 SHA1 SHA256 SHA512; do
+ testsuccess aptftparchive -qq sources -o APT::FTPArchive::$HASH=false "aptarchive/"
+ cp rootdir/tmp/testsuccess.output aptarchive/Sources
+ if [ "$HASH" = "MD5" ]; then
+ testfailure grep "Files:" aptarchive/Sources
+ else
+ testfailure grep -i "$HASH:" aptarchive/Sources
+ fi
+done
diff --git a/test/integration/test-bug-879591-dont-warn-for-hidden-but-good-components b/test/integration/test-bug-879591-dont-warn-for-hidden-but-good-components
new file mode 100755
index 0000000..6eb4e04
--- /dev/null
+++ b/test/integration/test-bug-879591-dont-warn-for-hidden-but-good-components
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'stable' 'foo' 'all' '1'
+insertpackage 'stable' 'bar' 'all' '1' '' '' '' 'main/debian-installer/others'
+insertpackage 'stable-backports' 'foo' 'all' '1+sb'
+insertpackage 'stable-backports' 'bar' 'all' '1+sb' '' '' '' 'main/debian-installer/others'
+
+find aptarchive/dists -path '*/debian-installer/i18n/Translation-en*' -delete
+
+setupaptarchive --no-update
+sed -i -e '/^Codename: / a\
+Components: main contrib' $(find ./aptarchive -name 'Release')
+signreleasefiles
+
+testsuccess aptget update
+
+sed -i -e 's# main\w*$# main main/debian-installer#' rootdir/etc/apt/sources.list.d/*
+
+testsuccess aptget update
diff --git a/test/integration/test-bug-921685-binary-detached-signature b/test/integration/test-bug-921685-binary-detached-signature
new file mode 100755
index 0000000..df86319
--- /dev/null
+++ b/test/integration/test-bug-921685-binary-detached-signature
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+
+buildaptarchive
+setupdistsaptarchive
+
+for RELEASE in $(find aptarchive -name 'Release'); do
+ # note the missing --armor
+ dosigning "keys/joesixpack" --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
+done
+
+testfailure apt show foo
+testfailure aptget update
+testsuccess grep 'W: .* Detached signature file .* is in unsupported binary format' rootdir/tmp/testfailure.output
+testfailure apt show foo
diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
new file mode 100755
index 0000000..272378b
--- /dev/null
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'runit-init' 'all' '1' 'Conflicts: systemd-sysv, sysvinit-core, runit-init'
+# note how the rest do not know of runit-init
+insertpackage 'unstable' 'sysvinit-core' 'all' '1' 'Conflicts: systemd-sysv, sysvinit-core'
+insertpackage 'unstable,installed' 'systemd-sysv' 'all' '1' 'Conflicts: systemd-sysv, sysvinit-core'
+insertpackage 'unstable,installed' 'init' 'all' '1' 'Pre-Depends: systemd-sysv | sysvinit-core
+Important: yes'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ Removing: systemd-sysv:amd64 as upgrade is not an option for runit-init:amd64 (1)
+ MarkDelete systemd-sysv:amd64 < 1 @ii mK > FU=0
+ MarkInstall runit-init:amd64 < none -> 1 @un puN > FU=1
+Starting pkgProblemResolver with broken count: 1
+Starting 2 pkgProblemResolver with broken count: 1
+Investigating (0) init:amd64 < 1 @ii mK Ib >
+Broken init:amd64 PreDepends on systemd-sysv:amd64 < 1 @ii pmR >
+ Considering systemd-sysv:amd64 0 as a solution to init:amd64 5100
+ Added systemd-sysv:amd64 to the remove list
+Broken init:amd64 PreDepends on sysvinit-core:amd64 < none @un pmH >
+ Considering sysvinit-core:amd64 0 as a solution to init:amd64 5100
+ Ignore MarkKeep of systemd-sysv:amd64 < 1 @ii pmR > as its mode (Delete) is protected
+Investigating (1) init:amd64 < 1 @ii mK Ib >
+Broken init:amd64 PreDepends on systemd-sysv:amd64 < 1 @ii pmR >
+ Considering systemd-sysv:amd64 5100 as a solution to init:amd64 5100
+Broken init:amd64 PreDepends on sysvinit-core:amd64 < none @un pmH >
+ Considering sysvinit-core:amd64 0 as a solution to init:amd64 5100
+ Or group remove for init:amd64
+ MarkDelete init:amd64 < 1 @ii mK Ib > FU=0
+Done
+The following packages will be REMOVED:
+ init systemd-sysv
+The following NEW packages will be installed:
+ runit-init
+WARNING: The following essential packages will be removed.
+This should NOT be done unless you know exactly what you are doing!
+ init systemd-sysv (due to init)
+ MarkDelete init:amd64 < 1 @ii K > FU=1
+0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Remv init [1]
+ MarkDelete systemd-sysv:amd64 < 1 | none @ii H > FU=1
+Remv systemd-sysv [1]
+Inst runit-init (1 unstable [all])
+Conf runit-init (1 unstable [all])" apt install runit-init -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Allow-Solver-Remove-Essential=1
diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
new file mode 100755
index 0000000..ca6bf8d
--- /dev/null
+++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+# without requires-foo it is sadly not as clear cut what should happen
+insertpackage 'unstable' 'foobar' 'all' '1' 'Depends: foo | bar, requires-foo, conflicts-foo | fine-foo'
+insertpackage 'unstable' 'foo' 'all' '1' 'Depends: foo-depends'
+insertpackage 'unstable' 'foo-depends' 'all' '1'
+insertpackage 'unstable' 'bar' 'all' '1'
+insertpackage 'unstable' 'requires-foo' 'all' '1' 'Depends: foo'
+insertpackage 'unstable' 'conflicts-foo' 'all' '1' 'Conflicts: foo'
+insertpackage 'unstable' 'fine-foo' 'all' '1'
+
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ Installing foo:amd64 as Depends of foobar:amd64
+ Installing foo-depends:amd64 as Depends of foo:amd64
+ Installing requires-foo:amd64 as Depends of foobar:amd64
+ Installing conflicts-foo:amd64 as Depends of foobar:amd64
+ Installing fine-foo:amd64 as Depends of foobar:amd64
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ fine-foo foo foo-depends requires-foo
+The following NEW packages will be installed:
+ fine-foo foo foo-depends foobar requires-foo
+0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
+Inst fine-foo (1 unstable [all])
+Inst foo-depends (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst requires-foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf fine-foo (1 unstable [all])
+Conf foo-depends (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf requires-foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1
diff --git a/test/integration/test-bug-961266-hold-means-hold b/test/integration/test-bug-961266-hold-means-hold
new file mode 100755
index 0000000..89c18ba
--- /dev/null
+++ b/test/integration/test-bug-961266-hold-means-hold
@@ -0,0 +1,124 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'git' 'amd64' '1:2.25.1-1' 'Multi-Arch: foreign'
+insertinstalledpackage 'git-cvs' 'amd64' '1:2.25.1-1' 'Depends: git (>> 1:2.25.1), git (<< 1:2.25.1-.)'
+
+
+insertpackage 'unstable' 'git' 'amd64,i386' '1:2.26.2-1' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'git-cvs' 'amd64,i386' '1:2.26.2-1' 'Depends: git (>> 1:2.26.2), git (<< 1:2.26.2-.)'
+insertpackage 'unstable' 'git-ng' 'amd64,i386' '1:2.26.2-1' 'Depends: git (>> 1:2.26.2), git (<< 1:2.26.2-.)'
+
+setupaptarchive
+
+msgmsg 'The setup is' 'fine'
+UPGRADE='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ git git-cvs
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst git-cvs [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) []
+Inst git [1:2.25.1-1] (1:2.26.2-1 unstable [amd64])
+Conf git-cvs (1:2.26.2-1 unstable [amd64])
+Conf git (1:2.26.2-1 unstable [amd64])'
+testsuccessequal "$UPGRADE" apt upgrade -s
+testsuccessequal "$UPGRADE" aptget upgrade -s
+testsuccessequal "$UPGRADE" apt full-upgrade -s
+testsuccessequal "$UPGRADE" aptget dist-upgrade -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ git git-cvs
+The following NEW packages will be installed:
+ git-ng
+The following packages will be upgraded:
+ git git-cvs
+2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst git-cvs [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) []
+Inst git [1:2.25.1-1] (1:2.26.2-1 unstable [amd64])
+Inst git-ng (1:2.26.2-1 unstable [amd64])
+Conf git-cvs (1:2.26.2-1 unstable [amd64])
+Conf git (1:2.26.2-1 unstable [amd64])
+Conf git-ng (1:2.26.2-1 unstable [amd64])' apt install git-ng -s
+
+
+msgmsg 'Now mix it up by' 'holding git'
+testsuccessequal 'git set on hold.' aptmark hold git
+testsuccessequal 'git' aptmark showholds
+
+NOUPGRADE='Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ git git-cvs
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.'
+
+testsuccessequal "$NOUPGRADE" apt upgrade -s
+testsuccessequal "$NOUPGRADE" apt full-upgrade -s
+testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s
+testsuccessequal "$NOUPGRADE" aptget upgrade -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ git-ng : Depends: git (> 1:2.26.2)
+E: Unable to correct problems, you have held broken packages.' apt install git-ng -s
+
+
+msgmsg 'Now mix it up by' 'holding git-cvs'
+testsuccessequal 'Canceled hold on git.' aptmark unhold git
+testsuccessequal 'git-cvs set on hold.' aptmark hold git-cvs
+testsuccessequal 'git-cvs' aptmark showholds
+
+testsuccessequal "$NOUPGRADE" apt upgrade -s
+testsuccessequal "$NOUPGRADE" apt full-upgrade -s
+testsuccessequal "$NOUPGRADE" aptget upgrade -s
+testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ git-cvs : Depends: git (< 1:2.25.1-.)
+E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' apt install git-ng -s
+
+
+msgmsg 'Now mix it up by' 'holding both'
+testsuccessequal 'git set on hold.' aptmark hold git
+testsuccessequal 'git
+git-cvs' aptmark showholds
+
+testsuccessequal "$NOUPGRADE" apt upgrade -s
+testsuccessequal "$NOUPGRADE" apt full-upgrade -s
+testsuccessequal "$NOUPGRADE" aptget upgrade -s
+testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ git-ng : Depends: git (> 1:2.26.2)
+E: Unable to correct problems, you have held broken packages.' apt install git-ng -s
diff --git a/test/integration/test-bug-990518-sourceslist-volatile b/test/integration/test-bug-990518-sourceslist-volatile
new file mode 100755
index 0000000..1353566
--- /dev/null
+++ b/test/integration/test-bug-990518-sourceslist-volatile
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'amd64' '1'
+
+echo foo > rootdir/etc/apt/sources.list.d/test.list
+
+testfailureequal "E: Malformed line 1 in source list ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/test.list (type)
+E: The list of sources could not be read." apt install ./incoming/foo_1_amd64.deb -s
diff --git a/test/integration/test-bug-990555-https-proxy-for-http b/test/integration/test-bug-990555-https-proxy-for-http
new file mode 100755
index 0000000..f43abfd
--- /dev/null
+++ b/test/integration/test-bug-990555-https-proxy-for-http
@@ -0,0 +1,37 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '1' 'unstable'
+
+setupaptarchive --no-update
+changetowebserver --request-absolute='uri'
+changetohttpswebserver --no-rewrite
+
+msgtest 'Check that non-absolute paths are' 'not accepted'
+testfailure --nomsg aptget update --allow-insecure-repositories
+
+echo "Acquire::http::Proxy \"https://localhost:${APTHTTPSPORT}\";" > rootdir/etc/apt/apt.conf.d/99proxy
+
+msgtest 'Check that requests to https proxies' 'work from http'
+testsuccess --nomsg aptget update
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ unrelated
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst unrelated (1 unstable [all])
+Conf unrelated (1 unstable [all])' apt install unrelated -s
+
+testsuccess apt download unrelated --print-uris
+testfailure grep 'https:' rootdir/tmp/testsuccess.output
+
+cd downloaded
+testsuccess apt download unrelated
+testsuccess test -s 'unrelated_1_all.deb'
+cd ..
diff --git a/test/integration/test-bug-992993-marked-cycles b/test/integration/test-bug-992993-marked-cycles
new file mode 100755
index 0000000..a569040
--- /dev/null
+++ b/test/integration/test-bug-992993-marked-cycles
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'librust-nom-4-dev' 'all' '4.2.3-3' 'Provides: librust-nom-dev (= 4.2.3-3)'
+insertinstalledpackage 'librust-nom-dev' 'all' '5.0.1-4' 'Depends: librust-nom+default-dev (= 5.0.1-4)'
+insertinstalledpackage 'librust-nom+default-dev ' 'all' '5.0.1-4' 'Depends: librust-nom-dev (= 5.0.1-4)'
+insertinstalledpackage 'librust-nom-4+std-dev' 'all' '4.2.3-3' 'Provides: librust-nom+default-dev (= 4.2.3-3)'
+
+insertinstalledpackage 'foo' 'all' '1' 'Depends: librust-nom-4-dev, librust-nom-dev, librust-nom-4+std-dev'
+
+for AUTO in '' 'librust-nom-4-dev' 'librust*' 'foo' '.*'; do
+ msgmsg 'Running test with these packages marked auto:' "$AUTO"
+ testsuccess aptmark manual '.*'
+ if [ -n "$AUTO" ]; then
+ testsuccess aptmark auto "$AUTO"
+ fi
+
+ testsuccess aptget check
+ testsuccess aptget autoremove -s
+
+ testsuccess aptget upgrade
+ testsuccess aptget full-upgrade
+
+ testsuccess apt show foo
+done
diff --git a/test/integration/test-bug-998444-regex-as-target-release b/test/integration/test-bug-998444-regex-as-target-release
new file mode 100755
index 0000000..97970bc
--- /dev/null
+++ b/test/integration/test-bug-998444-regex-as-target-release
@@ -0,0 +1,65 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+addpackage() {
+ insertpackage "$@"
+ insertsource "$@"
+}
+
+addpackage 'stable' 'foo' 'all' '1'
+addpackage 'stable-security' 'foo' 'all' '1.1~security.1'
+addpackage 'stable-updates' 'foo' 'all' '2~stable.1'
+addpackage 'unstable' 'foo' 'all' '2'
+addpackage 'experimental' 'foo' 'all' '3'
+addpackage 'external' 'foo' 'all' '4'
+
+cat > rootdir/etc/apt/preferences <<EOF
+Package: *
+Pin: release a=external
+Pin-Priority: -10
+EOF
+
+setupaptarchive
+
+APTARCHIVE="file:${TMPWORKINGDIRECTORY}/aptarchive"
+
+testfoo() {
+ testsuccessequal "foo:
+ Installed: (none)
+ Candidate: $1
+ Version table:
+ 4 $2
+ $(printf '%3s' "$2") ${APTARCHIVE} external/main all Packages
+ 3 $3
+ $(printf '%3s' "$3") ${APTARCHIVE} experimental/main all Packages
+ 2 $4
+ $(printf '%3s' "$4") ${APTARCHIVE} unstable/main all Packages
+ 2~stable.1 $5
+ $(printf '%3s' "$5") ${APTARCHIVE} stable-updates/main all Packages
+ 1.1~security.1 $6
+ $(printf '%3s' "$6") ${APTARCHIVE} stable-security/main all Packages
+ 1 $7
+ $(printf '%3s' "$7") ${APTARCHIVE} stable/main all Packages" apt policy foo -t "$8"
+ testsuccessequal "'${APTARCHIVE}/pool/main/foo/foo_$(apthelper quote-string "${1}" '+~ ')_all.deb' foo_${1}_all.deb 42 SHA256:0000000000000000000000000000000000000000000000000000000000000000" apt download foo --print-uris -t "$8"
+ testsuccess apt source -t "$8" --print-uris foo
+ tail -n 2 rootdir/tmp/testsuccess.output | cut -d' ' -f 2 > aptsource.output
+ testfileequal 'aptsource.output' "foo_${9:-$1}.dsc
+foo_${9:-$1}.tar.gz"
+}
+testfoo '2' '-10' '1' '500' '500' '500' '500' '' '4'
+testfoo '2' '-10' '1' '990' '500' '500' '500' 'unstable' '2'
+testfoo '1' '-10' '1' '500' '500' '500' '990' 'stable'
+testfoo '2~stable.1' '-10' '1' '500' '990' '500' '500' 'stable-updates'
+testfoo '1.1~security.1' '-10' '1' '500' '500' '990' '500' 'stable-security'
+testfoo '4' '990' '1' '500' '500' '500' '500' 'a=external'
+testfoo '2' '-10' '1' '990' '990' '990' '990' '/stable/'
+testfoo '2~stable.1' '-10' '1' '500' '990' '990' '990' '/^stable/'
+testfoo '1.1~security.1' '-10' '1' '500' '500' '990' '990' '/^stable(|-security)$/'
+testfoo '2~stable.1' '-10' '1' '500' '990' '990' '500' '/^stable(-security|-updates)$/'
+testfoo '2~stable.1' '-10' '1' '500' '990' '990' '990' '/^stable(|-security|-updates)$/'
+testfoo '4' '990' '990' '990' '990' '990' '990' '/./'
diff --git a/test/integration/test-bug-lp1347721-dpkg-ordering b/test/integration/test-bug-lp1347721-dpkg-ordering
new file mode 100755
index 0000000..3c31974
--- /dev/null
+++ b/test/integration/test-bug-lp1347721-dpkg-ordering
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+# ensure we find a valid ordering
+testsuccess aptget dist-upgrade -s
diff --git a/test/integration/test-bug-lp1445239-download-loop b/test/integration/test-bug-lp1445239-download-loop
new file mode 100755
index 0000000..6802840
--- /dev/null
+++ b/test/integration/test-bug-lp1445239-download-loop
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# this is a regression test for LP: #1445239 where a partial download can
+# trigger an endless hang of the download method
+#
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+TESTFILE='aptarchive/testfile'
+dd if=/dev/zero of=$TESTFILE bs=100k count=1 2>/dev/null
+
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+TARGET=./downloaded/testfile-downloaded
+dd if=/dev/zero of=$TARGET bs=99k count=1 2>/dev/null
+if ! downloadfile http://localhost:${APTHTTPPORT}/testfile "$TARGET" > "$DOWNLOADLOG"; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+else
+ msgpass
+fi
diff --git a/test/integration/test-bug-lp1550741-heisestate b/test/integration/test-bug-lp1550741-heisestate
new file mode 100755
index 0000000..76fdcb8
--- /dev/null
+++ b/test/integration/test-bug-lp1550741-heisestate
@@ -0,0 +1,48 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'module-init-tools' 'amd64' '1.0' 'Depends: libkmod2 (= 21-1)'
+insertpackage 'unstable' 'libkmod2' 'amd64' '0.22-1'
+insertinstalledpackage 'module-init-tools' 'amd64' '0.1'
+
+setupaptarchive
+
+# this test only works if the python-apt is build against the same
+# ABI version as the apt we are testing here
+PYAPT_LIB_VER=$(runpython3 -c 'import apt_pkg;print(apt_pkg.LIB_VERSION)' 2>/dev/null || true)
+if [ ! -f $LIBRARYPATH/libapt-pkg.so.$PYAPT_LIB_VER ]; then
+ msgskip "python-apt build with the wrong library version: $PYAPT_LIB_VER"
+ exit 0
+fi
+
+# we can not test this using our normal sh tests
+cat > test.py <<EOF
+#!/usr/bin/python3
+import sys
+import apt
+def in_valid_state(pkg):
+ return (pkg.marked_keep or
+ pkg.marked_install or
+ pkg.marked_upgrade or
+ pkg.marked_delete or
+ pkg.marked_downgrade or
+ pkg.marked_reinstall)
+# main
+cache=apt.Cache()
+pkgname="module-init-tools"
+if not in_valid_state(cache[pkgname]):
+ print("the test is broken, %s should be in a valid state" % pkgname)
+ sys.exit(99)
+cache.upgrade(True)
+if not in_valid_state(cache[pkgname]):
+ print("package %s is in a heisen-state" % pkgname)
+ sys.exit(2)
+
+EOF
+testsuccess runpython3 test.py
diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
new file mode 100755
index 0000000..6e8225a
--- /dev/null
+++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep
@@ -0,0 +1,39 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'maas-common' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2'
+insertpackage 'unstable' 'maas-region-controller-min' 'amd64' '2.0.0~alpha4+bzr4837-0ubuntu1~xenial1' 'Depends: maas-common (= 2.0.0~alpha4+bzr4837-0ubuntu1~xenial1)'
+insertpackage 'unstable' 'maas-region-api' 'amd64' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-common (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)\nConflicts: maas-region-controller-min\nProvides: maas-region-controller-min'
+insertpackage 'unstable' 'maas-region-controller' 'all' '2.0.0~alpha4+bzr4843-0ubuntu1~xenial2' 'Depends: maas-region-api (= 2.0.0~alpha4+bzr4843-0ubuntu1~xenial2)'
+
+insertinstalledpackage 'maas-common' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1'
+insertinstalledpackage 'maas-region-controller-min' 'amd64' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-common (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubuntu1' 'Depends: maas-region-controller-min (= 2.0.0~alpha3+bzr4810-0ubuntu1)'
+
+setupaptarchive
+
+testsuccess aptget dist-upgrade -s -o Debug::pkgDepCache::AutoInstall=true -o Debug::pkgPackageManager=yes -o Debug::pkgProblemResolver=yes
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ maas-region-controller-min
+The following NEW packages will be installed:
+ maas-region-api
+The following packages will be upgraded:
+ maas-common maas-region-controller
+2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Inst maas-region-controller [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Remv maas-region-controller-min [2.0.0~alpha3+bzr4810-0ubuntu1] []
+Inst maas-common [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all]) []
+Inst maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])
+Conf maas-region-controller (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])
+Conf maas-common (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [all])
+Conf maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])' \
+aptget dist-upgrade -s
diff --git a/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative b/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative
new file mode 100755
index 0000000..7f8e4ad
--- /dev/null
+++ b/test/integration/test-bug-lp1694697-build-dep-architecture-limited-alternative
@@ -0,0 +1,58 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+
+insertpackage 'stable' 'build-depends' 'i386' '1'
+insertpackage 'stable' 'foo' 'i386' '1'
+insertinstalledpackage 'build-essential' 'i386' '1'
+
+setupaptarchive
+
+# This used to be interpreted as build-depends | foo
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends [i386] | build-depends [amd64], foo
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Inst foo (1 stable [i386])
+Conf build-depends (1 stable [i386])
+Conf foo (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
+
+
+# This caused a segmentation fault
+cat > foobar.dsc <<EOF
+Format: 3.0 (native)
+Source: foobar
+Binary: foobar
+Architecture: all
+Version: 1
+Maintainer: Joe Sixpack <joe@example.org>
+Build-Depends: build-depends [i386] | build-depends [amd64]
+Standards-Version: 3.9.8
+EOF
+testsuccessequal "Note, using file './foobar.dsc' to get the build dependencies
+Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ build-depends
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst build-depends (1 stable [i386])
+Conf build-depends (1 stable [i386])" aptget build-dep --simulate ./foobar.dsc
diff --git a/test/integration/test-bug-multiarch-upgrade b/test/integration/test-bug-multiarch-upgrade
new file mode 100755
index 0000000..38e7053
--- /dev/null
+++ b/test/integration/test-bug-multiarch-upgrade
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libcups2' 'amd64' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libcups2' 'i386' '1' 'Multi-Arch: same'
+
+insertpackage 'unstable' 'libcups2' 'amd64' '0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'i386' '0' 'Multi-Arch: same'
+insertpackage 'unstable' 'libcups2' 'i386' '2' 'Multi-Arch: same'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libcups2
+The following packages will be upgraded:
+ libcups2 libcups2:i386
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst libcups2 [1] (2 unstable [amd64]) [libcups2:amd64 on libcups2:i386] [libcups2:i386 on libcups2:amd64] [libcups2:i386 ]
+Inst libcups2:i386 [1] (2 unstable [i386])
+Conf libcups2 (2 unstable [amd64])
+Conf libcups2:i386 (2 unstable [i386])' aptget install -s libcups2:i386
diff --git a/test/integration/test-cachecontainer-architecture-specification b/test/integration/test-cachecontainer-architecture-specification
new file mode 100755
index 0000000..6557468
--- /dev/null
+++ b/test/integration/test-cachecontainer-architecture-specification
@@ -0,0 +1,123 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'armel'
+
+#insertinstalledpackage 'xserver-xorg-core' 'amd64' '2:1.7.6-2ubuntu7.10'
+insertpackage 'unstable' 'libsame' 'armel,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo' 'all' '1'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame:armel
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame:armel (1 unstable [armel])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:armel
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package libsame:armhf' aptget -s install libsame:armhf
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:armel libsame:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:*
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:any
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:a*
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Conf libsame (1 unstable [amd64])' aptget -s install libsame:linux-any
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libsame libsame:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame (1 unstable [amd64])
+Inst libsame:armel (1 unstable [armel])
+Conf libsame (1 unstable [amd64])
+Conf libsame:armel (1 unstable [armel])' aptget -s install libsame:linux-*
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package libsame:windows-any' aptget -s install libsame:windows-any
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package foo:armel' aptget -s install foo:armel
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:all
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:amd64
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Conf foo (1 unstable [all])' aptget -s install foo:native
diff --git a/test/integration/test-compressed-indexes b/test/integration/test-compressed-indexes
new file mode 100755
index 0000000..858bf11
--- /dev/null
+++ b/test/integration/test-compressed-indexes
@@ -0,0 +1,180 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configcompression 'ALL'
+configarchitecture 'i386'
+LOWCOSTEXT='lz4'
+
+buildsimplenativepackage 'testpkg' 'i386' '1.0'
+
+buildaptarchive
+setupdistsaptarchive
+# fake a pdiff setup as apt wouldn't try pdiffs otherwise
+find aptarchive -name 'Packages' -o -name 'Sources' | while read file; do
+ mkdir "${file}.diff"
+ PATCHINDEX="${file}.diff/Index"
+ echo 'SHA1-Current: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 0
+SHA1-History:
+ adc83b19e793491b1c6ea0fd8b46cd9f32e592fc 33053002 2010-08-18-2013.28
+ ecfd1b19e793491b1c6ea123eabdcd9f32e592fc 33053001 2010-08-18-2013.29
+SHA1-Patches:
+ abc1fc0ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-0814.28
+ dfe3444ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-0814.29' > $PATCHINDEX
+done
+generatereleasefiles
+signreleasefiles
+
+testrun() {
+ local F
+ msgtest 'Check if all index files are' "${1:-uncompressed}"
+ if [ "$1" = 'compressed' ]; then
+ ! test -e rootdir/var/lib/apt/lists/*i386_Packages || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Sources || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Translation-en || F=1
+ test -e rootdir/var/lib/apt/lists/*i386_Packages.$LOWCOSTEXT || F=1
+ test -e rootdir/var/lib/apt/lists/*_Sources.$LOWCOSTEXT || F=1
+ test -e rootdir/var/lib/apt/lists/*_Translation-en.$LOWCOSTEXT || F=1
+ # there is no point in trying pdiff if we have compressed indexes
+ # as we can't patch compressed files (well, we can, but what is the point?)
+ ! test -e rootdir/var/lib/apt/lists/*diff_Index || F=1
+ else
+ # clear the faked pdiff indexes so the glob below works
+ rm -f rootdir/var/lib/apt/lists/*diff_Index
+ test -e rootdir/var/lib/apt/lists/*i386_Packages || F=1
+ test -e rootdir/var/lib/apt/lists/*_Sources || F=1
+ test -e rootdir/var/lib/apt/lists/*_Translation-en || F=1
+ ! test -e rootdir/var/lib/apt/lists/*i386_Packages.* || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Sources.* || F=1
+ ! test -e rootdir/var/lib/apt/lists/*_Translation-en.* || F=1
+ fi
+ if [ -n "$F" ]; then
+ cat rootdir/tmp/testsuccess.output
+ ls -laR rootdir/var/lib/apt/lists/
+ msgfail
+ else
+ msgpass
+ fi
+ msgtest 'Check if package is downloadable'
+ cd downloaded
+ testsuccess --nomsg aptget download testpkg
+ msgtest 'deb file is present'; testsuccess --nomsg test -f testpkg_1.0_i386.deb
+ rm -f testpkg_1.0_i386.deb
+ cd - >/dev/null
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ testpkg
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst testpkg (1.0 unstable [i386])
+Conf testpkg (1.0 unstable [i386])' aptget install testpkg -s -o Debug::pkgAcquire::Auth=0 -o Debug::pkgAcquire::Worker=0
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODSHOW" aptcache show testpkg
+ testsuccessequal "$GOODSHOW" aptcache show testpkg
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+ testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+ rm -f rootdir/var/cache/apt/pkgcache.bin rootdir/var/cache/apt/srcpkgcache.bin
+ testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+ testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+ aptget clean
+ msgtest 'Check if the source is aptgetable'
+ cd downloaded
+ testsuccess --nomsg aptget source testpkg
+ testsuccess test -s testpkg_1.0.dsc
+ testsuccess test -d testpkg-1.0
+ rm -rf testpkg-1.0*
+ cd - >/dev/null
+ testsuccessequal "$(aptcache show testpkg -o Acquire::Languages=none)
+" aptcache dumpavail
+}
+
+echo 'Dir::Log::Planner "/dev/null";
+Debug::pkgAcquire::worker "true";
+debug::pkgAcquire::Auth "true";
+Debug::pkgAcquire::Diffs "true";
+Debug::Acquire::http "true";' > rootdir/etc/apt/apt.conf.d/99debugconf
+
+testovermethod() {
+ forcecompressor $2
+
+ for INDEX in 'false' 'true'; do
+ rm -rf rootdir/var/lib/apt/lists
+ echo "Acquire::GzipIndexes \"${INDEX}\";" > rootdir/etc/apt/apt.conf.d/02compressindex
+ local INDCOMP
+ if [ "$INDEX" = 'false' -o "$1" = 'cdrom' ]; then
+ INDCOMP='uncompressed'
+ else
+ INDCOMP='compressed'
+ echo 'APT::Compressor::lz4::Name "lz4";' >> rootdir/etc/apt/apt.conf.d/02compressindex
+ fi
+
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX"
+ if [ "${1}" = 'cdrom' ]; then
+ testsuccess aptcdrom add </dev/null
+ fi
+ testsuccess aptget update
+ testrun "$INDCOMP"
+
+ if [ "${1}" != 'cdrom' ]; then
+ testsuccess aptget update -o Acquire::Pdiffs=1
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX (update unchanged with pdiffs)"
+ testrun "$INDCOMP"
+
+ testsuccess aptget update -o Acquire::Pdiffs=0
+ msgmsg "${1}: ${COMPRESSOR}: Test with $INDCOMP indexes gzip=$INDEX (update unchanged without pdiffs)"
+ testrun "$INDCOMP"
+ fi
+
+ rm rootdir/etc/apt/apt.conf.d/02compressindex
+ done
+}
+
+testsuccess aptget update
+GOODSHOW="$(aptcache show testpkg)
+"
+test $(echo "$GOODSHOW" | grep -e '^Package: testpkg' -e '^Version: 1.0' -e '^Architecture: i386' | wc -l) -eq 3 || msgdie 'show is broken'
+testsuccessequal "$GOODSHOW" aptcache show testpkg
+GOODSHOWSRC="$(aptcache showsrc testpkg)
+"
+test $(echo "$GOODSHOWSRC" | grep -e '^Package: testpkg' -e '^Format: 3.0 (native)' -e '^Checksums-Sha256:' | wc -l) -eq 3 || msgdie 'showsrc is broken'
+testsuccessequal "$GOODSHOWSRC" aptcache showsrc testpkg
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 file:/' | wc -l) -eq 4 || msgdie 'file policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'file'
+
+rewritesourceslist "copy://${TMPWORKINGDIRECTORY}/aptarchive"
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 copy:/' | wc -l) -eq 4 || msgdie 'copy policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'copy'
+
+changetowebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 http://' | wc -l) -eq 4 || msgdie 'http policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'http'
+
+changetohttpswebserver
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptget update
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 https://' | wc -l) -eq 4 || msgdie 'https policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'https'
+
+changetocdrom 'Debian APT Testdisk 0.8.15'
+rm -rf rootdir/var/lib/apt/lists
+testsuccess aptcdrom add </dev/null
+GOODPOLICY="$(aptcache policy testpkg)"
+test $(echo "$GOODPOLICY" | grep -e '^testpkg:' -e '^ Candidate:' -e '^ Installed: (none)' -e '500 cdrom://' | wc -l) -eq 4 || msgdie 'cdrom policy is broken'
+testsuccessequal "$GOODPOLICY" aptcache policy testpkg
+forallsupportedcompressors testovermethod 'cdrom'
diff --git a/test/integration/test-conflicts-loop b/test/integration/test-conflicts-loop
new file mode 100755
index 0000000..5b6e446
--- /dev/null
+++ b/test/integration/test-conflicts-loop
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'openjdk-6-jre' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre-headless (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)'
+insertinstalledpackage 'openjdk-6-jre-lib' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre-lib' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-headless (<< 6b17~pre3-1)'
+insertinstalledpackage 'openjdk-6-jre-headless' 'i386' '6b16-1.8-0ubuntu1'
+insertpackage 'unstable' 'openjdk-6-jre-headless' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Remv openjdk-6-jre-headless [6b16-1.8-0ubuntu1]
+Remv openjdk-6-jre-lib [6b16-1.8-0ubuntu1]
+Inst openjdk-6-jre [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Inst openjdk-6-jre-lib [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-lib (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Inst openjdk-6-jre-headless [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])
+Conf openjdk-6-jre-headless (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])' aptget dist-upgrade -s -o APT::Immediate-Configure-All=true
+
+testsuccess aptget dist-upgrade -s
diff --git a/test/integration/test-conflicts-real-multiarch-same b/test/integration/test-conflicts-real-multiarch-same
new file mode 100755
index 0000000..73f7b9a
--- /dev/null
+++ b/test/integration/test-conflicts-real-multiarch-same
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'virtual-provider' 'amd64,i386' '2' 'Provides: virtual
+Conflicts: virtual
+Multi-Arch: same'
+insertpackage 'unstable' 'real' 'amd64,i386' '2' 'Conflicts: real
+Multi-Arch: same'
+insertpackage 'unstable' 'real-provider' 'amd64,i386' '2' 'Provides: real-provider
+Conflicts: real-provider
+Multi-Arch: same'
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'virtual-provider' instead of 'virtual'
+Note, selecting 'virtual-provider:i386' instead of 'virtual:i386'
+The following NEW packages will be installed:
+ virtual-provider virtual-provider:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst virtual-provider (2 unstable [amd64])
+Inst virtual-provider:i386 (2 unstable [i386])
+Conf virtual-provider (2 unstable [amd64])
+Conf virtual-provider:i386 (2 unstable [i386])" aptget install virtual:* -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ real real:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst real (2 unstable [amd64])
+Inst real:i386 (2 unstable [i386])
+Conf real (2 unstable [amd64])
+Conf real:i386 (2 unstable [i386])' aptget install real:* -s
+
+# ensure that we are not confused by the provides
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ real-provider real-provider:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst real-provider (2 unstable [amd64])
+Inst real-provider:i386 (2 unstable [i386])
+Conf real-provider (2 unstable [amd64])
+Conf real-provider:i386 (2 unstable [i386])' aptget install real-provider:* -s
diff --git a/test/integration/test-crossgrades b/test/integration/test-crossgrades
new file mode 100755
index 0000000..6398e7e
--- /dev/null
+++ b/test/integration/test-crossgrades
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386' 'amd64' 'armel'
+configdpkgnoopchroot
+
+buildsimplenativepackage 'unrelated' 'amd64' '1' 'stable'
+buildsimplenativepackage 'crosser' 'i386,armel' '1' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'crosser' 'amd64' '2' 'unstable'
+buildsimplenativepackage 'crosser' 'i386,armel' '3' 'experimental' 'Multi-Arch: same'
+setupaptarchive
+
+singleinstance() {
+ testsuccess apt install crosser:i386=1 unrelated:amd64 -y --planner $1
+ testdpkginstalled 'crosser:i386' 'unrelated'
+
+ testsuccess apt install crosser:amd64 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testfailure grep -- '--remove.*crosser.*' crosser.output
+ testfailure grep -- '--purge' crosser.output
+ testsuccess apt install crosser:amd64 unrelated:amd64- -y -o Dpkg::Use-Pty=0 --purge -o Debug::pkgDPkgProgressReporting=1 --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'unrelated'
+ testdpkginstalled 'crosser:amd64'
+
+ testsuccess apt install crosser:armel=3 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:armel=3 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:armel'
+
+ testsuccess apt install crosser=1 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser=1 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ testdpkgnotinstalled 'crosser:armel' 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:i386'
+
+ testsuccess apt purge crosser:i386 -y --planner $1
+ testdpkgnotinstalled 'crosser:i386'
+}
+singleinstance 'internal'
+singleinstance 'apt'
+
+multiinstance() {
+ testsuccess apt install crosser:i386=1 crosser:armel=1 unrelated:amd64 -y --planner $1
+ testdpkginstalled 'crosser:i386' 'crosser:armel' 'unrelated'
+
+ testsuccess apt install crosser:amd64 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:amd64 unrelated:amd64- -y -o Dpkg::Use-Pty=0 --purge -o Debug::pkgDPkgProgressReporting=1 --planner $1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:armel' 'unrelated'
+ testdpkginstalled 'crosser:amd64'
+
+ testsuccess apt install crosser:i386 crosser:armel -t experimental -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:i386 crosser:armel -t experimental -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1
+ testdpkgnotinstalled 'crosser:amd64' 'unrelated'
+ testdpkginstalled 'crosser:i386' 'crosser:armel'
+
+ testsuccess apt install crosser:i386- crosser:armel=1 -y -o Debug::pkgDpkgPm=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ cp -a rootdir/tmp/testsuccess.output crosser.output
+ testsuccess grep -- '--remove.*crosser.*' crosser.output
+ testsuccess grep -- '--purge' crosser.output
+ testsuccess apt install crosser:i386- crosser:armel=1 -y -o Debug::pkgDPkgProgressReporting=1 -o Dpkg::Use-Pty=0 --purge --planner $1 --allow-downgrades
+ testdpkgnotinstalled 'crosser:amd64' 'crosser:i386' 'unrelated'
+ testdpkginstalled 'crosser:armel'
+
+ testsuccess apt purge crosser:armel -y --planner $1 -o Debug::pkgDPkgProgressReporting=1
+ testdpkgnotinstalled 'crosser:i386' 'crosser:armel' 'crosser:amd64' 'unrelated'
+}
+multiinstance 'internal'
diff --git a/test/integration/test-cve-2013-1051-InRelease-parsing b/test/integration/test-cve-2013-1051-InRelease-parsing
new file mode 100755
index 0000000..1f0cbda
--- /dev/null
+++ b/test/integration/test-cve-2013-1051-InRelease-parsing
@@ -0,0 +1,71 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'stable' 'good-pkg' 'all' '1.0'
+
+setupaptarchive
+
+changetowebserver
+ARCHIVE="http://localhost:${APTHTTPPORT}"
+msgtest 'Initial apt-get update should work with' 'InRelease'
+testsuccess --nomsg aptget update
+
+# check that the setup is correct
+testsuccessequal "good-pkg:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 ${ARCHIVE} stable/main all Packages" aptcache policy good-pkg
+
+# now exchange to the Packages file, note that this could be
+# done via MITM too
+insertpackage 'stable' 'bad-mitm' 'all' '1.0'
+
+# this builds compressed files and a new (unsigned) Release
+buildaptarchivefromfiles '+1hour'
+
+# add a space into the BEGIN PGP SIGNATURE PART/END PGP SIGNATURE part
+# to trick apt - this is still legal to gpg(v)
+sed -i '/^-----BEGIN PGP SIGNATURE-----/,/^-----END PGP SIGNATURE-----/ s/^$/ /g' aptarchive/dists/stable/InRelease
+
+# we append the (evil unsigned) Release file to the (good signed) InRelease
+cat aptarchive/dists/stable/Release >> aptarchive/dists/stable/InRelease
+touch -d '+1hour' aptarchive/dists/stable/InRelease
+
+# ensure the update doesn't load bad data as good data
+# Note that we will pick up the InRelease itself as we download no other
+# indexes which would trigger a hashsum mismatch, but we ignore the 'bad'
+# part of the InRelease
+listcurrentlistsdirectory | sed '/_InRelease/ d' > listsdir.lst
+msgtest 'apt-get update should ignore unsigned data in the' 'InRelease'
+testwarningequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat -c%s aptarchive/dists/stable/InRelease) B]
+Err:1 http://localhost:${APTHTTPPORT} stable InRelease
+ Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed
+Reading package lists...
+W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://localhost:${APTHTTPPORT} stable InRelease: Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed
+W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/stable/InRelease Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed
+W: Some index files failed to download. They have been ignored, or old ones used instead." --nomsg aptget update
+testfileequal './listsdir.lst' "$(listcurrentlistsdirectory | sed '/_InRelease/ d')"
+
+# ensure there is no package
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package bad-mitm' aptget install bad-mitm -s
+
+# and verify that its not picked up
+testsuccessequal 'N: Unable to locate package bad-mitm' aptcache policy bad-mitm
+
+# and that the right one is used
+testsuccessequal "good-pkg:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 ${ARCHIVE} stable/main all Packages" aptcache policy good-pkg
diff --git a/test/integration/test-cve-2018-0501-mirror-alternatives b/test/integration/test-cve-2018-0501-mirror-alternatives
new file mode 100755
index 0000000..f154547
--- /dev/null
+++ b/test/integration/test-cve-2018-0501-mirror-alternatives
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+setupaptarchive --no-update
+changetohttpswebserver
+
+# User has mirror method configured in apt >= 1.6~alpha6 &
+# Eve has enough MITM control over the network to
+# a) have the mirror file include at least two mirrors and
+# b) can send her bad InRelease files for both mirrors
+sed -i -e 's# https:# mirror+https:#' -e 's#/ stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/*-stable-*
+echo "http://localhost:${APTHTTPPORT}
+https://localhost:${APTHTTPSPORT}" > aptarchive/mirror.txt
+
+# real Eve would do something worse…
+sed -i "/^Date: / a\
+Evil: yes" $(find ./aptarchive -name 'Release' -o -name 'InRelease')
+
+# progress display shows that the InRelease file was bad,
+# but it is used anyhow as the bad file causes a fallback to
+# a request to the second mirror which completes successful
+# causing apt to believe the verify completed successfully…
+testfailure apt update
+testfailure grep '^Evil:' rootdir/var/lib/apt/lists/*Release
+testfailure apt show foo
diff --git a/test/integration/test-cve-2019-3462-Release.gpg-payload b/test/integration/test-cve-2019-3462-Release.gpg-payload
new file mode 100755
index 0000000..fd0f967
--- /dev/null
+++ b/test/integration/test-cve-2019-3462-Release.gpg-payload
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+# This is not covered by the CVE and harmless by itself, but used in
+# the exploit and while harmless it is also pointless to allow it
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+export APT_DONT_SIGN='InRelease'
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive
+rm -rf rootdir/var/lib/apt/lists
+
+verify() {
+ testfailure apt update
+ testsuccess grep '^ Detached signature file' rootdir/tmp/testfailure.output
+ testfailure apt show foo
+}
+
+msgmsg 'Payload after detached signature'
+find aptarchive -name 'Release.gpg' | while read FILE; do
+ cp -a "$FILE" "${FILE}.bak"
+ echo "evil payload" >> "$FILE"
+done
+verify
+
+msgmsg 'Payload in-between detached signatures'
+find aptarchive -name 'Release.gpg' | while read FILE; do
+ cat "${FILE}.bak" >> "$FILE"
+done
+verify
+
+msgmsg 'Payload before detached signature'
+find aptarchive -name 'Release.gpg' | while read FILE; do
+ echo "evil payload" > "$FILE"
+ cat "${FILE}.bak" >> "$FILE"
+done
+verify
diff --git a/test/integration/test-cve-2019-3462-dequote-injection b/test/integration/test-cve-2019-3462-dequote-injection
new file mode 100755
index 0000000..23cef4f
--- /dev/null
+++ b/test/integration/test-cve-2019-3462-dequote-injection
@@ -0,0 +1,80 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+# build two uncompressed packages
+buildsimplenativepackage 'alpha' 'all' '1' 'unstable' '' '' 'section' 'optional' '' 'none'
+
+setupaptarchive --no-update
+ORIGINAL_SHA256=$(sha256sum aptarchive/pool/alpha_1_all.deb | awk '{print $1}')
+ORIGINAL_SIZE=$(wc -c aptarchive/pool/alpha_1_all.deb | awk '{print $1}')
+SHA256="DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF"
+changetowebserver
+
+runwithbaduri() {
+ local BADURI="$1"
+ local ERRMSG="$2"
+ shift 2
+ local BADFETCH="http://localhost:${APTHTTPPORT}/pool/alpha_1_all.deb"
+ if [ "$#" = '0' ]; then
+ BADFETCH="http://localhost:${APTHTTPPORT}/pool/$BADURI"
+ fi
+ webserverconfig aptwebserver::redirect::replace::alpha_1_all.deb "$BADURI"
+
+ testsuccess apt update -o debug::http=1 -o debug::pkgacquire::worker=1 "$@"
+
+ testfailureequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ alpha
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 20.7 kB of archives.
+After this operation, 11.3 kB of additional disk space will be used.
+Err:1 http://localhost:${APTHTTPPORT} unstable/main all alpha all 1
+ $ERRMSG
+E: Failed to fetch $BADFETCH $ERRMSG
+E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?" aptget install alpha "$@"
+}
+runwithbaduri "beeta_1_all.deb%0a%0a201%20URI%20Done%0aURI:%20http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb%0aFilename:%20${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt/archives/partial/alpha_1_all.deb%0aSize:%2020672%0aLast-Modified:%20Fri,%2018%20Jan%202019%2009:52:02%20+0000%0aSHA256-Hash:%20${SHA256}%0aChecksum-FileSize-Hash:%2012345%0a%0a%0a" 'SECURITY: URL redirect target contains control characters, rejecting.' -o Acquire::Send-URI-Encoded=false
+rm -rf rootdir/var/lib/apt/lists
+runwithbaduri "beeta_1_all.deb%250a%250a201%2520URI%2520Done%250aURI:%2520http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb%250aFilename:%2520${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt/archives/partial/alpha_1_all.deb%250aSize:%252020672%250aLast-Modified:%2520Fri,%252018%2520Jan%25202019%252009:52:02%2520+0000%250aSHA256-Hash:%2520${SHA256}%250aChecksum-FileSize-Hash:%252012345%250a%250a%0a" 'SECURITY: URL redirect target contains control characters, rejecting.' -o Acquire::Send-URI-Encoded=false
+
+# without de- and reencoding, we just trigger an error in our webserver as it refuses URIs containing '//'
+rm -rf rootdir/var/lib/apt/lists
+runwithbaduri "beeta_1_all.deb%0a%0a201%20URI%20Done%0aURI:%20http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb%0aFilename:%20${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt/archives/partial/alpha_1_all.deb%0aSize:%2020672%0aLast-Modified:%20Fri,%2018%20Jan%202019%2009:52:02%20+0000%0aSHA256-Hash:%20${SHA256}%0aChecksum-FileSize-Hash:%2012345%0a%0a%0a" '400 Bad Request'
+rm -rf rootdir/var/lib/apt/lists
+runwithbaduri "beeta_1_all.deb%250a%250a201%2520URI%2520Done%250aURI:%2520http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb%250aFilename:%2520${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt/archives/partial/alpha_1_all.deb%250aSize:%252020672%250aLast-Modified:%2520Fri,%252018%2520Jan%25202019%252009:52:02%2520+0000%250aSHA256-Hash:%2520${SHA256}%250aChecksum-FileSize-Hash:%252012345%250a%250a%0a" '400 Bad Request'
+
+# For reference, the following is the original reproducer/bug. It has
+# been disabled using exit 0, as it will fail in fixed versions.
+exit 0
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ alpha
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 20.7 kB of archives.
+After this operation, 11.3 kB of additional disk space will be used.
+Err:1 http://localhost:${APTHTTPPORT} unstable/main all alpha all 1
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:$ORIGINAL_SHA256
+ - Filesize:$ORIGINAL_SIZE [weak]
+ Hashes of received file:
+ - SHA256:DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF
+ - Filesize:12345 [weak]
+ Last modification reported: Fri, 18 Jan 2019 09:52:02 +0000
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:$ORIGINAL_SHA256
+ - Filesize:$ORIGINAL_SIZE [weak]
+ Hashes of received file:
+ - SHA256:DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF
+ - Filesize:12345 [weak]
+ Last modification reported: Fri, 18 Jan 2019 09:52:02 +0000
+E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?" aptget install alpha
diff --git a/test/integration/test-cve-2020-27350 b/test/integration/test-cve-2020-27350
new file mode 100755
index 0000000..a32bf95
--- /dev/null
+++ b/test/integration/test-cve-2020-27350
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 crash crash.deb
+testequal "E: Invalid archive member header" runapt ${APTTESTHELPERSBINDIR}/testdeb ./crash.deb
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 loop loop.deb
+testequal "E: Invalid archive member header" runapt ${APTTESTHELPERSBINDIR}/testdeb ./loop.deb
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 long-name long-name.deb
+testequal "E: Long name to large: 67108865 bytes > 1048576 bytes" runapt ${APTTESTHELPERSBINDIR}/extract-control long-name.deb control
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 long-link long-link.deb
+testequal "E: Long name to large: 67108865 bytes > 1048576 bytes" runapt ${APTTESTHELPERSBINDIR}/extract-control long-link.deb control
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 long-control long-control.deb
+testequal "E: Control file too large: 67108865 > 67108864 bytes" runapt ${APTTESTHELPERSBINDIR}/extract-control long-control.deb control
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 too-long-control too-long-control.deb
+testequal "E: Tar member too large: $((128 * 1024 * 1024 * 1024 + 1)) > $((128 * 1024 * 1024 * 1024)) bytes" runapt ${APTTESTHELPERSBINDIR}/extract-control too-long-control.deb control
diff --git a/test/integration/test-different-methods-for-same-source b/test/integration/test-different-methods-for-same-source
new file mode 100755
index 0000000..791a84c
--- /dev/null
+++ b/test/integration/test-different-methods-for-same-source
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'stable' 'foo' 'all' '1'
+insertsource 'stable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+changetowebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
+
+echo 'Dir::Bin::Methods::http-ng "http";' > rootdir/etc/apt/apt.conf.d/99add-http-ng-method
+sed -i -e 's# http:# http-ng:#' $(find rootdir/etc/apt/sources.list.d -name '*-deb-src.list')
+
+testsuccess apt update -o Debug::Acquire::http-ng=1
+cp rootdir/tmp/testsuccess.output update.log
+# all requests are folded into the first Release file
+testsuccess grep ' http-ng://' update.log
+testfailure grep ' http://' update.log
+# see if method-specific debug was enabled
+testsuccess grep '^Answer for: http-ng:' update.log
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e "s#:${APTHTTPPORT}/#:${APTHTTPPORT}/redirectme#" rootdir/etc/apt/sources.list.d/*
+testsuccess apt update -o Debug::Acquire::http-ng=1
+cp rootdir/tmp/testsuccess.output update.log
+# all requests are folded into the first Release file
+testsuccess grep ' http-ng://' update.log
+testfailure grep '^[^L].* http://' update.log
+# see if method-specific debug was enabled
+testsuccess grep '^Answer for: http-ng:' update.log
diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages
new file mode 100755
index 0000000..f3fed04
--- /dev/null
+++ b/test/integration/test-disappearing-packages
@@ -0,0 +1,92 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'old-pkg' 'amd64' '1' 'stable'
+
+setupsimplenativepackage 'new-pkg' 'amd64' '2' 'unstable' 'Provides: old-pkg
+Replaces: old-pkg
+Conflicts: old-pkg (<< 2)'
+BUILDDIR='incoming/new-pkg-2'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/new-pkg.links"
+buildpackage "$BUILDDIR" 'unstable' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'old-pkg' 'all' '2' 'unstable' 'Depends: new-pkg'
+BUILDDIR='incoming/old-pkg-2'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/old-pkg.links"
+echo "
+override_dh_link:
+ rm -rf debian/old-pkg/usr/share/doc/old-pkg/
+ dh_link" >> "${BUILDDIR}/debian/rules"
+buildpackage "$BUILDDIR" 'unstable' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'super-new-pkg' 'i386' '3' 'experimental' 'Provides: new-pkg
+Replaces: new-pkg
+Conflicts: new-pkg (<< 3)'
+BUILDDIR='incoming/super-new-pkg-3'
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/super-new-pkg.links"
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/new-pkg' >> "${BUILDDIR}/debian/super-new-pkg.links"
+buildpackage "$BUILDDIR" 'experimental' 'main'
+rm -rf "$BUILDDIR"
+
+setupsimplenativepackage 'new-pkg' 'all' '3' 'experimental' 'Depends: super-new-pkg'
+BUILDDIR='incoming/new-pkg-3'
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/new-pkg.links"
+echo '/usr/share/doc/super-new-pkg /usr/share/doc/new-pkg' >> "${BUILDDIR}/debian/new-pkg.links"
+echo "
+override_dh_link:
+ rm -rf debian/new-pkg/usr/share/doc/new-pkg/
+ dh_link" >> "${BUILDDIR}/debian/rules"
+buildpackage "$BUILDDIR" 'experimental' 'main'
+rm -rf "$BUILDDIR"
+
+setupaptarchive
+
+msgmsg 'Let a package disappear' 'old-pkg'
+testsuccess aptget install old-pkg=1 --trivial-only
+testmarkedauto # old-pkg is manual installed
+testsuccess aptget dist-upgrade -y
+testdpkgnotinstalled old-pkg
+cp rootdir/tmp/testsuccess.output disappear.output
+testsuccessequal 'The following package disappeared from your system as
+all files have been overwritten by other packages:
+ old-pkg
+Note: This is done automatically and on purpose by dpkg.' tail -n 4 disappear.output
+
+sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -e "s#:$(getarchitecture 'native') #:native #"
+if [ -n "$SUDO_USER" ] && [ "$(id -u "$SUDO_USER")" -gt 0 ]; then
+ testfileequal 'rootdir/var/log/apt/history.log' "
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Install: old-pkg:native (1)
+
+Requested-By: $SUDO_USER ($(id -u "$SUDO_USER"))
+Install: new-pkg:native (2, automatic)
+Upgrade: old-pkg:native (1, 2)
+Disappeared: old-pkg (1)"
+else
+ testfileequal 'rootdir/var/log/apt/history.log' '
+Install: old-pkg:native (1)
+
+Install: new-pkg:native (2, automatic)
+Upgrade: old-pkg:native (1, 2)
+Disappeared: old-pkg (1)'
+fi
+
+testmarkedauto # new-pkg should have get the manual flag from old-pkg
+
+msgmsg 'Let a package disappear which let the previous disappear' 'new-pkg'
+testsuccess aptget dist-upgrade -y -t experimental
+testdpkgnotinstalled new-pkg
+cp rootdir/tmp/testsuccess.output disappear.output
+testsuccessequal 'The following package disappeared from your system as
+all files have been overwritten by other packages:
+ new-pkg
+Note: This is done automatically and on purpose by dpkg.' tail -n 4 disappear.output
+
+testmarkedauto
diff --git a/test/integration/test-dont-forget-conflicts-via-unknown-architectures b/test/integration/test-dont-forget-conflicts-via-unknown-architectures
new file mode 100755
index 0000000..07d5d8f
--- /dev/null
+++ b/test/integration/test-dont-forget-conflicts-via-unknown-architectures
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'arm64'
+configdpkgnoopchroot
+
+buildsimplenativepackage 'pkga' 'arm64' '1' 'stable'
+buildsimplenativepackage 'pkgb' 'arm64' '1' 'stable'
+
+cd aptarchive
+aptftparchive packages ../incoming > Packages
+cd ..
+generatereleasefiles
+signreleasefiles
+setupflataptarchive
+testsuccess apt update
+
+testsuccess apt install pkga pkgb -y
+testdpkginstalled 'pkga' 'pkgb'
+
+rm -rf aptarchive incoming
+
+buildsimplenativepackage 'pkga' 'arm64,amd64' '2' 'unstable' 'Provides: pkgb
+Breaks: pkgb (<< 1+)
+Replaces: pkgb (<< 1+)'
+
+mkdir aptarchive
+cd aptarchive
+aptftparchive packages ../incoming > Packages
+cd ..
+generatereleasefiles
+signreleasefiles
+setupflataptarchive
+testsuccess apt update
+
+#apt upgrade pkga -o Debug::pkgDpkgPm=1 -y -o Dpkg::use-pty=0
+rm -f rootdir/var/cache/apt/*.bin
+testsuccess apt upgrade pkga -y
+testdpkginstalled 'pkga'
+testdpkgnotinstalled 'pkgb'
diff --git a/test/integration/test-dpkg-assert-multi-arch b/test/integration/test-dpkg-assert-multi-arch
new file mode 100755
index 0000000..a99f320
--- /dev/null
+++ b/test/integration/test-dpkg-assert-multi-arch
@@ -0,0 +1,104 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'native-pkg' 'amd64' '1.0' 'stable'
+buildsimplenativepackage 'foreign-pkg' 'i386' '0.5' 'stable' 'Multi-Arch: foreign'
+buildsimplenativepackage 'same-lib' 'amd64,i386' '0.5' 'stable' 'Multi-Arch: same'
+buildsimplenativepackage 'all-pkg' 'all' '2.0' 'stable'
+buildsimplenativepackage 'all-foreign-pkg' 'all' '2.0' 'stable' 'Multi-Arch: foreign'
+
+setupaptarchive
+
+testqualifier() {
+ msgtest 'Test with' $1 'for correct qualifier mode' $2
+ #aptget install $1 -qq -o Debug::pkgDPkgPM=1 || true
+ aptget install $1 -qq -o Debug::pkgDPkgPM=1 -o Dpkg::ExplicitLastConfigure=1 -o PackageManager::Configure=all > testqualifier.output 2>&1 || true
+ GIVEN="$(grep -v -- '--unpack' testqualifier.output | sed -ne 's/^.*--[rpc][^ ]* \([^ ]*\).*$/\1/p')"
+ if [ "$GIVEN" = "$2" ]; then
+ msgpass
+ else
+ cat >&2 testqualifier.output
+ echo >&2
+ echo >&2 "$GIVEN"
+ msgfail
+ fi
+}
+
+msgmsg 'non-multiarch or "ubuntus" old multiarchified dpkg'
+echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
+cat > ./dpkg-wrapper <<EOF
+#! /bin/sh
+if echo "\$*" | grep -q -- "--assert-multi-arch"; then
+ echo >&2 'dpkg: Fehler: unbekannte Option --assert-multi-arch'
+ echo >&1 'dpkg: Info: unbekannte Option --assert-multi-arch'
+ exit 2
+fi
+exec "\$@"
+EOF
+chmod +x ./dpkg-wrapper
+
+testqualifier 'native-pkg' 'native-pkg'
+testqualifier 'native-pkg:amd64' 'native-pkg'
+testqualifier 'foreign-pkg' 'foreign-pkg:i386'
+testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
+testqualifier 'same-lib' 'same-lib'
+testqualifier 'same-lib:amd64' 'same-lib'
+testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg' 'all-pkg'
+testqualifier 'all-pkg:amd64' 'all-pkg'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg'
+insertinstalledpackage 'always-all-pkg' 'all' '1.0'
+insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg-' 'all-pkg'
+testqualifier 'all-foreign-pkg-' 'all-foreign-pkg'
+testqualifier 'always-all-pkg-' 'always-all-pkg'
+testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg'
+
+msgmsg 'multiarch dpkg (new interface version)'
+rm rootdir/var/lib/dpkg/status
+touch rootdir/var/lib/dpkg/status
+echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper
+cat > ./dpkg-wrapper <<EOF
+#! /bin/sh
+if echo "\$*" | grep -q -- "--assert-multi-arch"; then
+ exit 0
+fi
+exec "\$@"
+EOF
+chmod +x ./dpkg-wrapper
+
+testqualifier 'native-pkg' 'native-pkg:amd64'
+testqualifier 'native-pkg:amd64' 'native-pkg:amd64'
+testqualifier 'foreign-pkg' 'foreign-pkg:i386'
+testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386'
+testqualifier 'same-lib' 'same-lib:amd64'
+testqualifier 'same-lib:amd64' 'same-lib:amd64'
+testqualifier 'same-lib:i386' 'same-lib:i386'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'
+insertinstalledpackage 'all-pkg' 'amd64' '1.0'
+insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg' 'all-pkg:all'
+testqualifier 'all-pkg:amd64' 'all-pkg:all'
+testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all'
+testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all'
+insertinstalledpackage 'always-all-pkg' 'all' '1.0'
+insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign'
+testqualifier 'all-pkg-' 'all-pkg:amd64'
+testqualifier 'all-foreign-pkg-' 'all-foreign-pkg:amd64'
+testqualifier 'always-all-pkg-' 'always-all-pkg:all'
+testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg:all'
diff --git a/test/integration/test-dpkg-i-apt-install-fix-broken b/test/integration/test-dpkg-i-apt-install-fix-broken
new file mode 100755
index 0000000..0b75b5f
--- /dev/null
+++ b/test/integration/test-dpkg-i-apt-install-fix-broken
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'autopkgtest-satdep' 'amd64' '1' 'stable' 'Depends: debhelper-compat (= 12)'
+buildsimplenativepackage 'debhelper' 'all' '1' 'stable' 'Provides: debhelper-compat (= 12)'
+
+setupaptarchive
+
+testfailure dpkg -i incoming/autopkgtest-*.deb
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... MarkInstall autopkgtest-satdep:amd64 < 1 @iU K Nb Ib > FU=0
+ MarkInstall debhelper:amd64 < none -> 1 @un uN > FU=0
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+ Done
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ debhelper
+The following NEW packages will be installed:
+ debhelper
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst debhelper (1 stable [all])
+Conf debhelper (1 stable [all])
+Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1
diff --git a/test/integration/test-dpkg-normalization b/test/integration/test-dpkg-normalization
new file mode 100755
index 0000000..cfcb90d
--- /dev/null
+++ b/test/integration/test-dpkg-normalization
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)'
+insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)'
+insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (>= 1.0)'
+insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (> 1.0)'
+insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 0:1.0.0)'
+insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 1.0.0)'
+insertpackage 'unstable' 'zero-epoch' 'i386' '0:1.0' 'Depends: spaces (< 0:1.0.0)'
+
+setupaptarchive
+
+testsuccessequal "spaces:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy spaces
+
+testsuccessequal "lessequal:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy lessequal
+
+
+
+testsuccessequal "zero-epoch:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 500
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
+ 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy zero-epoch
diff --git a/test/integration/test-dpkg-path b/test/integration/test-dpkg-path
new file mode 100755
index 0000000..b17b594
--- /dev/null
+++ b/test/integration/test-dpkg-path
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+configdpkgnoopchroot
+
+# create a bunch of test pkgs
+createtestpkg() {
+ setupsimplenativepackage "testpkg-$1" 'native' '1.0' 'unstable'
+ BUILDDIR="incoming/testpkg-$1-1.0"
+ echo '#!/bin/sh
+echo PATH=$PATH' > "${BUILDDIR}/debian/preinst"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+}
+
+createtestpkg 'one'
+createtestpkg 'two'
+
+setupaptarchive
+
+
+# Inherit from environment
+testsuccess aptget install testpkg-one -y -o DPkg::Path=""
+cp rootdir/tmp/testsuccess.output apt.log
+testsuccess grep "PATH=$PATH" apt.log
+
+# Set a custom value
+testsuccess aptget install testpkg-two -y -o DPkg::Path="foobar:$PATH"
+cp rootdir/tmp/testsuccess.output apt.log
+testsuccess grep "PATH=foobar:$PATH" apt.log
diff --git a/test/integration/test-dpkg-protected b/test/integration/test-dpkg-protected
new file mode 100755
index 0000000..3d0994d
--- /dev/null
+++ b/test/integration/test-dpkg-protected
@@ -0,0 +1,20 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'protected-package' 'native' '1' 'Protected: yes'
+
+setupaptarchive
+
+
+if dpkg --assert-protected-field 2>/dev/null; then
+ testsuccess aptget remove protected-package "$@" -o Debug::pkgDpkgPm=1 -y --allow-remove-essential
+ cp rootdir/tmp/testsuccess.output rootdir/tmp/output
+ testsuccess grep -- '--force-remove-protected' rootdir/tmp/output
+else
+ msgskip "dpkg does not support protected field"
+fi
diff --git a/test/integration/test-essential-force-loopbreak b/test/integration/test-essential-force-loopbreak
new file mode 100755
index 0000000..086627e
--- /dev/null
+++ b/test/integration/test-essential-force-loopbreak
@@ -0,0 +1,122 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+insertinstalledpackage 'sysvinit' 'native' '1' 'Essential: yes'
+
+buildsimplenativepackage 'sysvinit' 'native' '2' 'sid' 'Pre-Depends: sysvinit-core | systemd-sysv
+Essential: yes'
+buildsimplenativepackage 'sysvinit-core' 'native' '2' 'sid'
+
+buildsimplenativepackage 'systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: sysvinit (<< 2)
+Breaks: sysvinit-core'
+
+buildsimplenativepackage 'systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: sysvinit (<< 2), sysvinit-core'
+
+# one more time, with Protected
+insertinstalledpackage 'protected-sysvinit' 'native' '1' 'Protected: yes'
+
+buildsimplenativepackage 'protected-sysvinit' 'native' '2' 'sid' 'Pre-Depends: protected-sysvinit-core | protected-systemd-sysv
+Protected: yes'
+buildsimplenativepackage 'protected-sysvinit-core' 'native' '2' 'sid'
+
+buildsimplenativepackage 'protected-systemd-sysv' 'native' '2~conflict' 'sid-conflict' 'Conflicts: protected-sysvinit (<< 2)
+Breaks: protected-sysvinit-core'
+
+buildsimplenativepackage 'protected-systemd-sysv' 'native' '2~break' 'sid-break' 'Breaks: protected-sysvinit (<< 2), protected-sysvinit-core'
+
+
+setupaptarchive
+
+cp -a rootdir/var/lib/dpkg/status dpkg.status.backup
+
+testforcebreak() {
+ package="sid-$1"
+ prefix="$2"
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ rm -f rootdir/var/lib/apt/extended_states
+ testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ ${prefix}sysvinit
+The following NEW packages will be installed:
+ ${prefix}systemd-sysv
+The following packages will be upgraded:
+ ${prefix}sysvinit
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+E: This installation run will require temporarily removing the essential package ${prefix}sysvinit:$(getarchitecture 'native') due to a Conflicts/Pre-Depends loop. This is often bad, but if you really want to do it, activate the APT::Force-LoopBreak option.
+E: Internal Error, Could not early remove ${prefix}sysvinit:$(dpkg --print-architecture) (2)" aptget install ${prefix}systemd-sysv -t "$package" -s
+ # ensure that really nothing happens
+ testfailure aptget install ${prefix}systemd-sysv -y -t "$package"
+ testdpkginstalled "${prefix}sysvinit"
+ testdpkgnotinstalled "${prefix}systemd-sysv"
+
+ # with enough force however …
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ testsuccess aptget install ${prefix}systemd-sysv -y -t "$package" -o APT::Force-LoopBreak=1 -o Debug::pkgDpkgPm=1
+ cp rootdir/tmp/testsuccess.output apt.output
+ if [ "$prefix" = "protected-" ]; then
+ testsuccess grep -- "--force-remove-protected --remove ${prefix}sysvinit" apt.output
+ else
+ testsuccess grep -- "--force-remove-essential --remove ${prefix}sysvinit" apt.output
+ fi
+ testsuccess aptget install ${prefix}systemd-sysv -y -t "$package" -o APT::Force-LoopBreak=1
+ testdpkginstalled "${prefix}sysvinit" "${prefix}systemd-sysv"
+}
+
+testnoforcebreak() {
+ package="sid-$1"
+ prefix="$2"
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ rm -f rootdir/var/lib/apt/extended_states
+ testequalor2 "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ ${prefix}sysvinit
+The following NEW packages will be installed:
+ ${prefix}systemd-sysv
+The following packages will be upgraded:
+ ${prefix}sysvinit
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst ${prefix}systemd-sysv (2~$1 sid-$1 [$(getarchitecture 'native')]) [${prefix}systemd-sysv:$(getarchitecture 'native') on ${prefix}sysvinit:$(getarchitecture 'native')] []
+Conf ${prefix}systemd-sysv:$(getarchitecture 'native') broken
+ Breaks:${prefix}sysvinit:$(getarchitecture 'native')
+ []
+Inst ${prefix}sysvinit [1] (2 sid [$(getarchitecture 'native')])
+Conf ${prefix}sysvinit (2 sid [$(getarchitecture 'native')])
+E: Conf Broken ${prefix}systemd-sysv:$(getarchitecture 'native')" "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ ${prefix}sysvinit
+The following NEW packages will be installed:
+ ${prefix}systemd-sysv
+The following packages will be upgraded:
+ ${prefix}sysvinit
+1 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Remv ${prefix}sysvinit [1]
+Inst ${prefix}systemd-sysv (2~conflict sid-conflict [$(getarchitecture 'native')])
+Conf ${prefix}systemd-sysv (2~conflict sid-conflict [$(getarchitecture 'native')])
+Inst ${prefix}sysvinit [1] (2 sid [$(getarchitecture 'native')])
+Conf ${prefix}sysvinit (2 sid [$(getarchitecture 'native')])" aptget install ${prefix}systemd-sysv -t "sid-$1" -s
+
+ # we check with 'real' packages here as the simulation reports a 'Conf broken'
+ cp -a dpkg.status.backup rootdir/var/lib/dpkg/status
+ testsuccess aptget install ${prefix}systemd-sysv -y -t "$package" -o Debug::pkgDpkgPm=1
+ cp rootdir/tmp/testsuccess.output apt.output
+ testsuccess grep -- "--unpack --auto-deconfigure" apt.output
+ testfailure grep -- "--remove" apt.output
+ testfailure grep -- "--force-remove" apt.output
+ testsuccess aptget install ${prefix}systemd-sysv -y -t "$package"
+ testdpkginstalled "${prefix}sysvinit" "${prefix}systemd-sysv"
+}
+
+testforcebreak 'conflict'
+testnoforcebreak 'break'
+
+testforcebreak 'conflict' 'protected-'
+testnoforcebreak 'break' 'protected-'
diff --git a/test/integration/test-explore-or-groups-in-markinstall b/test/integration/test-explore-or-groups-in-markinstall
new file mode 100755
index 0000000..fe7e998
--- /dev/null
+++ b/test/integration/test-explore-or-groups-in-markinstall
@@ -0,0 +1,164 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'okay' 'all' '1'
+insertpackage 'unstable' 'upgrade' 'all' '2'
+insertpackage 'unstable' 'unneeded' 'all' '1'
+insertpackage 'unstable' 'unneeded2' 'all' '1' 'Depends: bad-level1'
+insertpackage 'unstable' 'later' 'all' '1'
+
+insertpackage 'unstable' 'bad-level0' 'all' '1' 'Depends: unneeded, unknown'
+insertpackage 'unstable' 'bad-level1' 'all' '1' 'Depends: bad-level0'
+insertpackage 'unstable' 'bad-upgrade-level0' 'all' '2' 'Depends: unneeded, unknown'
+insertpackage 'unstable' 'bad-upgrade-level1' 'all' '2' 'Depends: bad-upgrade-level0 (>= 2), unneeded2'
+insertpackage 'unstable' 'bad-conflict-level0' 'all' '1' 'Depends: unneeded
+Conflicts: bad-conflict-level2'
+insertpackage 'unstable' 'bad-conflict-level1' 'all' '1' 'Depends: bad-conflict-level0'
+insertpackage 'unstable' 'bad-conflict-level2' 'all' '1' 'Depends: bad-conflict-level1, unneeded2'
+
+insertinstalledpackage 'upgrade' 'all' '1'
+insertinstalledpackage 'bad-upgrade' 'all' '1'
+insertinstalledpackage 'bad-upgrade-level0' 'all' '1'
+insertinstalledpackage 'bad-upgrade-level1' 'all' '1'
+
+insertfoos() {
+ insertpackage 'unstable' "foo-${1}-level0" 'all' '1' "${2}: unknown | unknown | okay | later"
+ insertpackage 'unstable' "foo-${1}-level1" 'all' '1' "${2}: bad-level0 | bad-level0 | okay | later"
+ insertpackage 'unstable' "foo-${1}-level2" 'all' '1' "${2}: bad-level1 | bad-level1 | okay | later"
+
+ insertpackage 'unstable' "foo-${1}-upgrade-level0" 'all' '1' "${2}: bad-upgrade (>= 2) | okay | upgrade (>= 2) | later"
+ insertpackage 'unstable' "foo-${1}-upgrade-level1" 'all' '1' "${2}: bad-upgrade-level0 (>= 2) | bad-upgrade-level0 (>= 2) | bad-level0 | okay | upgrade (>= 2) | later"
+ insertpackage 'unstable' "foo-${1}-upgrade-level2" 'all' '1' "${2}: bad-upgrade-level1 (>= 2) | bad-upgrade-level1 (>= 2) | bad-level1 | okay | upgrade (>= 2) | later"
+
+ insertpackage 'unstable' "foo-${1}-conflict" 'all' '1' "${2}: unknown | bad-conflict-level2 | okay | later"
+}
+insertfoos 'd' 'Depends'
+insertfoos 'r' 'Recommends'
+
+setupaptarchive
+
+_testsuccessheadtailequal() {
+ local TYPE="$1"
+ shift
+ msggroup "testsuccess${TYPE}equal"
+ local HEADLINES="$1"
+ local CMP="$2"
+ shift 2
+ testsuccesswithglobalerror 'testsuccess' 'EW' "$@"
+ cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess${TYPE}equal.output"
+ testsuccessequal "$CMP" "${TYPE}" -n "$HEADLINES" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess${TYPE}equal.output"
+ msggroup
+}
+testsuccessheadequal() {
+ _testsuccessheadtailequal 'head' "$@"
+}
+testsuccesstailequal() {
+ _testsuccessheadtailequal 'tail' "$@"
+}
+checkfoos() {
+ msgmsg 'Install checks with foos dependency type' "$2"
+ for level in 0 1 2; do
+ testsuccessheadequal 7 "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ okay
+The following NEW packages will be installed:
+ foo-${1}-level${level} okay
+0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-level${level} -s
+ testsuccessheadequal 9 "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ upgrade
+The following NEW packages will be installed:
+ foo-${1}-upgrade-level${level}
+The following packages will be upgraded:
+ upgrade
+1 upgraded, 1 newly installed, 0 to remove and 2 not upgraded." apt install foo-${1}-upgrade-level${level} -s
+ done
+
+ testsuccessheadequal 7 "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ okay
+The following NEW packages will be installed:
+ foo-${1}-conflict okay
+0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-conflict -s
+}
+checkfoos 'd' 'Depends'
+checkfoos 'r' 'Recommends'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ foo-d-upgrade-level2 (1)
+The following packages have been kept back:
+ bad-upgrade-level0 (1 => 2)
+ bad-upgrade-level1 (1 => 2)
+The following packages will be upgraded:
+ upgrade (1 => 2)
+1 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst upgrade [1] (2 unstable [all])
+Inst foo-d-upgrade-level2 (1 unstable [all])
+Conf upgrade (2 unstable [all])
+Conf foo-d-upgrade-level2 (1 unstable [all])' apt full-upgrade foo-d-upgrade-level2 -sV
+
+TEST_WITH_APTITUDE=false
+msgtest 'Check if aptitude is available for additional tests'
+if dpkg-checkbuilddeps -d 'aptitude' /dev/null >/dev/null 2>&1; then
+ TEST_WITH_APTITUDE=true
+ # we don't document aptitude config options
+ sed -i -e '/^#x-apt-configure-index/ d' "$(getaptconfig)"
+ msgpass
+else
+ msgskip 'not installed'
+fi
+
+if $TEST_WITH_APTITUDE; then
+ OKAYAPTITUDE='0 packages upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Need to get 0 B/84 B of archives. After unpacking 86.0 kB will be used.
+Would download/install/remove packages.'
+ testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-d-level2 -sy
+ testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-level2 -sy
+ testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-d-conflict -sy
+ testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-conflict -sy
+fi
+
+BADSOLVETEXT='Reading package lists...
+Building dependency tree...
+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:
+'
+
+testfailureequal "$BADSOLVETEXT
+The following packages have unmet dependencies:
+ bad-level0 : Depends: unknown but it is not installable
+ bad-upgrade-level0 : Depends: unknown but it is not installable
+E: Unable to correct problems, you have held broken packages." apt install bad-upgrade-level1 -s
+testfailureequal "$BADSOLVETEXT
+The following packages have unmet dependencies:
+ bad-conflict-level0 : Conflicts: bad-conflict-level2 but 1 is to be installed
+ bad-level0 : Depends: unknown but it is not installable
+E: Unable to correct problems, you have held broken packages." apt install bad-conflict-level2 -s
+
+if $TEST_WITH_APTITUDE; then
+ testsuccesstailequal 6 'The following packages have been kept back:
+ bad-upgrade-level1
+No packages will be installed, upgraded, or removed.
+0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Need to get 0 B of archives. After unpacking 0 B will be used.
+Would download/install/remove packages.' aptitude install bad-upgrade-level1 -sy
+ # aptitude does not show the kept back message in this case…
+ testsuccesstailequal 4 'No packages will be installed, upgraded, or removed.
+0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Need to get 0 B of archives. After unpacking 0 B will be used.
+Would download/install/remove packages.' aptitude install bad-conflict-level2 -sy
+fi
diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol
new file mode 100755
index 0000000..485a770
--- /dev/null
+++ b/test/integration/test-external-dependency-solver-protocol
@@ -0,0 +1,319 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'cool' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'somestuff' 'all' '1' 'Depends: cool, stuff'
+
+insertpackage 'unstable' 'cool' 'all' '2' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'stuff' 'all' '2' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'coolstuff' 'i386,amd64' '2' 'Depends: cool, stuff'
+insertpackage 'unstable' 'awesome' 'all' '2' 'Multi-Arch: foreign
+Conflicts: badstuff'
+insertpackage 'unstable' 'badstuff' 'all' '2' 'Multi-Arch: foreign
+Conflicts: awesome'
+insertpackage 'unstable' 'awesomecoolstuff' 'i386' '2' 'Depends: coolstuff, awesome'
+
+insertpackage 'experimental' 'cool' 'all' '3' 'Multi-Arch: foreign'
+insertpackage 'experimental' 'stuff' 'all' '3' 'Multi-Arch: foreign'
+insertpackage 'experimental' 'coolstuff' 'i386,amd64' '3' 'Depends: cool, stuff'
+
+setupaptarchive
+
+testsuccess aptget install --solver apt coolstuff -s
+testempty find . -name 'edsp.last.*'
+echo 'Dir::Log::Solver "edsp.last.xz";' > rootdir/etc/apt/apt.conf.d/log-edsp.conf
+
+testfailure aptget install --solver dump coolstuff -s
+testsuccess grep 'ERR_NO_FILENAME' rootdir/tmp/testfailure.output
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+export APT_EDSP_DUMP_FILENAME="/nonexistent/apt/edsp.dump"
+testfailure aptget install --solver dump coolstuff -s
+testsuccess grep 'ERR_CREATE_FILE' rootdir/tmp/testfailure.output
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.edsp"
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The solver encountered an error of type: ERR_JUST_DUMPING
+The following information might help you to understand what is wrong:
+I am too dumb, i can just dump!
+Please use one of my friends instead!
+
+E: External solver failed with: I am too dumb, i can just dump!' aptget install --solver dump coolstuff -s
+testfailure test -s rootdir/var/log/apt/edsp.last.xz
+testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (2 unstable [amd64])
+Conf coolstuff (2 unstable [amd64])' aptget install --solver apt coolstuff -s
+testsuccess test -s rootdir/var/log/apt/edsp.last.xz
+sed -i -e 's#^Solver: dump$#Solver: apt#' "$APT_EDSP_DUMP_FILENAME"
+testequal "$(cat "$APT_EDSP_DUMP_FILENAME")
+" apthelper cat-file rootdir/var/log/apt/edsp.last.xz
+cp rootdir/var/log/apt/edsp.last.xz rootdir/var/log/apt/edsp.last.xz.1
+rm -f "$APT_EDSP_DUMP_FILENAME"
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff -s -t experimental
+testfailure cmp rootdir/var/log/apt/edsp.last.xz rootdir/var/log/apt/edsp.last.xz.1
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '3' (experimental [amd64]) for 'coolstuff'
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])" aptget install --solver apt coolstuff/experimental -sq=0
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following NEW packages will be installed:
+ coolstuff
+0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst coolstuff (3 experimental [amd64])
+Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff=3 -sq=0
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following packages will be REMOVED:
+ somestuff
+0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
+Remv somestuff [1]' aptget autoremove --solver apt somestuff -s
+testsuccess aptmark auto cool stuff
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following packages will be REMOVED:
+ cool somestuff stuff
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv somestuff [1]
+Remv cool [1]
+Remv stuff [1]' aptget autoremove --solver apt somestuff -s
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following package was automatically installed and is no longer required:
+ stuff
+Use '$AUTOREMOVE' to remove it.
+The following packages will be REMOVED:
+ cool* somestuff*
+0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded.
+Purg somestuff [1]
+Purg cool [1]" aptget purge --solver apt cool -s
+
+testsuccess aptget install awesomecoolstuff:i386 -s
+testsuccess aptget install --solver apt awesomecoolstuff:i386 -s
+
+rm -f "$APT_EDSP_DUMP_FILENAME"
+testfailure aptget install --solver dump awesomecoolstuff:i386 -s
+testsuccess test -s "$APT_EDSP_DUMP_FILENAME"
+testequal 'Install: awesomecoolstuff:i386' grep :i386 "$APT_EDSP_DUMP_FILENAME"
+testfailure grep -e ':amd64' -e 'Architecture: any' "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptget dist-upgrade -s
+testsuccess aptget dist-upgrade -s --solver apt
+
+testsuccess aptget upgrade -s
+testsuccess aptget upgrade -s --solver apt
+
+testfailure aptget install awesome badstuff -s
+testfailure aptget install awesome badstuff -s --solver apt
+testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output
+msgtest 'A resolving error is format as' 'valid parseable EDSP error'
+if dpkg-checkbuilddeps -d 'dctrl-tools' /dev/null >/dev/null 2>&1; then
+ if apthelper cat-file rootdir/var/log/apt/edsp.last.xz | aptinternalsolver > solver.result 2>&1; then
+ testsuccess --nomsg grep-dctrl -FError ERR -- solver.result
+ else
+ msgfail
+ fi
+else
+ msgskip 'dctrl-tools not installed'
+fi
+configarchitecture 'armel'
+testfailure aptget install --solver apt awesomecoolstuff:i386 -s
+msgtest 'An invalid EDSP file generates a' 'hard error'
+if printf "%b\n" "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then
+ cat solver.result
+ msgfail
+else
+ msgpass
+fi
+msgtest 'Test direct calling is okay for' 'apt-internal-solver'
+cat "$APT_EDSP_DUMP_FILENAME" | aptinternalsolver > solver.result 2>&1 || true
+if [ "$(tail -n2 solver.result | head -n1 )" = "Message: Done" ]; then
+ msgpass
+else
+ cat solver.result
+ msgfail
+fi
+testsuccess grep '^APT-ID: 1$' "$APT_EDSP_DUMP_FILENAME"
+sed -i -e 's#^APT-ID: 1$#APT-ID: 10000#' "$APT_EDSP_DUMP_FILENAME"
+cat "$APT_EDSP_DUMP_FILENAME" | aptinternalsolver > solver.result 2>&1 || true
+testsuccessequal 'Message: Done
+' tail -n2 solver.result
+rm -f "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptinternalsolver scenario
+testsuccessequal 'Package: stuff
+Architecture: all
+Version: 3
+APT-ID: 1
+Multi-Arch: foreign
+Source: stuff
+Source-Version: 3
+Priority: optional
+Section: other
+APT-Release:
+ a=experimental,n=experimental,c=main,b=all
+APT-Pin: 1
+
+Package: stuff
+Architecture: all
+Version: 2
+APT-ID: 3
+Multi-Arch: foreign
+Source: stuff
+Source-Version: 2
+Priority: optional
+Section: other
+APT-Release:
+ a=unstable,n=sid,c=main,b=all
+APT-Pin: 500
+APT-Candidate: yes
+
+Package: stuff
+Architecture: all
+Version: 1
+APT-ID: 7
+Source: stuff
+Source-Version: 1
+Priority: optional
+Section: other
+Installed: yes
+APT-Pin: 100
+' aptinternalsolver scenario stuff
+
+cat > rootdir/usr/lib/apt/solvers/explicitremove << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Install: \${line#*:}
+
+Remove: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/explicitremove
+testfailure apt full-upgrade -s --solver explicitremove
+testsuccess grep 'had a previous stanza' rootdir/tmp/testfailure.output
+
+cat > rootdir/usr/lib/apt/solvers/removeall << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Remove: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/removeall
+testwarning apt full-upgrade -s --solver removeall
+testsuccess grep "which isn't installed!" rootdir/tmp/testwarning.output
+
+cat > rootdir/usr/lib/apt/solvers/installall << EOF
+#!/bin/sh
+set -e
+while read line; do
+ if [ "APT-ID" = "\${line%:*}" ]; then
+ cat << APT
+Install: \${line#*:}
+
+APT
+ fi
+done
+EOF
+chmod +x rootdir/usr/lib/apt/solvers/installall
+testfailure apt full-upgrade -s --solver installall
+testsuccess grep "is already installed!" rootdir/tmp/testfailure.output
+
+testsolverfailuremsg() {
+ local SOLVER="rootdir/usr/lib/apt/solvers/$1"
+ echo "$2" > "$SOLVER"
+ chmod +x "$SOLVER"
+ testfailuremsg "$3" apt full-upgrade -s --solver $1
+}
+
+testsolverfailuremsg 'exit0withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This solver exits instantly'
+exit 0" 'E: External solver failed with: This solver exits instantly'
+
+testsolverfailuremsg 'exit1withoutmsg' "#!/bin/sh
+exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)'
+
+testsolverfailuremsg 'exit1withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This solver exits instantly'
+exit 1" 'E: External solver failed with: This solver exits instantly
+E: Sub-process exit1withmsg returned an error code (1)'
+
+configarchitecture 'amd64' 'i386'
+for arch in 'amd64' 'i386' 'armel' 'armhf'; do
+ insertinstalledpackage "dummy-httpd-$arch" "$arch" '1' 'Provides: httpd'
+done
+buildsimplenativepackage 'dummy-webserver' 'all' '1' 'unstable' 'Provides: httpd
+Multi-Arch: foreign'
+testfailure apt install -s dummy-webserver
+testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb
+testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --solver apt
+testfailure apt install -s ./incoming/dummy-webserver_1_all.deb --solver dump
+
+testsuccess aptcache showpkg dummy-webserver --with-source ./incoming/dummy-webserver_1_all.deb
+cp -a rootdir/tmp/testsuccess.output showpkg.output
+testequal 'Reverse Depends:
+Dependencies:
+1 -
+Provides:
+1 - ./incoming/dummy-webserver_1_all.deb (= 1) httpd:armhf (= ) httpd:armel (= ) httpd:i386 (= ) httpd (= )
+Reverse Provides: ' tail -n 6 showpkg.output
+testsuccessequal 'Provides: httpd
+Provides: httpd
+Provides: httpd
+Provides: httpd
+Provides: httpd' grep 'Provides:' "$APT_EDSP_DUMP_FILENAME"
diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol
new file mode 100755
index 0000000..192f21b
--- /dev/null
+++ b/test/integration/test-external-installation-planner-protocol
@@ -0,0 +1,93 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
+buildsimplenativepackage 'foo' 'all' '3' 'experimental' 'Depends: newstuff'
+buildsimplenativepackage 'foo' 'all' '2' 'unstable' 'Depends: libfoo:amd64, stuff
+Conflicts: bar, libfoo:i386
+Recommends: unrelated'
+buildsimplenativepackage 'libfoo' 'amd64' '2' 'unstable' 'Multi-Arch: same'
+buildsimplenativepackage 'unrelated-2' 'amd64' '2' 'unstable'
+insertinstalledpackage 'foo' 'all' '1'
+insertinstalledpackage 'bar' 'all' '1'
+insertinstalledpackage 'stuff' 'all' '1'
+insertinstalledpackage 'unrelated-1' 'all' '1'
+
+setupaptarchive --no-update
+
+EIPPLOG="${TMPWORKINGDIRECTORY}/rootdir/var/log/apt/eipp.log"
+echo "Dir::Log::Planner \"$EIPPLOG\";" > ./rootdir/etc/apt/apt.conf.d/eipp-logging
+
+testsuccess apt update
+export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.eipp"
+testfailure test -r "$EIPPLOG"
+testfailure aptget install foo --planner dump -y
+testfailure test -r "$EIPPLOG"
+testfailure grep 'unrelated-2' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal '2' grep -c '^Package: foo$' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal '1' grep -c '^Package: libfoo$' "$APT_EDSP_DUMP_FILENAME"
+testsuccessequal 'Planner: dump' grep '^Planner: ' "$APT_EDSP_DUMP_FILENAME"
+
+testsuccess aptget install foo -s
+testsuccess aptget install foo -y
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: bar:amd64
+Install: foo:amd64 libfoo:amd64
+Planner: internal' head -n 6 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Remove: 6
+Unpack: 2
+Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+rm -f "$EIPPLOG"
+testsuccess aptget install foo -s --reinstall
+testsuccess aptget install foo -y --reinstall
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+ReInstall: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+rm -f "$EIPPLOG"
+testsuccess aptget purge foo -s
+testsuccess aptget purge foo -y
+testsuccess test -r "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
+aptinternalplanner < "$EIPPLOG" > planner.log || true
+testsuccessequal 'Remove: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
+
+testplannerfailuremsg() {
+ local PLANNER="rootdir/usr/lib/apt/planners/$1"
+ echo "$2" > "$PLANNER"
+ chmod +x "$PLANNER"
+ testfailuremsg "$3" apt install foo -s --planner $1
+}
+
+testplannerfailuremsg 'exit0withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This planner exits instantly'
+exit 0" 'E: External planner failed with: This planner exits instantly'
+
+testplannerfailuremsg 'exit1withoutmsg' "#!/bin/sh
+exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)'
+
+testplannerfailuremsg 'exit1withmsg' "#!/bin/sh
+echo 'Error: instant-exit
+Message: This planner exits instantly'
+exit 1" 'E: External planner failed with: This planner exits instantly
+E: Sub-process exit1withmsg returned an error code (1)'
diff --git a/test/integration/test-failing-maintainer-scripts b/test/integration/test-failing-maintainer-scripts
new file mode 100755
index 0000000..c2d6316
--- /dev/null
+++ b/test/integration/test-failing-maintainer-scripts
@@ -0,0 +1,90 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+configdpkgnoopchroot
+
+# create a bunch of failures
+createfailure() {
+ setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee'
+ BUILDDIR="incoming/failure-$1-1.0"
+ echo '#!/bin/sh
+exit 29' > "${BUILDDIR}/debian/$1"
+ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+ rm -rf "$BUILDDIR"
+}
+
+buildsimplenativepackage 'dependee' 'native' '1.0' 'unstable'
+createfailure 'preinst'
+createfailure 'postinst'
+createfailure 'prerm'
+createfailure 'postrm'
+
+setupaptarchive
+
+# setup some pre- and post- invokes to check the output isn't garbled later
+APTHOOK="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apthook"
+echo '#!/bin/sh
+echo "$1: START"
+echo "$1: MaiN"
+echo "$1: ENd"' > "$APTHOOK"
+chmod +x "$APTHOOK"
+echo "DPKG::Pre-Invoke:: \"${APTHOOK} PRE\";
+DPKG::Post-Invoke:: \"${APTHOOK} POST\";" > rootdir/etc/apt/apt.conf.d/99apthooks
+
+testmyfailure() {
+ local PROGRESS='rootdir/tmp/progress.log'
+ exec 3> "$PROGRESS"
+ testfailure "$@" -o APT::Status-Fd=3
+ msgtest 'Test for failure message of maintainerscript in' 'console log'
+ local TEST='rootdir/tmp/testfailure.output'
+ if grep -q 'exit status 29' "$TEST"; then
+ msgpass
+ else
+ cat "$TEST"
+ msgfail
+ fi
+ msgtest 'Test for proper execution of invoke scripts in' 'console log'
+ if grep -q '^PRE: START$' "$TEST" &&
+ grep -q '^PRE: MaiN$' "$TEST" &&
+ grep -q '^PRE: ENd$' "$TEST" &&
+ grep -q '^POST: START$' "$TEST" &&
+ grep -q '^POST: MaiN$' "$TEST" &&
+ grep -q '^POST: ENd$' "$TEST"; then
+ msgpass
+ else
+ cat "$TEST"
+ msgfail
+ fi
+ msgtest 'Test for failure message of maintainerscript in' 'progress log'
+ if grep -q '^pmerror:.\+exit status 29$' "$PROGRESS"; then
+ msgpass
+ else
+ cat "$PROGRESS"
+ msgfail
+ fi
+ testmarkedauto 'dependee'
+}
+
+testmyfailure aptget install failure-preinst -y
+rm -f rootdir/var/lib/dpkg/status
+testmyfailure aptget install failure-postinst -y
+rm -f rootdir/var/lib/dpkg/status
+testsuccess aptget install failure-prerm -y
+testdpkginstalled failure-prerm
+testmyfailure aptget purge failure-prerm -y
+rm -f rootdir/var/lib/dpkg/status
+testsuccess aptget install failure-postrm -y
+testdpkginstalled failure-postrm
+testmyfailure aptget purge failure-postrm -y
+
+# FIXME: test with output going to a PTY as it usually does
+if false; then
+ rm -f rootdir/var/lib/dpkg/status
+ apt install dependee -y || true
+ apt install failure-postinst -y || true
+fi
diff --git a/test/integration/test-frontend-lock b/test/integration/test-frontend-lock
new file mode 100755
index 0000000..939344a
--- /dev/null
+++ b/test/integration/test-frontend-lock
@@ -0,0 +1,80 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'package1' 'i386' '1.0'
+insertinstalledpackage 'package2' 'i386' '1.0'
+insertinstalledpackage 'package3' 'i386' '1.0'
+insertinstalledpackage 'package4' 'i386' '1.0'
+insertinstalledpackage 'package5' 'i386' '1.0'
+insertinstalledpackage 'package6' 'i386' '1.0'
+buildsimplenativepackage 'foo' 'all' '1'
+
+setupaptarchive
+
+buildsimplenativepackage 'bar' 'all' '1'
+
+
+# Checks that the correct variable is set
+msgmsg 'Post-Invoke script has DPKG_FRONTEND_LOCKED set'
+testsuccess aptget -q -y -o Dpkg::Post-Invoke::="echo DPKG_FRONTEND_LOCKED=\$DPKG_FRONTEND_LOCKED" remove package1
+cp rootdir/tmp/testsuccess.output install.output
+testsuccess grep DPKG_FRONTEND_LOCKED=true install.output
+
+msgmsg 'Pre-Invoke script has DPKG_FRONTEND_LOCKED set'
+testsuccess aptget -q -y -o Dpkg::Pre-Invoke::="echo DPKG_FRONTEND_LOCKED=\$DPKG_FRONTEND_LOCKED" remove package2
+cp rootdir/tmp/testsuccess.output install.output
+testsuccess grep DPKG_FRONTEND_LOCKED=true install.output
+
+msgmsg 'Pre-Install-Pkgs script has DPKG_FRONTEND_LOCKED set'
+testsuccess aptget -q -y -o DPkg::Pre-Install-Pkgs::="echo DPKG_FRONTEND_LOCKED=\$DPKG_FRONTEND_LOCKED" remove package3
+cp rootdir/tmp/testsuccess.output install.output
+testsuccess grep DPKG_FRONTEND_LOCKED=true install.output
+
+
+# Check that the frontend lock is hold by apt-get
+msgmsg 'Post-Invoke script runs while frontend is locked'
+testfailure aptget -q -y -o Dpkg::Post-Invoke::="apt-get remove" remove package4
+cp rootdir/tmp/testfailure.output install.output
+testsuccess grep "E: Unable to acquire the dpkg frontend lock (${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/lock-frontend), is another process using it?" install.output
+testsuccess grep "E: Problem executing scripts DPkg::Post-Invoke 'apt-get remove'" install.output
+
+msgmsg 'Pre-Invoke script runs while frontend is locked'
+testfailure aptget -q -y -o Dpkg::Pre-Invoke::="apt-get remove" remove package5
+cp rootdir/tmp/testfailure.output install.output
+testsuccess grep "E: Unable to acquire the dpkg frontend lock (${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/lock-frontend), is another process using it?" install.output
+testsuccess grep "E: Problem executing scripts DPkg::Pre-Invoke 'apt-get remove'" install.output
+
+msgmsg 'Pre-Install-Pkgs runs while frontend is locked'
+testfailure aptget -q -y -o DPkg::Pre-Install-Pkgs::="apt-get remove" remove package6
+cp rootdir/tmp/testfailure.output install.output
+testsuccess grep "E: Unable to acquire the dpkg frontend lock (${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/lock-frontend), is another process using it?" install.output
+testsuccess grep "E: Sub-process apt-get remove returned an error code (100)" install.output
+testsuccess grep "Failure running script apt-get remove" install.output
+
+
+# Applied test case from DonKult
+msgmsg 'Applied case of frontend locking'
+cat > ./post-invoke <<EOF
+#!/bin/sh
+set -e
+#export DPKG_FRONTEND_LOCKED=true
+${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg -i ${TMPWORKINGDIRECTORY}/incoming/bar_1_all.deb
+EOF
+chmod +x ./post-invoke
+echo "dpkg::post-invoke:: \"${TMPWORKINGDIRECTORY}/post-invoke\";" > rootdir/etc/apt/apt.conf.d/01dpkgpostinvoke
+
+testdpkgnotinstalled 'foo' 'bar'
+testsuccess apt show foo
+testfailure apt show bar
+
+testsuccess apt install foo -s
+testdpkgnotinstalled 'foo' 'bar'
+
+testsuccess apt install foo
+testdpkginstalled 'foo' 'bar'
diff --git a/test/integration/test-github-111-invalid-armember b/test/integration/test-github-111-invalid-armember
new file mode 100755
index 0000000..2340321
--- /dev/null
+++ b/test/integration/test-github-111-invalid-armember
@@ -0,0 +1,34 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+setupaptarchive
+
+# this used to crash, but it should treat it as an invalid member header
+touch ' '
+testsuccess ar -q test.deb ' '
+testsuccessequal "E: Invalid archive member header" ${APTTESTHELPERSBINDIR}/testdeb test.deb
+
+
+rm test.deb
+touch 'x'
+testsuccess ar -q test.deb 'x'
+testsuccessequal "E: This is not a valid DEB archive, missing 'debian-binary' member" ${APTTESTHELPERSBINDIR}/testdeb test.deb
+
+
+# <name><size> [ other fields] - name is not nul terminated here, it ends in .
+msgmsg "Unterminated ar member name"
+printf '!<arch>\0120123456789ABCDE.A123456789A.01234.01234.0123456.012345678.0.' > test.deb
+testsuccessequal "E: Invalid archive member header" ${APTTESTHELPERSBINDIR}/testdeb test.deb
+
+
+${APTTESTHELPERSBINDIR}/createdeb-cve-2020-27350 github-111 control.tar
+gzip control.tar
+cp control.tar.gz data.tar.gz
+touch debian-binary
+rm test.deb
+testsuccess ar -q test.deb debian-binary control.tar.gz data.tar.gz
+testsuccessequal "W: Unknown TAR header type 88" ${APTTESTHELPERSBINDIR}/testdeb test.deb
diff --git a/test/integration/test-github-23-too-long-dependency-line b/test/integration/test-github-23-too-long-dependency-line
new file mode 100755
index 0000000..d514303
--- /dev/null
+++ b/test/integration/test-github-23-too-long-dependency-line
@@ -0,0 +1,17 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+setupaptarchive
+
+
+testsuccessequal "network-manager-strongswan:
+ Installed: 1.3.1-14
+ Candidate: 1.3.1-14
+ Version table:
+ *** 1.3.1-14 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive Packages
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy network-manager-strongswan
diff --git a/test/integration/test-handle-redirect-as-used-mirror-change b/test/integration/test-handle-redirect-as-used-mirror-change
new file mode 100755
index 0000000..a6f8b78
--- /dev/null
+++ b/test/integration/test-handle-redirect-as-used-mirror-change
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+configcompression '.' 'gz'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+export APT_DONT_SIGN=''
+setupaptarchive --no-update
+changetowebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://0.0.0.0:${APTHTTPPORT}/"
+rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
+
+testsuccessequal "Get:1 http://0.0.0.0:${APTHTTPPORT} unstable InRelease [$(stat -c %s aptarchive/dists/unstable/InRelease) B]
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+grepwebserverlogs() {
+ testsuccess grep -h "$1" aptarchive/webserver.log.client*.log
+ shift
+ sort rootdir/tmp/testsuccess.output > aptwebserver.log
+ testfileequal 'aptwebserver.log' "$@"
+}
+
+# ensure we asked the redirector only once
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease"
+
+testsuccessequal "Hit:1 http://0.0.0.0:${APTHTTPPORT} unstable InRelease
+Reading package lists..." aptget update
+
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease"
+
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Debug::Acquire::http=1 -o Acquire::SameMirrorForAllIndexes=0
+grepwebserverlogs '^Location:' "Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/binary-all/Packages.gz
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/i18n/Translation-en.gz
+Location: http://0.0.0.0:${APTHTTPPORT}/dists/unstable/main/source/Sources.gz"
+
+cd downloaded
+testsuccess apthelper download-file "http://localhost:${APTHTTPPORT}/redirectme/dists/unstable/InRelease" inrelease
+testsuccess test -s inrelease
+cd - >/dev/null
+
+webserverconfig "aptwebserver::redirect::replace::http://0.0.0.0:${APTHTTPPORT}/dists/unstable/InRelease" "http://0.0.0.0:${APTHTTPPORT}/storage/dists/unstable/InRelease"
+mkdir -p aptarchive/storage/dists/unstable
+mv aptarchive/dists/unstable/InRelease aptarchive/storage/dists/unstable
+rm -rf rootdir/var/lib/apt/lists
+testsuccessequal "Get:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease [$(stat -c %s aptarchive/storage/dists/unstable/InRelease) B]
+Ign:2 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Sources
+ 404 Not Found
+Ign:3 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main all Packages
+ 404 Not Found
+Ign:4 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Translation-en
+ 404 Not Found
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists...
+Building dependency tree...
+All packages are up to date." apt update
+
+find aptarchive -name 'InRelease' -delete
+rm -rf rootdir/var/lib/apt/lists
+
+testsuccessequal "Ign:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease
+ 404 Not Found
+Get:2 http://0.0.0.0:${APTHTTPPORT} unstable Release [$(stat -c %s aptarchive/dists/unstable/Release) B]
+Get:3 http://0.0.0.0:${APTHTTPPORT} unstable Release.gpg [$(stat -c %s aptarchive/dists/unstable/Release.gpg) B]
+Get:4 http://0.0.0.0:${APTHTTPPORT} unstable/main Sources [$(stat -c %s aptarchive/dists/unstable/main/source/Sources.gz) B]
+Get:5 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s aptarchive/dists/unstable/main/binary-all/Packages.gz) B]
+Get:6 http://0.0.0.0:${APTHTTPPORT} unstable/main Translation-en [$(stat -c %s aptarchive/dists/unstable/main/i18n/Translation-en.gz) B]
+Reading package lists..." aptget update
+
+testsuccessequal "Ign:1 http://0.0.0.0:${APTHTTPPORT}/storage unstable InRelease
+ 404 Not Found
+Hit:2 http://0.0.0.0:${APTHTTPPORT} unstable Release
+Reading package lists..." aptget update
+
+rm -rf rootdir/var/lib/apt/lists
+find aptarchive -name 'Release.gpg' -delete
+find aptarchive -name 'Release' -delete
+testfailure aptget update
+testwarning aptget update --allow-insecure-repositories
+testsuccess grep 'does not have a Release file' rootdir/tmp/testwarning.output
diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups
new file mode 100755
index 0000000..564ea88
--- /dev/null
+++ b/test/integration/test-handling-broken-orgroups
@@ -0,0 +1,108 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'cool' 'all' '1.0-1'
+insertpackage 'unstable' 'stuff' 'all' '1.0-1'
+insertpackage 'unstable' 'coolstuff' 'all' '1.0-1' 'Depends: cool | stuff'
+insertpackage 'unstable' 'coolstuff2' 'all' '1.0-1' 'Depends: cool2 | stuff'
+insertpackage 'unstable' 'coolstuff-broken' 'all' '1.0-1' 'Depends: cool2 | stuff2'
+insertpackage 'unstable' 'coolstuff-brokenrec' 'all' '1.0-1' 'Recommends: cool2 | stuff2'
+insertpackage 'unstable' 'coolstuff-conflict' 'all' '1.0-1' 'Depends: cool | stuff
+Conflicts: cool'
+insertpackage 'unstable' 'coolstuff-provided' 'all' '1.0-1' 'Depends: cool2 | stuff-abi'
+insertpackage 'unstable' 'extrastuff' 'all' '1.0-1' 'Provides: stuff-abi'
+
+insertpackage 'unstable' 'coolstuff-provided-broken' 'all' '1.0-1' 'Depends: cool2 | stuff-abi-2'
+insertpackage 'unstable' 'extrastuff' 'all' '1.0-1' 'Depends: stuff2
+Provides: stuff-abi-2'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ cool
+The following NEW packages will be installed:
+ cool coolstuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst cool (1.0-1 unstable [all])
+Inst coolstuff (1.0-1 unstable [all])
+Conf cool (1.0-1 unstable [all])
+Conf coolstuff (1.0-1 unstable [all])' aptget install coolstuff -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following NEW packages will be installed:
+ coolstuff2 stuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst stuff (1.0-1 unstable [all])
+Inst coolstuff2 (1.0-1 unstable [all])
+Conf stuff (1.0-1 unstable [all])
+Conf coolstuff2 (1.0-1 unstable [all])' aptget install coolstuff2 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ coolstuff-broken : Depends: cool2 but it is not installable or
+ stuff2 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Recommended packages:
+ cool2 | stuff2
+The following NEW packages will be installed:
+ coolstuff-brokenrec
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst coolstuff-brokenrec (1.0-1 unstable [all])
+Conf coolstuff-brokenrec (1.0-1 unstable [all])' aptget install coolstuff-brokenrec -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ stuff
+The following NEW packages will be installed:
+ coolstuff-conflict stuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst stuff (1.0-1 unstable [all])
+Inst coolstuff-conflict (1.0-1 unstable [all])
+Conf stuff (1.0-1 unstable [all])
+Conf coolstuff-conflict (1.0-1 unstable [all])' aptget install coolstuff-conflict -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ extrastuff
+The following NEW packages will be installed:
+ coolstuff-provided extrastuff
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst extrastuff (1.0-1 unstable [all])
+Inst coolstuff-provided (1.0-1 unstable [all])
+Conf extrastuff (1.0-1 unstable [all])
+Conf coolstuff-provided (1.0-1 unstable [all])' aptget install coolstuff-provided -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ coolstuff-provided-broken : Depends: cool2 but it is not installable or
+ stuff-abi-2
+E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken -s
diff --git a/test/integration/test-hashsum-verification b/test/integration/test-hashsum-verification
new file mode 100755
index 0000000..4060dfb
--- /dev/null
+++ b/test/integration/test-hashsum-verification
@@ -0,0 +1,82 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+prepare() {
+ local DATE="${2:-now}"
+ if [ "$DATE" = 'now' -a "$1" = "${PKGFILE}-new" ]; then
+ DATE='now + 6 days'
+ fi
+ for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
+ touch -d 'now - 6 hours' "$release"
+ done
+ cp "$1" aptarchive/Packages
+ find aptarchive -name 'Release' -delete
+ compressfile aptarchive/Packages
+ # create Release file with incorrect checksums
+ cat > aptarchive/Release <<EOF
+Date: Fri, 05 Aug 2011 09:22:08 UTC
+MD5Sum:
+ x15c483ac486f5dbe95095c7ec08626f 760 Packages
+ x0579797df4792164a17305fb0b317e9 546 Packages.bz2
+ xc532a82873d2206b4e4503e92d167bd 489 Packages.gz
+ x4d1d25661377dd4bb95a1736e2624d3 527 Packages.lzma
+ xf1cc221194edbaa943d2375d6f44a88 572 Packages.xz
+SHA1:
+ x0d3317839cf68cd40c28f0bddca8d2ce5a29cad 760 Packages
+ xffddf046ad8dfd8338a355d76fb08d143c8b636 546 Packages.bz2
+ xa27a3df51ca4474b880a6594c4811957079b613 489 Packages.gz
+ x9d7bba4e6fa927a34dcd797694c2893c21f1004 527 Packages.lzma
+ x7d988fe59cf67298828e5299a15d329c0f00f1b 572 Packages.xz
+SHA256:
+ x5a47d72f6b97bfa164b23326b6ad3cb019b5c6cc73769f8c0187616933d1b2b 760 Packages
+ x617252f5bfe3e9126352c7c2f8122d9c3b2c5e1a6c8a9616d62adc0ed164172 546 Packages.bz2
+ xc6abc6fe9a4fcf0758ec5366dfd19bcba90af026a7017c3f6198c59eccd8ef5 489 Packages.gz
+ xb306e66e5e6a7169c8d281a888539d1fdca9cecc99ae605717df579d5b9c166 527 Packages.lzma
+ x9585d0e66b74c9385727fbea11fea9ab33c716b18a32f3036f037a2b9b57120 572 Packages.xz
+EOF
+}
+
+PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+
+runtest() {
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+
+ # test signed release file
+ msgtest 'apt-get update gets the expected hashsum mismatch'
+ testfailure aptget update
+ testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
+ msgtest 'No package from the source available'
+ testfailureequal --nomsg 'N: Unable to locate package apt
+E: No packages found' aptcache show apt
+ msgtest 'No Packages file in /var/lib/apt/lists'
+ testempty find rootdir/var/lib/apt/lists -maxdepth 1 -name '*Package*'
+
+ # now with the unsigned Release file
+ rm -rf rootdir/var/lib/apt/lists
+ rm -f aptarchive/InRelease aptarchive/Release.gpg
+ msgtest 'unsigned apt-get update gets the expected hashsum mismatch'
+ testfailure --nomsg aptget update --allow-insecure-repositories
+ testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
+}
+
+for COMPRESSEDINDEXES in 'false' 'true'; do
+ echo "Acquire::GzipIndexes \"$COMPRESSEDINDEXES\";" > rootdir/etc/apt/apt.conf.d/compressindexes
+ if $COMPRESSEDINDEXES; then
+ msgmsg 'Run tests with GzipIndexes enabled'
+ else
+ msgmsg 'Run tests with GzipIndexes disabled'
+ fi
+ runtest
+done
diff --git a/test/integration/test-http-if-range b/test/integration/test-http-if-range
new file mode 100755
index 0000000..462d731
--- /dev/null
+++ b/test/integration/test-http-if-range
@@ -0,0 +1,91 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+TESTFILE='aptarchive/testfile'
+HTTPFILE="http://localhost:${APTHTTPPORT}/testfile"
+DOWNFILE='./downloaded/testfile'
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+testdownloadfile() {
+ rm -f "$DOWNLOADLOG"
+ msgtest "Testing download of file with" "$1"
+ if ! downloadfile "$HTTPFILE" "$DOWNFILE" > "$DOWNLOADLOG"; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+nopartialfile() {
+ rm -f "$DOWNFILE"
+}
+validpartialfile() {
+ head -n 5 "$TESTFILE" > "$DOWNFILE"
+ touch -d "$(stat --format '%y' "${TESTFILE}")" "$DOWNFILE"
+}
+badolderpartialfile() {
+ head -n 5 "$TESTFILE" > "$DOWNFILE"
+ touch -d "$(stat --format '%y' "${TESTFILE}") - 1sec" "$DOWNFILE"
+}
+badnewerpartialfile() {
+ head -n 5 "$TESTFILE" > "$DOWNFILE"
+ touch -d 'now + 1hour' "$DOWNFILE"
+}
+fullfile() {
+ cp -a "$TESTFILE" "$DOWNFILE"
+}
+
+cp -a "${TESTDIR}/framework" "$TESTFILE"
+
+testrun() {
+ nopartialfile
+ testdownloadfile "no file $1"
+ testwebserverlaststatuscode "$2" "$DOWNLOADLOG"
+ testsuccess cmp "$TESTFILE" "$DOWNFILE"
+
+ validpartialfile
+ testdownloadfile "good partial file $1"
+ testwebserverlaststatuscode "$3" "$DOWNLOADLOG"
+ testsuccess cmp "$TESTFILE" "$DOWNFILE"
+
+ badolderpartialfile
+ testdownloadfile "bad old partial file $1"
+ testwebserverlaststatuscode "$4" "$DOWNLOADLOG"
+ testsuccess cmp "$TESTFILE" "$DOWNFILE"
+
+ badnewerpartialfile
+ testdownloadfile "bad new partial file $1"
+ testwebserverlaststatuscode "$4" "$DOWNLOADLOG"
+ testsuccess cmp "$TESTFILE" "$DOWNFILE"
+
+ fullfile
+ testdownloadfile "complete file $1"
+ testwebserverlaststatuscode "$5" "$DOWNLOADLOG"
+ testsuccess cmp "$TESTFILE" "$DOWNFILE"
+}
+
+testrun 'defaults' '200' '206' '200' '416'
+
+webserverconfig 'aptwebserver::support::range' 'false'
+testrun 'no ranges' '200' '200' '200' '200'
+webserverconfig 'aptwebserver::support::range' 'true'
+
+webserverconfig 'aptwebserver::support::if-range' 'false'
+# the second 206 is bad, but we are unable to detect this
+testrun 'buggy server' '200' '206' '206' '416'
+echo 'Acquire::http::localhost::AllowRanges "false";' > rootdir/etc/apt/apt.conf.d/noallowranges
+testrun 'range disabled by conf' '200' '200' '200' '200'
+rm rootdir/etc/apt/apt.conf.d/noallowranges
+# detect varnish < 6.4 automatically
+webserverconfig 'aptwebserver::response-header::Via' '1.1 varnish (Varnish/6.1)'
+testrun 'bad varnish' '200' '200' '200' '200'
+webserverconfig 'aptwebserver::response-header::Via' '1.1 varnish (Varnish/6.4)'
+testrun 'good varnish' '200' '206' '206' '416'
diff --git a/test/integration/test-http-pipeline-messup b/test/integration/test-http-pipeline-messup
new file mode 100755
index 0000000..95e890b
--- /dev/null
+++ b/test/integration/test-http-pipeline-messup
@@ -0,0 +1,56 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+# try a little harder to create a size mismatch
+buildsimplenativepackage 'pkg0' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkga' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgb' 'all' '1.0' 'stable' "Depends: foo" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgc' 'all' '1.0' 'stable' "Depends: f$(for i in $(seq 0 1000); do printf 'o'; done)" '' '' '' '' 'none'
+buildsimplenativepackage 'pkgd' 'all' '1.0' 'stable' "Depends: f$(for i in $(seq 0 1000); do printf 'o'; done)" '' '' '' '' 'none'
+
+setupaptarchive --no-update
+
+# simulate (and be a predictable) pipeline mess-up by the server/proxy
+changetowebserver \
+ -o 'aptwebserver::overwrite::.*pkga.*::filename=/pool/pkgd_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgc.*::filename=/pool/pkgb_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgb.*::filename=/pool/pkgc_1.0_all.deb' \
+ -o 'aptwebserver::overwrite::.*pkgd.*::filename=/pool/pkga_1.0_all.deb'
+
+echo 'Debug::Acquire::http "true";
+Debug::pkgAcquire::Worker "true";' > rootdir/etc/apt/apt.conf.d/99debug
+
+testsuccess aptget update
+
+cd downloaded
+# messup is bigger than pipeline: checks if fixup isn't trying too hard
+testfailure aptget download pkga pkgb pkgc pkgd -o Acquire::http::Pipeline-Depth=2
+for pkg in 'pkga' 'pkgd'; do
+ testfailure test -f ${pkg}_1.0_all.deb
+done
+for pkg in 'pkgb' 'pkgc'; do
+ testsuccess test -f ${pkg}_1.0_all.deb
+ testsuccess cmp ../incoming/${pkg}_1.0_all.deb ${pkg}_1.0_all.deb
+ rm -f ${pkg}_1.0_all.deb
+done
+
+# ensure that pipeling is enabled for rest of this test
+echo 'Acquire::http::Pipeline-Depth 10;' > ../rootdir/etc/apt/apt.conf.d/99enable-pipeline
+
+# the output is a bit strange: it looks like it has downloaded pkga 4 times
+testwarning aptget download pkg0 pkga pkgb pkgc pkgd
+for pkg in 'pkg0' 'pkga' 'pkgb' 'pkgc' 'pkgd'; do
+ testsuccess test -f ${pkg}_1.0_all.deb
+ testsuccess cmp ../incoming/${pkg}_1.0_all.deb ${pkg}_1.0_all.deb
+ rm -f ${pkg}_1.0_all.deb
+done
+
+# while hashes will pass (as none are available), sizes will not match, so failure
+# checks that no hashes means that pipeline depth is ignored as we can't fixup
+testfailure aptget download pkga pkgb pkgc pkgd --allow-unauthenticated -o Acquire::ForceHash=ROT26
diff --git a/test/integration/test-ignore-provides-if-versioned-breaks b/test/integration/test-ignore-provides-if-versioned-breaks
new file mode 100755
index 0000000..ebcbecf
--- /dev/null
+++ b/test/integration/test-ignore-provides-if-versioned-breaks
@@ -0,0 +1,150 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'unrlated' 'all' '1.0'
+
+insertinstalledpackage 'foo' 'i386' '2.0'
+insertpackage 'unstable' 'foo' 'i386' '4.0'
+insertpackage 'unstable' 'foo-provider' 'i386' '1.0' 'Provides: foo'
+insertpackage 'unstable' 'foo-breaker-3' 'i386' '1.0' 'Breaks: foo (<< 3.0)'
+insertpackage 'unstable' 'foo-breaker-2' 'i386' '1.0' 'Breaks: foo (<< 2.0)'
+insertpackage 'unstable' 'foo-breaker-none' 'i386' '1.0' 'Breaks: foo'
+
+insertinstalledpackage 'foo-foreign' 'amd64' '2.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign' 'amd64' '4.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign-provider' 'i386' '1.0' 'Provides: foo-foreign'
+insertpackage 'unstable' 'foo-foreign-breaker-3' 'i386' '1.0' 'Breaks: foo-foreign (<< 3.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-2' 'i386' '1.0' 'Breaks: foo-foreign (<< 2.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-none' 'i386' '1.0' 'Breaks: foo-foreign'
+
+insertinstalledpackage 'foo-same' 'i386,amd64' '2.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same' 'i386,amd64' '4.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same-provider' 'i386' '1.0' 'Provides: foo-same'
+insertpackage 'unstable' 'foo-same-breaker-3' 'i386' '1.0' 'Breaks: foo-same (<< 3.0)'
+insertpackage 'unstable' 'foo-same-breaker-2' 'i386' '1.0' 'Breaks: foo-same (<< 2.0)'
+insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Breaks: foo-same'
+
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-breaker-none : Breaks: foo
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-breaker-2 foo-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-breaker-2 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo-breaker-2 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo-breaker-3 foo-provider
+The following packages will be upgraded:
+ foo
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo [2.0] (4.0 unstable [i386])
+Inst foo-breaker-3 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo (4.0 unstable [i386])
+Conf foo-breaker-3 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-foreign-breaker-none : Breaks: foo-foreign
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-breaker-2 foo-foreign-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-foreign-breaker-2 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign-breaker-2 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-foreign:amd64
+The following NEW packages will be installed:
+ foo-foreign-breaker-3 foo-foreign-provider
+The following packages will be upgraded:
+ foo-foreign:amd64
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo-foreign:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-foreign-breaker-3 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign:amd64 (4.0 unstable [amd64])
+Conf foo-foreign-breaker-3 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-same-breaker-none : Breaks: foo-same
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-same-breaker-2 foo-same-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-same-breaker-2 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same-breaker-2 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-same foo-same:amd64
+The following NEW packages will be installed:
+ foo-same-breaker-3 foo-same-provider
+The following packages will be upgraded:
+ foo-same foo-same:amd64
+2 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo-same [2.0] (4.0 unstable [i386]) [foo-same:i386 on foo-same:amd64] [foo-same:amd64 on foo-same:i386] [foo-same:amd64 ]
+Inst foo-same:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-same-breaker-3 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same (4.0 unstable [i386])
+Conf foo-same:amd64 (4.0 unstable [amd64])
+Conf foo-same-breaker-3 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-3 -s
diff --git a/test/integration/test-ignore-provides-if-versioned-conflicts b/test/integration/test-ignore-provides-if-versioned-conflicts
new file mode 100755
index 0000000..3243cfb
--- /dev/null
+++ b/test/integration/test-ignore-provides-if-versioned-conflicts
@@ -0,0 +1,150 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386' 'amd64'
+
+insertpackage 'unstable' 'unrlated' 'all' '1.0'
+
+insertinstalledpackage 'foo' 'i386' '2.0'
+insertpackage 'unstable' 'foo' 'i386' '4.0'
+insertpackage 'unstable' 'foo-provider' 'i386' '1.0' 'Provides: foo'
+insertpackage 'unstable' 'foo-breaker-3' 'i386' '1.0' 'Conflicts: foo (<< 3.0)'
+insertpackage 'unstable' 'foo-breaker-2' 'i386' '1.0' 'Conflicts: foo (<< 2.0)'
+insertpackage 'unstable' 'foo-breaker-none' 'i386' '1.0' 'Conflicts: foo'
+
+insertinstalledpackage 'foo-foreign' 'amd64' '2.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign' 'amd64' '4.0' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'foo-foreign-provider' 'i386' '1.0' 'Provides: foo-foreign'
+insertpackage 'unstable' 'foo-foreign-breaker-3' 'i386' '1.0' 'Conflicts: foo-foreign (<< 3.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-2' 'i386' '1.0' 'Conflicts: foo-foreign (<< 2.0)'
+insertpackage 'unstable' 'foo-foreign-breaker-none' 'i386' '1.0' 'Conflicts: foo-foreign'
+
+insertinstalledpackage 'foo-same' 'i386,amd64' '2.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same' 'i386,amd64' '4.0' 'Multi-Arch: same'
+insertpackage 'unstable' 'foo-same-provider' 'i386' '1.0' 'Provides: foo-same'
+insertpackage 'unstable' 'foo-same-breaker-3' 'i386' '1.0' 'Conflicts: foo-same (<< 3.0)'
+insertpackage 'unstable' 'foo-same-breaker-2' 'i386' '1.0' 'Conflicts: foo-same (<< 2.0)'
+insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Conflicts: foo-same'
+
+
+
+setupaptarchive
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-breaker-none : Conflicts: foo
+E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-breaker-2 foo-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-breaker-2 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo-breaker-2 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo-breaker-3 foo-provider
+The following packages will be upgraded:
+ foo
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo [2.0] (4.0 unstable [i386])
+Inst foo-breaker-3 (1.0 unstable [i386])
+Inst foo-provider (1.0 unstable [i386])
+Conf foo (4.0 unstable [i386])
+Conf foo-breaker-3 (1.0 unstable [i386])
+Conf foo-provider (1.0 unstable [i386])' aptget install foo-provider foo-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-foreign-breaker-none : Conflicts: foo-foreign
+E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-breaker-2 foo-foreign-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-foreign-breaker-2 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign-breaker-2 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-foreign:amd64
+The following NEW packages will be installed:
+ foo-foreign-breaker-3 foo-foreign-provider
+The following packages will be upgraded:
+ foo-foreign:amd64
+1 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
+Inst foo-foreign:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-foreign-breaker-3 (1.0 unstable [i386])
+Inst foo-foreign-provider (1.0 unstable [i386])
+Conf foo-foreign:amd64 (4.0 unstable [amd64])
+Conf foo-foreign-breaker-3 (1.0 unstable [i386])
+Conf foo-foreign-provider (1.0 unstable [i386])' aptget install foo-foreign-provider foo-foreign-breaker-3 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-same-breaker-none : Conflicts: foo-same
+E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-same-breaker-2 foo-same-provider
+0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
+Inst foo-same-breaker-2 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same-breaker-2 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo-same foo-same:amd64
+The following NEW packages will be installed:
+ foo-same-breaker-3 foo-same-provider
+The following packages will be upgraded:
+ foo-same foo-same:amd64
+2 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
+Inst foo-same [2.0] (4.0 unstable [i386]) [foo-same:i386 on foo-same:amd64] [foo-same:amd64 on foo-same:i386] [foo-same:amd64 ]
+Inst foo-same:amd64 [2.0] (4.0 unstable [amd64])
+Inst foo-same-breaker-3 (1.0 unstable [i386])
+Inst foo-same-provider (1.0 unstable [i386])
+Conf foo-same (4.0 unstable [i386])
+Conf foo-same:amd64 (4.0 unstable [amd64])
+Conf foo-same-breaker-3 (1.0 unstable [i386])
+Conf foo-same-provider (1.0 unstable [i386])' aptget install foo-same-provider foo-same-breaker-3 -s
diff --git a/test/integration/test-ignored-files b/test/integration/test-ignored-files
new file mode 100755
index 0000000..bc9eefb
--- /dev/null
+++ b/test/integration/test-ignored-files
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+setupaptarchive
+
+msgmsg "Check notices about .list and .sources directories in sources.list.d"
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-be-ignored
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-be-ignored.conf
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-not-be-ignored.list
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-not-be-ignored.sources
+testsuccesswithnotice apt update
+testequalor2 "Reading package lists...
+Building dependency tree...
+All packages are up to date.
+N: Ignoring 'a-dir-that-will-not-be-ignored.sources' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file
+N: Ignoring 'a-dir-that-will-not-be-ignored.list' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file" "Reading package lists...
+Building dependency tree...
+All packages are up to date.
+N: Ignoring 'a-dir-that-will-not-be-ignored.list' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file
+N: Ignoring 'a-dir-that-will-not-be-ignored.sources' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file" cat rootdir/tmp/testsuccesswithnotice.output
+rmdir rootdir/etc/apt/sources.list.d/a-dir-*
+
+msgmsg "Check for notices about .conf directories in apt.conf.d"
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-be-ignored
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-be-ignored.list
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-not-be-ignored.conf
+testsuccessequal "N: Ignoring 'a-dir-that-will-not-be-ignored.conf' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/' as it is not a regular file" aptconfig shell
+rmdir rootdir/etc/apt/apt.conf.d/a-dir-*
+
+msgmsg "Check for directory notices in preferences.d"
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-be-ignored
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-be-ignored.conf
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-not-be-ignored.pref
+testsuccessequal "Package files:
+Pinned packages:
+N: Ignoring 'a-dir-that-will-not-be-ignored.pref' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/' as it is not a regular file" apt policy
+rmdir rootdir/etc/apt/preferences.d/a-dir-*
diff --git a/test/integration/test-implicit-conflicts-real-not-virtual b/test/integration/test-implicit-conflicts-real-not-virtual
new file mode 100755
index 0000000..02bd442
--- /dev/null
+++ b/test/integration/test-implicit-conflicts-real-not-virtual
@@ -0,0 +1,56 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable-mp' 'crda' 'i386,amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda
+Multi-Arch: foreign'
+insertpackage 'unstable-m' 'crda' 'i386,amd64' '1.1.1-1ubuntu4m' 'Multi-Arch: foreign'
+insertpackage 'unstable-p' 'crda' 'i386,amd64' '1.1.1-1ubuntu4p' 'Provides: wireless-crda'
+insertpackage 'unstable' 'wireless-crda' 'i386,amd64' '1.16'
+
+
+insertinstalledpackage 'wireless-crda' 'amd64' '1.14'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4m unstable-m [amd64])
+Conf crda (1.1.1-1ubuntu4m unstable-m [amd64])' aptget install crda -s -t unstable-m
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4p unstable-p [amd64])
+Conf crda (1.1.1-1ubuntu4p unstable-p [amd64])' aptget install crda -s -t unstable-p
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst crda (1.1.1-1ubuntu4mp unstable-mp [amd64])
+Conf crda (1.1.1-1ubuntu4mp unstable-mp [amd64])' aptget install crda -s -t unstable-mp
+
+rm rootdir/var/lib/dpkg/status
+insertinstalledpackage 'crda' 'amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda
+Conflicts: wireless-crda (<< 1.15)
+Replaces: wireless-crda ( << 1.15)
+Multi-arch: foreign'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ wireless-crda
+0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
+Inst wireless-crda (1.16 unstable [amd64])
+Conf wireless-crda (1.16 unstable [amd64])' aptget install wireless-crda -s -t unstable
diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove
new file mode 100755
index 0000000..208bd14
--- /dev/null
+++ b/test/integration/test-kernel-helper-autoremove
@@ -0,0 +1,170 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+CURRENTKERNEL="linux-image-$(uname -r | tr '[A-Z]' '[a-z]')"
+insertinstalledpackage "$CURRENTKERNEL" 'amd64' '5-1'
+# debug packages do not need our protection
+insertinstalledpackage "${CURRENTKERNEL}-dbg" 'amd64' '5-1'
+# but other kernel flavours should be protected
+insertinstalledpackage "${CURRENTKERNEL}-686-pae" 'i386' '5-1'
+insertinstalledpackage "${CURRENTKERNEL}-rt" 'amd64' '5-1'
+# some more versions
+insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2'
+insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1'
+# kernel metapackages should be ignored
+insertinstalledpackage 'linux-image-amd64' 'amd64' '200-1'
+insertinstalledpackage 'linux-image-686-pae' 'i386' '300-1'
+# ensure that the '.' is really a dot and not a wildcard
+insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1'
+# ensure that the '+' is really a plus and not a regexp quantifier
+insertinstalledpackage "${CURRENTKERNEL}+variant" 'amd64' '5-1'
+
+testsuccess aptmark auto "$CURRENTKERNEL" "${CURRENTKERNEL}-dbg" "${CURRENTKERNEL}-686-pae:i386" "${CURRENTKERNEL}-rt" \
+ 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic' "${CURRENTKERNEL}+variant"
+testsuccess aptmark hold "${CURRENTKERNEL}-rt"
+
+testprotected() {
+ testsuccess --nomsg apt -o Debug::PkgAutoRemove=1 autoremove -s
+ grep "Kernel protection regex" rootdir/tmp/testsuccess.output | cut -f2- -d: | tr '|' '\n' | sed 's/\s*//g' | sort -u > protected.list
+
+ msgtest 'Check kernel autoremoval protection list' 'can be parsed'
+ testfailure --nomsg grep '^[A-Z]: ' protected.list
+
+ msgtest 'Check kernel autoremoval protection list includes' 'most recent kernel'
+ testsuccess --nomsg grep '^\^linux-.*-100\\\.0\\\.0-1-generic\$$' protected.list
+
+ msgtest 'Check kernel autoremoval protection list includes' 'running kernel'
+ testsuccess --nomsg grep "^\\^linux-.*-$(uname -r | tr '[A-Z]' '[a-z]' | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list
+
+ msgtest 'Check kernel autoremoval protection list does not include' 'metapackages'
+ testfailure --nomsg grep -e '^\^linux-image-amd64\$$' -e '^\^linux-image-686-pae\$$' -e ':i386' protected.list
+}
+
+AUTOREMOVE='apt autoremove'
+if [ -n "$SUDO_USER" ]; then
+ AUTOREMOVE="sudo $AUTOREMOVE"
+fi
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV -o APT::Protect-Kernels=0
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages were automatically installed and are no longer required:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+ ${CURRENTKERNEL}-rt (5-1)
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV --ignore-hold -o APT::Protect-Kernels=0
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+7 packages were automatically installed and are no longer required.
+Use '$AUTOREMOVE' to remove them.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small -o APT::Protect-Kernels=0
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic (100.0.0-1)
+ linux-image-1.0.0-2-generic (1.0.0-2)
+ linux-image-100.0.0-1-generic (100.0.0-1)
+ $CURRENTKERNEL (5-1)
+ ${CURRENTKERNEL}+variant (5-1)
+ ${CURRENTKERNEL}-686-pae:i386 (5-1)
+ ${CURRENTKERNEL}-dbg (5-1)
+0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv linux-image-100.0.0-1-generic [100.0.0-1]
+Remv $CURRENTKERNEL [5-1]
+Remv ${CURRENTKERNEL}+variant [5-1]
+Remv ${CURRENTKERNEL}-686-pae:i386 [5-1]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -sV -o APT::Protect-Kernels=0
+
+msgmsg "run without parameter"
+testprotected
+msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
+testfailure --nomsg grep '^\^linux-.*-1\\\.0\\\.0-2-generic\$$' protected.list
+export COLUMNS=99999
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic linux-image-1.0.0-2-generic ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+unset COLUMNS
+
+msgmsg "install unknown kernel"
+# even if installed/uname reports a kernel which we can't find via dpkg,
+# ensure that we still protect it just in case as these are kernels we
+# know for sure without complicated detection mechanisms
+testprotected 1.0.0-2-ungeneric
+msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
+testfailure --nomsg grep '^\^linux-.*-1\\\.0\\\.0-2-generic\$$' protected.list
+export COLUMNS=9
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic
+ linux-image-1.0.0-2-generic
+ ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+unset COLUMNS
+
+msgmsg "install an old kernel"
+testprotected 1.0.0-2-generic
+export COLUMNS=9
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic
+ linux-image-1.0.0-2-generic
+ ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+unset COLUMNS
+
+# rt kernel was put on hold while the protected list was generated
+testsuccess aptmark hold "${CURRENTKERNEL}-rt"
+export COLUMNS=99999
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic linux-image-1.0.0-2-generic ${CURRENTKERNEL}-dbg
+0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
+Remv linux-image-1.0.0-2-generic [1.0.0-2]
+Remv ${CURRENTKERNEL}-dbg [5-1]" aptget autoremove -s
+unset COLUMNS
diff --git a/test/integration/test-method-connect b/test/integration/test-method-connect
new file mode 100755
index 0000000..b35f96d
--- /dev/null
+++ b/test/integration/test-method-connect
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+cd downloaded
+testfailureequal 'Err:1 http://vwakviie2ienjx6t.onion/
+ Direct connection to .onion domains is blocked by default. If you meant to use Tor remember to use tor+http instead of http.
+E: Failed to fetch http://vwakviie2ienjx6t.onion/ Direct connection to .onion domains is blocked by default. If you meant to use Tor remember to use tor+http instead of http.
+E: Download Failed' apthelper download-file 'http://vwakviie2ienjx6t.onion/' ftp.debian.org.html
diff --git a/test/integration/test-method-gpgv b/test/integration/test-method-gpgv
new file mode 100755
index 0000000..bfa5af4
--- /dev/null
+++ b/test/integration/test-method-gpgv
@@ -0,0 +1,185 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+cat > faked-apt-key <<EOF
+#!/bin/sh
+set -e
+find_gpgv_status_fd() {
+ while [ -n "\$1" ]; do
+ if [ "\$1" = '--status-fd' ]; then
+ shift
+ echo "\$1"
+ break
+ fi
+ shift
+ done
+}
+GPGSTATUSFD="\$(find_gpgv_status_fd "\$@")"
+cat >&\${GPGSTATUSFD} gpgv.output
+cat gpgv.output
+EOF
+chmod +x faked-apt-key
+
+testgpgv() {
+ echo "$4" > gpgv.output
+ msgtest "$1" "$2"
+ gpgvmethod >method.output 2>&1 || true
+ testsuccess --nomsg grep "^ $2\$" method.output
+ msgtest 'The reported signedby key is' "${3:-empty}"
+ testsuccess --nomsg grep "^ Signed-By:\s\+$3\$" method.output
+}
+
+testrun() {
+ testgpgv 'Good signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testgpgv 'Good signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+
+ testgpgv 'Good subkey signed with long keyid' 'Good: GOODSIG 5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 5B6896415D44C43E Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testgpgv 'Good subkey signed with fingerprint' 'Good: GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+
+ testgpgv 'Untrusted signed with long keyid' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 1 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testsuccess grep '^\s\+Good:\s\+$' method.output
+ testgpgv 'Untrusted signed with fingerprint' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 1 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testsuccess grep '^\s\+Good:\s\+$' method.output
+
+ testgpgv 'Weak signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 2 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak digest algorithm (SHA1)$' method.output
+ testgpgv 'Weak signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 2 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+ testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak digest algorithm (SHA1)$' method.output
+
+ testgpgv 'No Pubkey with long keyid' 'NoPubKey: NO_PUBKEY E8525D47528144E2' '' '[GNUPG:] ERRSIG E8525D47528144E2 1 11 00 1472744666 9
+[GNUPG:] NO_PUBKEY E8525D47528144E2'
+ testgpgv 'No Pubkey with fingerprint' 'NoPubKey: NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2' '' '[GNUPG:] ERRSIG DE66AECA9151AFA1877EC31DE8525D47528144E2 1 11 00 1472744666 9
+[GNUPG:] NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2'
+
+ testgpgv 'Expired key with long keyid' 'Worthless: EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>' '' '[GNUPG:] EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+ testgpgv 'Expired key with fingerprint' 'Worthless: EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired <rex@example.org>' '' '[GNUPG:] EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+}
+
+echo 'Test' > message.data
+cat >message.sig <<EOF
+-----BEGIN PGP SIGNATURE-----
+
+iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt
+cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l
+3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg
+X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k
+V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx
+pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns
+JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq
+=TB1F
+-----END PGP SIGNATURE-----
+EOF
+
+
+gpgvmethod() {
+ echo "601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Hashes::SHA1::Weak=true
+
+600 URI Acquire
+URI: file://${TMPWORKINGDIRECTORY}/message.sig
+Filename: ${TMPWORKINGDIRECTORY}/message.data
+" | runapt "${METHODSDIR}/gpgv"
+}
+testrun
+
+gpgvmethod() {
+ echo "601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Hashes::SHA1::Weak=true
+
+600 URI Acquire
+URI: file://${TMPWORKINGDIRECTORY}/message.sig
+Filename: ${TMPWORKINGDIRECTORY}/message.data
+Signed-By: /dev/null,34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE
+" | runapt "${METHODSDIR}/gpgv"
+}
+testrun
+
+gpgvmethod() {
+ echo "601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Hashes::SHA1::Weak=true
+
+600 URI Acquire
+URI: file://${TMPWORKINGDIRECTORY}/message.sig
+Filename: ${TMPWORKINGDIRECTORY}/message.data
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE,/dev/null
+" | runapt "${METHODSDIR}/gpgv"
+}
+testrun
+
+testgpgv 'Good signed with long keyid but not signed-by key' 'NoPubKey: GOODSIG 4BC0A39C27CE74F9' '' '[GNUPG:] GOODSIG 4BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742625 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+testsuccess grep '^\s\+Good:\s\+$' method.output
+testsuccess grep 'verified because the public key is not available: GOODSIG' method.output
+testgpgv 'Good signed with fingerprint but not signed-by key' 'NoPubKey: GOODSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9' '' '[GNUPG:] GOODSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired <rex@example.org>
+[GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742625 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9'
+testsuccess grep '^\s\+Good:\s\+$' method.output
+testsuccess grep 'verified because the public key is not available: GOODSIG' method.output
+
+gpgvmethod() {
+ echo "601 Configuration
+Config-Item: Debug::Acquire::gpgv=1
+Config-Item: Dir::Bin::apt-key=./faked-apt-key
+Config-Item: APT::Hashes::SHA1::Weak=true
+
+600 URI Acquire
+URI: file://${TMPWORKINGDIRECTORY}/message.sig
+Filename: ${TMPWORKINGDIRECTORY}/message.data
+Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!
+" | runapt "${METHODSDIR}/gpgv"
+}
+testgpgv 'Exact matched subkey signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E'
+testgpgv 'Exact matched subkey signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E'
+
+testgpgv 'Exact unmatched subkey signed with long keyid' 'NoPubKey: GOODSIG 5B6896415D44C43E' '' '[GNUPG:] GOODSIG 5B6896415D44C43E Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+testsuccess grep '^\s\+Good:\s\+$' method.output
+testsuccess grep 'verified because the public key is not available: GOODSIG' method.output
+testgpgv 'Exact unmatched subkey signed with fingerprint' 'NoPubKey: GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' '' '[GNUPG:] GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE'
+testsuccess grep '^\s\+Good:\s\+$' method.output
+testsuccess grep 'verified because the public key is not available: GOODSIG' method.output
+
+insertpackage 'unstable' 'foo' 'all' '1'
+setupaptarchive --no-update
+
+echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output
+testsuccess apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+rm -rf rootdir/var/lib/apt/lists
+
+echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey <subkey@example.org>' > gpgv.output
+testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+rm -rf rootdir/var/lib/apt/lists
+
+echo '[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output
+testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+rm -rf rootdir/var/lib/apt/lists
+
+echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey <subkey@example.org>
+[GNUPG:] VALIDSIG 0000000000000000000000000000000000000000 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output
+testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+rm -rf rootdir/var/lib/apt/lists
diff --git a/test/integration/test-method-gpgv-legacy-keyring b/test/integration/test-method-gpgv-legacy-keyring
new file mode 100755
index 0000000..3c3e453
--- /dev/null
+++ b/test/integration/test-method-gpgv-legacy-keyring
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "amd64"
+
+insertpackage 'unstable' 'foo' 'all' '1'
+
+buildaptarchive
+setupaptarchive --no-update
+
+testsuccessequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
+Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
+Get:2 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages [246 B]
+Get:3 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main Translation-en [224 B]
+Reading package lists..." aptget update -q
+
+cat rootdir/etc/apt/trusted.gpg.d/*.gpg > rootdir/etc/apt/trusted.gpg
+rm rootdir/etc/apt/trusted.gpg.d/*.gpg
+
+testwarningequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
+Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B]
+Reading package lists...
+W: file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details." aptget update -q
+
+# 2.4.0 regression: If the InRelease file was signed with two keys, fallback to trusted.gpg did not
+# work: It ran the fallback, but then ignored the result, as keys were still missing.
+signreleasefiles 'Joe Sixpack,Marvin Paranoid'
+testwarningequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1867 B]
+Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1867 B]
+Reading package lists...
+W: file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details." aptget update -q -omsg=with-two-signatures
diff --git a/test/integration/test-method-mirror b/test/integration/test-method-mirror
new file mode 100755
index 0000000..ce44b86
--- /dev/null
+++ b/test/integration/test-method-mirror
@@ -0,0 +1,274 @@
+#!/bin/sh
+set -e
+umask 0
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+umask 022
+
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage 'foo' 'all' '1' 'stable'
+buildsimplenativepackage 'foo' 'all' '2' 'unstable'
+setupaptarchive --no-update
+changetowebserver
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "http://localhost:${APTHTTPPORT}/"
+addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/var/lib/apt/lists || true;"
+mkdir -m 755 -p rootdir/var/lib/apt
+touch rootdir/var/lib/apt/extended_states
+
+testrundownload_internal_debs() {
+ local WORKDIR="$1"
+ shift
+ if [ "$WORKDIR" != '.' ]; then cd "$WORKDIR"; fi
+ while [ -n "$1" ]; do
+ if [ "$1" = 'foo=1' ]; then shift; continue; fi
+ local fndeb="$(echo "$1" | tr '=' '_')_all.deb"
+ testsuccess test -e "$fndeb"
+ rm -f "$fndeb"
+ shift
+ done
+ if [ "$WORKDIR" != '.' ]; then cd - >/dev/null; fi
+}
+testrundownload_internal() {
+ cd downloaded
+ testsuccess apt install --download-only -o Debug::NoLocking=true -y "$@"
+ testrundownload_internal_debs '../rootdir/var/cache/apt/archives' "$@"
+ msgtest 'Repeat the download only install test with' 'aptitude'
+ if dpkg-checkbuilddeps -d 'aptitude' /dev/null >/dev/null 2>&1; then
+ if aptitude install --download-only -o Debug::NoLocking=true -y "$@" > ../rootdir/tmp/aptitude.log 2>&1; then
+ msgpass
+ else
+ msgfail
+ cat >&2 ../rootdir/tmp/aptitude.log
+ fi
+ testrundownload_internal_debs '../rootdir/var/cache/apt/archives' "$@"
+ else
+ msgskip 'not installed'
+ fi
+ testsuccess apt download "$@" -o Debug::pkgAcquire::Worker=1
+ testrundownload_internal_debs '.' "$@"
+ testempty find . -name '*mirror*'
+ cd ..
+}
+testrundownload() {
+ if [ "$(id -u)" = '0' ]; then
+ testrundownload_internal "$@"
+ else
+ mkdir -p rootdir/var/cache/apt/archives/partial
+ echo 'Debug::SetupAPTPartialDirectory::AssumeGood "true";' > rootdir/etc/apt/apt.conf.d/assumegooddirs.conf
+ chmod -f 555 rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists/auxfiles rootdir/var/lib/apt/lists/partial
+ testrundownload_internal "$@"
+ testnotempty find rootdir/var/lib/apt/lists/auxfiles
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/auxfiles" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:555"
+
+ chmod -f 755 rootdir/var/lib/apt/lists/auxfiles
+ rm -f rootdir/var/lib/apt/lists/auxfiles/*
+ chmod -f 555 rootdir/var/lib/apt/lists/auxfiles
+ testrundownload_internal "$@"
+ testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/auxfiles" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:555"
+ testempty find rootdir/var/lib/apt/lists/auxfiles ! -type d
+
+ chmod -f 755 rootdir/var/lib/apt/lists
+ rm -rf rootdir/var/lib/apt/lists/auxfiles
+ chmod -f 555 rootdir/var/lib/apt/lists
+ testrundownload_internal "$@"
+ chmod -f 755 rootdir/var/lib/apt/lists
+ testsuccess test ! -d rootdir/var/lib/apt/lists/auxfiles
+ rm -f rootdir/etc/apt/apt.conf.d/assumegooddirs.conf
+ fi
+}
+testrun() {
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess apt update #-o Debug::Acquire::mirror=1 -o Debug::Acquire::http=1 -o Debug::pkgAcquire::Worker=1
+ cp -a rootdir/tmp/testsuccess.output aptupdate.output
+ test -z "$1" || testempty find rootdir/var/lib/apt/lists -maxdepth 1 -name "$1" -type f
+ test -z "$2" || testnotempty find rootdir/var/lib/apt/lists -maxdepth 1 -name "$2" -type f
+ testsuccess apt show foo=1
+ testrundownload 'foo=1' 'foo=2'
+}
+
+msgmsg 'basic setup'
+testrun '' ''
+
+msgmsg 'redirect setup'
+sed -i -e 's#/ stable#/redirectme stable#' rootdir/etc/apt/sources.list.d/*-stable-*
+testrun '' '*_redirectme_*'
+
+msgmsg 'mirror file does not exist'
+sed -i -e 's# http:# mirror:#' -e 's#/redirectme stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/*-stable-*
+testfailure apt update
+
+echo "http://localhost:${APTHTTPPORT}" > aptarchive/mirror.txt
+
+msgmsg 'stable mirror setup'
+testrun '*_redirectme_stable_*' '*_mirror.txt_*'
+
+msgmsg 'all mirror setup'
+sed -i -e 's# http:# mirror:#' -e 's#/ unstable#/mirror.txt unstable#' rootdir/etc/apt/sources.list.d/*
+testrun '*_redirectme_stable_*' '*_mirror.txt_*'
+
+msgmsg 'all mirror+http setup'
+sed -i -e 's# mirror:# mirror+http:#' rootdir/etc/apt/sources.list.d/*
+testrun '*_redirectme_*' '*_mirror.txt_*'
+
+msgmsg 'stable gzipped redirect setup'
+echo "http://localhost:${APTHTTPPORT}/redirectme" > aptarchive/mirror.txt
+compressfile aptarchive/mirror.txt
+sed -i -e 's#/mirror\.txt stable#/mirror.txt.gz stable#' rootdir/etc/apt/sources.list.d/*-stable-*
+testrun '*_redirectme_*' '*_mirror.txt.gz_*'
+
+msgmsg 'all mirrored via file'
+APTARCHIVE="$(readlink -f ./aptarchive)"
+sed -i -e "s#mirror+http://localhost:${APTHTTPPORT}#mirror+file:${APTARCHIVE}#" rootdir/etc/apt/sources.list.d/*
+testrun '*_localhost_*' '*_aptarchive_mirror.txt.gz_*'
+
+msgmsg 'fallback mirrors are used if needed' 'as usual'
+sed -i -e 's#/mirror\.txt\.gz stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/*
+echo "http://localhost:${APTHTTPPORT}/failure2 priority:3
+http://localhost:${APTHTTPPORT}/redirectme priority:2
+http://localhost:${APTHTTPPORT}/failure priority:1" > aptarchive/mirror.txt
+testrun '*_localhost_*' '*_aptarchive_mirror.txt_*'
+testsuccessequal "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Ign:2 http://localhost:${APTHTTPPORT}/failure stable InRelease
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT}/failure unstable InRelease
+ 404 Not Found" head -n 5 aptupdate.output
+
+msgmsg 'fallback mirrors are used if needed' 'by tags'
+echo "http://localhost:${APTHTTPPORT}/failure2 priority:1 release:stable
+http://localhost:${APTHTTPPORT}/redirectme priority:2
+http://localhost:${APTHTTPPORT}/failure priority:1 release:unstable" > aptarchive/mirror.txt
+testrun '*_localhost_*' '*_aptarchive_mirror.txt_*'
+testsuccessequal "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Ign:2 http://localhost:${APTHTTPPORT}/failure2 stable InRelease
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT}/failure unstable InRelease
+ 404 Not Found" head -n 5 aptupdate.output
+
+msgmsg 'do not hang on' 'file:///'
+sed -i -e 's#file:/tmp#file:///tmp#' rootdir/etc/apt/sources.list.d/apt-test-unstable-deb*
+testrun '*_localhost_*' '*_aptarchive_mirror.txt_*'
+testsuccessequal "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Ign:2 http://localhost:${APTHTTPPORT}/failure2 stable InRelease
+ 404 Not Found
+Ign:3 http://localhost:${APTHTTPPORT}/failure unstable InRelease
+ 404 Not Found" head -n 5 aptupdate.output
+
+changetohttpswebserver --no-rewrite
+rm -f rootdir/etc/apt/sources.list.d/*-stable-*
+msgmsg 'fallback mirrors are used if needed' 'random'
+echo "http://localhost:${APTHTTPPORT}/failure2 priority:1
+http://localhost:${APTHTTPPORT}/redirectme priority:2
+https://localhost:${APTHTTPSPORT}/failure priority:1
+http://localhost:${APTHTTPPORT}/unused-failure1
+http://localhost:${APTHTTPPORT}/unused-failure2
+http://localhost:${APTHTTPPORT}/unused-failure3
+http://localhost:${APTHTTPPORT}/unused-failure4
+http://localhost:${APTHTTPPORT}/unused-failure5
+http://localhost:${APTHTTPPORT}/unused-failure6
+http://localhost:${APTHTTPPORT}/unused-failure7
+http://localhost:${APTHTTPPORT}/unused-failure8
+http://localhost:${APTHTTPPORT}/unused-failure9
+" > aptarchive/mirror.txt
+testequalor2 "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Ign:2 http://localhost:${APTHTTPPORT}/failure2 unstable InRelease
+ 404 Not Found
+Ign:2 https://localhost:${APTHTTPSPORT}/failure unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Ign:2 https://localhost:${APTHTTPSPORT}/failure unstable InRelease
+ 404 Not Found
+Ign:2 http://localhost:${APTHTTPPORT}/failure2 unstable InRelease
+ 404 Not Found
+Hit:2 http://localhost:${APTHTTPPORT}/failure2 unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." apt update
+testfailure grep '/unused-failure' aptarchive/webserver.log
+
+msgmsg 'Mirrors can be filtered by' 'type'
+echo "http://localhost:${APTHTTPPORT}/failure
+http://localhost:${APTHTTPPORT}/redirectme type:deb
+" > aptarchive/mirror.txt
+testfailure apt update
+testrundownload 'foo=2'
+
+msgmsg 'Mirrors can be filtered by' 'by-hash type'
+echo "http://localhost:${APTHTTPPORT}/failure type:foobar priority:1
+http://localhost:${APTHTTPPORT}/redirectme type:index type:deb
+" > aptarchive/mirror.txt
+rm -rf rootdir/var/lib/apt/lists
+testsuccess apt update -o Acquire::By-Hash=force #-o Debug::pkgAcquire::Worker=1
+cp rootdir/tmp/testsuccess.output forcedbyhash.output
+testfailure grep "localhost:${APTHTTPPORT}/failure" forcedbyhash.output
+testrundownload 'foo=2'
+
+msgmsg 'The prefix for the mirrorlist is' 'passed on'
+echo 'Dir::Bin::Methods::foo+mirror+file "mirror";
+Dir::Bin::Methods::foo+mirror+http "mirror";
+Dir::Bin::Methods::foo+http "http";
+Dir::Bin::Methods::foo+https "https";
+' > rootdir/etc/apt/apt.conf.d/99add-foo-method
+echo "http://localhost:${APTHTTPPORT}/redirectme
+" > aptarchive/mirror.txt
+testsuccessequal "Get:1 file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Hit:2 http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." apt update
+testrundownload 'foo=2'
+sed -i -e 's# mirror+# foo+mirror+#' rootdir/etc/apt/sources.list.d/*
+testfailure apt update
+testsuccess grep 'package apt-transport-foo installed' rootdir/tmp/testfailure.output
+echo 'Dir::Bin::Methods::foo+file "file";' >> rootdir/etc/apt/apt.conf.d/99add-foo-method
+testsuccessequal "Get:1 foo+file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." apt update
+testrundownload 'foo=2'
+
+echo "file:/nonexistent/apt/archive priority:1
+http://localhost:${APTHTTPPORT}/redirectme
+" > aptarchive/mirror.txt
+testsuccessequal "Get:1 foo+file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Get:2 foo+file:/nonexistent/apt/archive unstable InRelease
+Ign:2 foo+file:/nonexistent/apt/archive unstable InRelease
+ File not found - /nonexistent/apt/archive/dists/unstable/InRelease (2: No such file or directory)
+Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." apt update
+sed -i -e "s#+file:\(//\|\)${APTARCHIVE}#+http://localhost:${APTHTTPPORT}#" rootdir/etc/apt/sources.list.d/*
+testsuccess apt update
+testrundownload 'foo=2'
+
+testsuccessequal "Get:1 foo+http://localhost:${APTHTTPPORT}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B]
+Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease
+Reading package lists...
+Building dependency tree...
+Reading state information...
+All packages are up to date." apt update
+testrundownload 'foo=2'
+
+echo "https://localhost:${APTHTTPSPORT}/
+http://localhost:${APTHTTPPORT}/redirectme" > aptarchive/mirror.txt
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e "s# foo+# [signed-by=$(readlink -f ./keys/joesixpack.pub)] foo+#g" rootdir/etc/apt/sources.list.d/apt-test-unstable-deb*
+testsuccess apt update
+testrundownload 'foo=2'
+
+rm -rf rootdir/var/lib/apt/lists
+sed -i -e "s# \[signed-by=[^]]\+\] foo+# [signed-by=$(readlink -f ./keys/marvinparanoid.pub)] foo+#g" rootdir/etc/apt/sources.list.d/apt-test-unstable-deb*
+testfailure apt update
diff --git a/test/integration/test-method-rred b/test/integration/test-method-rred
new file mode 100755
index 0000000..5a42b84
--- /dev/null
+++ b/test/integration/test-method-rred
@@ -0,0 +1,249 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+echo 'Package: coolstuff
+Version: 0.8.15
+Description: collection of stuff
+ A lot, too much to iterate all, but at least this:
+ - stuff
+ - more stuff
+ - even more stuff
+ .
+ And a cow.
+
+Package: oldstuff
+Version: 0-1
+Description: collection of outdated stuff
+ A lot, but of no use nowadays, but at least this:
+ - stuff
+ - more stuff
+ - even more stuff
+ .
+ And a dog.' > Packages
+
+testrred() {
+ msgtest "$1" "$2"
+ if [ -z "$3" ]; then
+ echo -n '' > Packages.ed
+ else
+ echo "$3" > Packages.ed
+ fi
+ rred() {
+ cat Packages | runapt "${METHODSDIR}/rred" "$@"
+ }
+ testsuccessequal "$4" --nomsg rred -f Packages.ed
+ testsuccess runapt "${METHODSDIR}/rred" -t Packages Packages-patched Packages.ed
+ testfileequal Packages-patched "$4"
+}
+
+testrred 'Remove' 'first line' '1d' "$(tail -n +2 ./Packages)"
+testrred 'Remove' 'empty line' '10d' "$(head -n 9 ./Packages)
+$(tail -n 9 ./Packages)"
+testrred 'Remove' 'line in a paragraph' '5d' "$(head -n 4 ./Packages)
+$(tail -n 14 ./Packages)"
+testrred 'Remove' 'last line' '19d' "$(head -n -1 ./Packages)"
+testrred 'Remove' 'multiple single lines' '17d
+7d' "$(sed -e '/^ - even more stuff$/ d' ./Packages)"
+testrred 'Remove' 'first paragraph' '1,10d' "$(tail -n 9 ./Packages)"
+testrred 'Remove' 'a few lines in the middle' '5,14d' "$(head -n 4 ./Packages)
+$(tail -n 5 ./Packages)"
+testrred 'Remove' 'second paragraph' '10,19d' "$(head -n 9 ./Packages)"
+testrred 'Mass Remove' 'all stuff lines' '15,17d
+13d
+11d
+5,7d
+3d
+1d' "$(sed '/stuff/ d' ./Packages)"
+
+testrred 'Single line add' 'first line' '0a
+Format: 3.0 (native)
+.' "Format: 3.0 (native)
+$(cat ./Packages)"
+testrred 'Single line add' 'last line' '19a
+Multi-Arch: foreign
+.' "$(cat ./Packages)
+Multi-Arch: foreign"
+testrred 'Single line add' 'middle' '9a
+Multi-Arch: foreign
+.' "$(head -n 9 ./Packages)
+Multi-Arch: foreign
+$(tail -n 10 ./Packages)"
+
+testrred 'Multi line add' 'first line' '0a
+Format: 3.0 (native)
+Source: apt
+.' "Format: 3.0 (native)
+Source: apt
+$(cat ./Packages)"
+testrred 'Multi line add' 'last line' '19a
+Multi-Arch: foreign
+Homepage: https://debian.org
+.' "$(cat ./Packages)
+Multi-Arch: foreign
+Homepage: https://debian.org"
+testrred 'Multi line add' 'middle' '9a
+Multi-Arch: foreign
+Homepage: https://debian.org
+.' "$(head -n 9 ./Packages)
+Multi-Arch: foreign
+Homepage: https://debian.org
+$(tail -n 10 ./Packages)"
+
+testrred 'Single line change' 'first line' '1c
+Package: supercoolstuff
+.' "Package: supercoolstuff
+$(tail -n +2 ./Packages)"
+testrred 'Single line change' 'in the middle' '9c
+ And a super cow.
+.' "$(head -n 8 ./Packages)
+ And a super cow.
+$(tail -n 10 ./Packages)"
+testrred 'Single line change' 'an empty line' '10c
+
+.' "$(head -n 9 ./Packages)
+
+$(tail -n 9 ./Packages)"
+testrred 'Single line change' 'a spacy line' '10c
+
+.' "$(head -n 9 ./Packages)
+
+$(tail -n 9 ./Packages)"
+testrred 'Single line change' 'last line' '19c
+ And a cat.
+.' "$(head -n -1 ./Packages)
+ And a cat."
+
+testrred 'Multi line change' 'exchange' '5,7c
+ - good stuff
+ - more good stuff
+ - even more good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+ - even more good stuff
+$(tail -n 12 ./Packages)"
+testrred 'Multi line change' 'less' '5,7c
+ - good stuff
+ - more good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+$(tail -n 12 ./Packages)"
+testrred 'Multi line change' 'more' '5,7c
+ - good stuff
+ - more good stuff
+ - even more good stuff
+ - bonus good stuff
+.' "$(head -n 4 ./Packages)
+ - good stuff
+ - more good stuff
+ - even more good stuff
+ - bonus good stuff
+$(tail -n 12 ./Packages)"
+testrred 'Patch file' 'empty' '' "$(cat ./Packages)"
+
+failrred() {
+ msgtest 'Failure caused by' "$1"
+ echo "$2" > Packages.ed
+ rred() {
+ cat Packages | runapt "${METHODSDIR}/rred" "$@"
+ }
+ testfailure --nomsg rred -f Packages.ed
+ testfailure runapt "${METHODSDIR}/rred" -t Packages Packages-patched Packages.ed
+}
+
+failrred 'Bogus content' '<html>
+</html>'
+
+# not a problem per-se, but we want our parser to be really strict
+failrred 'Empty line patch file' '
+'
+failrred 'Empty line before command' '
+1d'
+failrred 'Empty line after command' '1d
+'
+failrred 'Empty line between commands' '17d
+
+7d'
+failrred 'Empty spaces lines before command' '
+1d'
+failrred 'Empty spaces lines after command' '1d
+ '
+failrred 'Empty spaces lines between commands' '17d
+
+7d'
+
+# the line before the first one can't be deleted/changed
+failrred 'zero line delete' '0d'
+failrred 'zero line change' '0c
+Package: supercoolstuff
+.'
+# and this makes no sense at all
+failrred 'negative line delete' '-1d'
+failrred 'negative line change' '-1c
+Package: supercoolstuff
+.'
+failrred 'negative line add' '-1a
+Package: supercoolstuff
+.'
+failrred 'Wrong order of commands' '7d
+17d'
+failrred 'End before start' '7,6d'
+
+# deal correctly with patch merging
+mergepatches() {
+ local CONTENT="$1"
+ shift
+ testsuccess runapt "${METHODSDIR}/rred" Packages.ed-* "$@"
+ cp -a rootdir/tmp/testsuccess.output patch.ed
+ if [ "$#" = '0' ]; then
+ testfileequal 'patch.ed' "$CONTENT"
+ fi
+}
+createpatch() {
+ echo "$2"
+}
+
+createpatch 'Change dog to cat + kitties' '19c
+ And a cat!
+
+Package: extra-kittens
+Version: unavailable
+Description: fix later
+.' > Packages.ed-0
+createpatch 'Remove more stuff and fix later' '23d,
+6d' > Packages.ed-1
+testsuccess apthelper cat-file --compress gzip Packages.ed-1
+mv rootdir/tmp/testsuccess.output Packages.ed-1.gz
+testsuccess rm Packages.ed-1
+touch Packages.ed-2 # an empty patch
+createpatch 'Remove (old) dog paragraph' '10,19d' > Packages.ed-3
+mergepatches '11,19c
+Package: extra-kittens
+Version: unavailable
+.
+6d' -C 'gzip'
+mv patch.ed patch.ed.gz
+mergepatches '11,19c
+Package: extra-kittens
+Version: unavailable
+.
+6d'
+testfileequal patch.ed "$(apthelper cat-file patch.ed.gz)"
+testrred 'Apply' 'merged patch' "$(cat patch.ed)" 'Package: coolstuff
+Version: 0.8.15
+Description: collection of stuff
+ A lot, too much to iterate all, but at least this:
+ - stuff
+ - even more stuff
+ .
+ And a cow.
+
+Package: extra-kittens
+Version: unavailable'
diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed
new file mode 100755
index 0000000..fc63d0e
--- /dev/null
+++ b/test/integration/test-multiarch-allowed
@@ -0,0 +1,326 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed'
+insertpackage 'unstable' 'needsfoo' 'amd64,i386' '1' 'Depends: foo'
+insertpackage 'unstable' 'needsfooany' 'amd64,i386' '1' 'Depends: foo:any'
+insertpackage 'unstable' 'needsfoover1' 'amd64,i386' '1' 'Depends: foo:any (>= 1)'
+insertpackage 'unstable' 'needsfoover2' 'amd64,i386' '1' 'Depends: foo:any (>= 2)'
+insertpackage 'unstable' 'hatesfoo' 'amd64' '1' 'Conflicts: foo'
+insertpackage 'unstable' 'hatesfooany' 'amd64' '1' 'Conflicts: foo:any' # this makes no sense…?
+insertpackage 'unstable' 'hatesfoonative' 'amd64' '1' 'Conflicts: foo:amd64'
+
+insertpackage 'unstable' 'coolfoo' 'amd64' '1' 'Multi-Arch:allowed
+Provides: coolbar'
+insertpackage 'unstable' 'coolfoover' 'amd64' '1' 'Multi-Arch:allowed
+Provides: coolbar (= 2)'
+insertpackage 'unstable' 'needscoolfoo' 'amd64,i386' '1' 'Depends: coolfoo, coolbar'
+insertpackage 'unstable' 'needscoolfooany' 'amd64,i386' '1' 'Depends: coolfoo:any, coolbar:any'
+insertpackage 'unstable' 'needscoolfoover0' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar:any'
+insertpackage 'unstable' 'needscoolfoover1' 'amd64' '1' 'Depends: coolfoo:any (>= 1), coolbar:any (>= 1)'
+insertpackage 'unstable' 'needscoolfoover2' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar:any (>= 1)'
+insertpackage 'unstable' 'needscoolfoover3' 'amd64' '1' 'Depends: coolfoo:any (>= 2), coolbar:any (>= 3)'
+
+setupaptarchive
+
+BADPREFIX='Reading package lists...
+Building dependency tree...
+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:
+'
+
+solveableinsinglearch0() {
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo needsfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst needsfoo (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf needsfoo (1 unstable [amd64])' aptget install needsfoo -s
+}
+solveableinsinglearch0
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo:i386
+The following NEW packages will be installed:
+ foo:i386 needsfoo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst needsfoo:i386 (1 unstable [i386])
+Conf foo:i386 (1 unstable [i386])
+Conf needsfoo:i386 (1 unstable [i386])' aptget install needsfoo:i386 -s
+# FIXME: same problem, but two different unmet dependency messages depending on install order
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ foo : Conflicts: foo:i386 but 1 is to be installed
+ foo:i386 : Conflicts: foo but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoo:i386 : Depends: foo:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ foo : Conflicts: foo:i386 but 1 is to be installed
+ foo:i386 : Conflicts: foo but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s
+
+solveableinsinglearch1() {
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo $1
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst $1 (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf $1 (1 unstable [amd64])" aptget install $1 -s
+}
+
+testneedsfooallgood() {
+ solveableinsinglearch1 $1
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ foo $1:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [amd64])
+Inst $1:i386 (1 unstable [i386])
+Conf foo (1 unstable [amd64])
+Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 $1:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst $1:i386 (1 unstable [i386])
+Conf foo:i386 (1 unstable [i386])
+Conf $1:i386 (1 unstable [i386])" aptget install $1:i386 foo:i386 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 $1
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst $1 (1 unstable [amd64])
+Conf foo:i386 (1 unstable [i386])
+Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s
+}
+testneedsfooallgood 'needsfooany'
+testneedsfooallgood 'needsfoover1'
+
+NEEDSFOO2NATIVE="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2 : Depends: foo:any (>= 2)
+E: Unable to correct problems, you have held broken packages."
+NEEDSFOO2FOREIGN="$BADPREFIX
+The following packages have unmet dependencies:
+ needsfoover2:i386 : Depends: foo:any (>= 2)
+E: Unable to correct problems, you have held broken packages."
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
+testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 -s
+testfailureequal "$NEEDSFOO2FOREIGN" aptget install needsfoover2:i386 foo:i386 -s
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 foo:i386 -s
+
+solveableinsinglearch2() {
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoo : Conflicts: foo but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s
+ # the message differs slightly between single and multiarch
+ testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoonative : Conflicts: foo:amd64
+E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s
+}
+solveableinsinglearch2
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfoo : Conflicts: foo:i386 but 1 is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hatesfooany : Conflicts: foo:any
+E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo:i386 hatesfoonative
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1 unstable [i386])
+Inst hatesfoonative (1 unstable [amd64])
+Conf foo:i386 (1 unstable [i386])
+Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s
+
+testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needscoolfoo:i386 : Depends: coolfoo:i386 but it is not installable
+ Depends: coolbar:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s
+solveneedscoolfooanyin() {
+ local NEEDSCOOL='needscoolfooany'
+ if [ "$1" != 'amd64' ]; then NEEDSCOOL="${NEEDSCOOL}:$1"; fi
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo $NEEDSCOOL
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst $NEEDSCOOL (1 unstable [$1])
+Conf coolfoo (1 unstable [amd64])
+Conf $NEEDSCOOL (1 unstable [$1])" aptget install $NEEDSCOOL -s
+}
+solveneedscoolfooanyin 'i386'
+
+solveableinsinglearch3() {
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo needscoolfoo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoo (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo coolfoover needscoolfoo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst coolfoover (1 unstable [amd64])
+Inst needscoolfoo (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf coolfoover (1 unstable [amd64])
+Conf needscoolfoo (1 unstable [amd64])" aptget install needscoolfoo coolfoover -s
+ solveneedscoolfooanyin 'amd64'
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following NEW packages will be installed:
+ coolfoo needscoolfoover0
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoover0 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoover0 (1 unstable [amd64])' aptget install needscoolfoover0 -s
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo coolfoover
+The following NEW packages will be installed:
+ coolfoo coolfoover needscoolfoover1
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst coolfoo (1 unstable [amd64])
+Inst coolfoover (1 unstable [amd64])
+Inst needscoolfoover1 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf coolfoover (1 unstable [amd64])
+Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needscoolfoover2 : Depends: coolfoo:any (>= 2)
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ needscoolfoover3 : Depends: coolfoo:any (>= 2)
+ Depends: coolbar:any (>= 3)
+E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s
+}
+solveableinsinglearch3
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+solveableinsinglearch0
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package needsfoo:i386' aptget install needsfoo:i386 -s
+
+solveableinsinglearch1 'needsfooany'
+solveableinsinglearch1 'needsfoover1'
+testfailureequal "$NEEDSFOO2NATIVE" aptget install needsfoover2 -s
+solveableinsinglearch2
+solveableinsinglearch3
+
+testempty dpkg -C
+msgmsg 'multi-arch with barbarian archs'
+configarchitecture 'amd64' 'i386'
+insertinstalledpackage 'foo' 'armel' '1' 'Multi-Arch: allowed'
+insertinstalledpackage 'coolfoo' 'armel' '1' 'Multi-Arch:allowed
+Provides: coolbar'
+insertinstalledpackage 'bar-needer' 'armel' '1.0' 'Depends: coolbar'
+insertinstalledpackage 'bar-any-needer' 'armel' '1.0' 'Depends: coolbar:any'
+insertinstalledpackage 'bar-armel-needer' 'armel' '1.0' 'Depends: coolbar:armel'
+
+testsuccess aptget check
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armel
+The following NEW packages will be installed:
+ foo needsfooany
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armel [1]
+Inst foo (1 unstable [amd64])
+Inst needsfooany (1 unstable [amd64])
+Conf foo (1 unstable [amd64])
+Conf needsfooany (1 unstable [amd64])' aptget install needsfooany -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armel
+The following NEW packages will be installed:
+ foo needsfooany:i386
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armel [1]
+Inst foo (1 unstable [amd64])
+Inst needsfooany:i386 (1 unstable [i386])
+Conf foo (1 unstable [amd64])
+Conf needsfooany:i386 (1 unstable [i386])' aptget install needsfooany:i386 -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ coolfoo
+The following packages will be REMOVED:
+ bar-armel-needer:armel bar-needer:armel coolfoo:armel
+The following NEW packages will be installed:
+ coolfoo needscoolfoover0
+0 upgraded, 2 newly installed, 3 to remove and 0 not upgraded.
+Remv bar-armel-needer:armel [1.0]
+Remv bar-needer:armel [1.0]
+Remv coolfoo:armel [1] [bar-any-needer:armel ]
+Inst coolfoo (1 unstable [amd64])
+Inst needscoolfoover0 (1 unstable [amd64])
+Conf coolfoo (1 unstable [amd64])
+Conf needscoolfoover0 (1 unstable [amd64])' aptget install needscoolfoover0 -s
diff --git a/test/integration/test-multiarch-barbarian b/test/integration/test-multiarch-barbarian
new file mode 100755
index 0000000..293f227
--- /dev/null
+++ b/test/integration/test-multiarch-barbarian
@@ -0,0 +1,243 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildsimplenativepackage 'foreign-foo' 'amd64,i386' '1' 'stable' 'Multi-Arch: foreign
+Provides: foreign-bar'
+buildsimplenativepackage 'allowed-foo' 'amd64,i386' '1' 'stable' 'Multi-Arch: allowed
+Provides: allowed-bar'
+buildsimplenativepackage 'needs-foreign-foo' 'amd64,i386' '1' 'stable' 'Depends: foreign-foo'
+buildsimplenativepackage 'needs-foreign-bar' 'amd64,i386' '1' 'stable' 'Depends: foreign-bar'
+buildsimplenativepackage 'needs-allowed-foo' 'amd64,i386' '1' 'stable' 'Depends: allowed-foo'
+buildsimplenativepackage 'needs-allowed-bar' 'amd64,i386' '1' 'stable' 'Depends: allowed-bar'
+buildsimplenativepackage 'needs-allowed-foo-any' 'amd64,i386' '1' 'stable' 'Depends: allowed-foo:any'
+buildsimplenativepackage 'needs-allowed-bar-any' 'amd64,i386' '1' 'stable' 'Depends: allowed-bar:any'
+
+setupaptarchive
+
+simulateinstall() {
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ $1-foo
+The following NEW packages will be installed:
+ $1-foo needs-$1-$2
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst $1-foo (1 stable [amd64])
+Inst needs-$1-$2 (1 stable [amd64])
+Conf $1-foo (1 stable [amd64])
+Conf needs-$1-$2 (1 stable [amd64])" apt install needs-$1-$2 -s
+}
+simulateinstall 'foreign' 'foo'
+simulateinstall 'foreign' 'bar'
+simulateinstall 'allowed' 'foo'
+simulateinstall 'allowed' 'bar'
+simulateinstall 'allowed' 'foo-any'
+simulateinstall 'allowed' 'bar-any'
+
+# install a barbaric architecture which wont do
+insertinstalledpackage 'foreign-foo' 'armel' '1' 'Multi-Arch: foreign
+Provides: foreign-bar'
+insertinstalledpackage 'allowed-foo' 'armel' '1' 'Multi-Arch: allowed
+Provides: allowed-bar'
+testdpkginstalled foreign-foo:armel allowed-foo:armel
+
+runandsimulateaptinstall() {
+ local MSG="$1"
+ shift
+ testsuccessequal "$MSG" apt install -s "$@"
+ testsuccess apt install -y "$@"
+}
+
+runandsimulateaptinstall 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ allowed-foo foreign-foo
+The following packages will be REMOVED:
+ allowed-foo:armel foreign-foo:armel
+The following NEW packages will be installed:
+ allowed-foo foreign-foo needs-allowed-bar-any needs-allowed-foo-any
+ needs-foreign-bar needs-foreign-foo
+0 upgraded, 6 newly installed, 2 to remove and 0 not upgraded.
+Remv allowed-foo:armel [1]
+Remv foreign-foo:armel [1]
+Inst allowed-foo (1 stable [amd64])
+Inst foreign-foo (1 stable [amd64])
+Inst needs-allowed-bar-any (1 stable [amd64])
+Inst needs-allowed-foo-any (1 stable [amd64])
+Inst needs-foreign-bar (1 stable [amd64])
+Inst needs-foreign-foo (1 stable [amd64])
+Conf allowed-foo (1 stable [amd64])
+Conf foreign-foo (1 stable [amd64])
+Conf needs-allowed-bar-any (1 stable [amd64])
+Conf needs-allowed-foo-any (1 stable [amd64])
+Conf needs-foreign-bar (1 stable [amd64])
+Conf needs-foreign-foo (1 stable [amd64])' needs-foreign-foo needs-foreign-bar needs-allowed-foo-any needs-allowed-bar-any
+runandsimulateaptinstall 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following NEW packages will be installed:
+ needs-allowed-bar needs-allowed-foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst needs-allowed-bar (1 stable [amd64])
+Inst needs-allowed-foo (1 stable [amd64])
+Conf needs-allowed-bar (1 stable [amd64])
+Conf needs-allowed-foo (1 stable [amd64])' needs-allowed-foo needs-allowed-bar
+testdpkginstalled foreign-foo:amd64 allowed-foo:amd64 needs-foreign-foo needs-foreign-bar needs-allowed-foo-any needs-allowed-bar-any
+testempty dpkg -C
+
+# check if dependencies between barbarians work
+testsuccess aptget check
+configarchitecture 'i386'
+testsuccess aptget check
+configarchitecture 'amd64' 'i386'
+
+testsuccess apt purge -y needs-foreign-foo needs-foreign-bar needs-allowed-foo-any needs-allowed-bar-any
+testdpkgnotinstalled foreign-foo:armel allowed-foo:armel needs-foreign-foo needs-foreign-bar needs-allowed-foo-any needs-allowed-bar-any
+testdpkginstalled foreign-foo:amd64 allowed-foo:amd64 needs-allowed-foo needs-allowed-bar
+
+runandsimulateaptinstall 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ allowed-foo:i386 foreign-foo:i386
+The following packages will be REMOVED:
+ allowed-foo foreign-foo needs-allowed-bar needs-allowed-foo
+The following NEW packages will be installed:
+ allowed-foo:i386 foreign-foo:i386 needs-allowed-bar-any
+ needs-allowed-foo-any needs-foreign-bar needs-foreign-foo
+0 upgraded, 6 newly installed, 4 to remove and 0 not upgraded.
+Remv needs-allowed-foo [1]
+Remv needs-allowed-bar [1]
+Remv allowed-foo [1]
+Remv foreign-foo [1]
+Inst allowed-foo:i386 (1 stable [i386])
+Inst foreign-foo:i386 (1 stable [i386])
+Inst needs-allowed-bar-any (1 stable [amd64])
+Inst needs-allowed-foo-any (1 stable [amd64])
+Inst needs-foreign-bar (1 stable [amd64])
+Inst needs-foreign-foo (1 stable [amd64])
+Conf allowed-foo:i386 (1 stable [i386])
+Conf foreign-foo:i386 (1 stable [i386])
+Conf needs-allowed-bar-any (1 stable [amd64])
+Conf needs-allowed-foo-any (1 stable [amd64])
+Conf needs-foreign-bar (1 stable [amd64])
+Conf needs-foreign-foo (1 stable [amd64])' needs-foreign-foo needs-foreign-bar needs-allowed-foo-any needs-allowed-bar-any foreign-foo:amd64- allowed-foo:amd64-
+
+runandsimulateaptinstall 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ needs-allowed-bar-any needs-allowed-foo-any needs-foreign-bar
+ needs-foreign-foo
+The following NEW packages will be installed:
+ needs-allowed-bar-any:i386 needs-allowed-foo-any:i386 needs-foreign-bar:i386
+ needs-foreign-foo:i386
+0 upgraded, 4 newly installed, 4 to remove and 0 not upgraded.
+Remv needs-allowed-bar-any [1]
+Remv needs-allowed-foo-any [1]
+Remv needs-foreign-bar [1]
+Remv needs-foreign-foo [1]
+Inst needs-allowed-bar-any:i386 (1 stable [i386])
+Inst needs-allowed-foo-any:i386 (1 stable [i386])
+Inst needs-foreign-bar:i386 (1 stable [i386])
+Inst needs-foreign-foo:i386 (1 stable [i386])
+Conf needs-allowed-bar-any:i386 (1 stable [i386])
+Conf needs-allowed-foo-any:i386 (1 stable [i386])
+Conf needs-foreign-bar:i386 (1 stable [i386])
+Conf needs-foreign-foo:i386 (1 stable [i386])' needs-foreign-foo:i386 needs-foreign-bar:i386 needs-allowed-foo-any:i386 needs-allowed-bar-any:i386
+
+runandsimulateaptinstall 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ allowed-foo:i386 foreign-foo:i386
+The following NEW packages will be installed:
+ allowed-foo foreign-foo
+0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv allowed-foo:i386 [1] [needs-allowed-bar-any:i386 needs-allowed-foo-any:i386 ]
+Inst allowed-foo (1 stable [amd64])
+Remv foreign-foo:i386 [1] [needs-foreign-bar:i386 needs-foreign-foo:i386 ]
+Inst foreign-foo (1 stable [amd64])
+Conf allowed-foo (1 stable [amd64])
+Conf foreign-foo (1 stable [amd64])' foreign-foo:amd64 allowed-foo:amd64
+testdpkginstalled foreign-foo:amd64 needs-foreign-foo:i386 needs-foreign-bar:i386
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following additional packages will be installed:
+ allowed-foo:i386
+The following packages will be REMOVED:
+ allowed-foo
+The following NEW packages will be installed:
+ allowed-foo:i386 needs-allowed-bar:i386 needs-allowed-foo:i386
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv allowed-foo [1] [needs-allowed-bar-any:i386 needs-allowed-foo-any:i386 ]
+Inst allowed-foo:i386 (1 stable [i386])
+Inst needs-allowed-bar:i386 (1 stable [i386])
+Inst needs-allowed-foo:i386 (1 stable [i386])
+Conf allowed-foo:i386 (1 stable [i386])
+Conf needs-allowed-bar:i386 (1 stable [i386])
+Conf needs-allowed-foo:i386 (1 stable [i386])' apt install needs-allowed-foo:i386 needs-allowed-bar:i386 -s
+
+testsuccess aptget check
+# make amd64 packages barbaric: the needs are i386 native, the providers amd64 barbaric!
+configarchitecture 'i386'
+testfailureequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ needs-allowed-bar-any : Depends: allowed-bar:any
+ needs-allowed-foo-any : Depends: allowed-foo:any
+ needs-foreign-bar : Depends: foreign-bar
+ needs-foreign-foo : Depends: foreign-foo but it is not installed
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." aptget check
+
+# make i386 packages barbaric, so the providers are now native
+configarchitecture 'amd64'
+testsuccess aptget check
+
+testsuccess apt install -y needs-allowed-foo needs-allowed-bar
+testsuccess dpkg --remove --force-depends foreign-foo:amd64 allowed-foo:amd64
+testdpkginstalled needs-foreign-foo:i386 needs-foreign-bar:i386 needs-allowed-foo needs-allowed-bar needs-allowed-foo-any:i386 needs-allowed-bar-any:i386
+testfailure aptget check
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ allowed-foo foreign-foo
+The following NEW packages will be installed:
+ allowed-foo foreign-foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst allowed-foo (1 stable [amd64]) [needs-foreign-bar:i386 needs-foreign-foo:i386 ]
+Inst foreign-foo (1 stable [amd64])
+Conf allowed-foo (1 stable [amd64])
+Conf foreign-foo (1 stable [amd64])' apt install --fix-broken -s
+# note that dpkg would not accept this as its a barbaric arch,
+# but it is the easiest to try if the dependencies as such work in apt
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Correcting dependencies... Done
+Note, selecting 'foreign-foo:i386' instead of './incoming/foreign-foo_1_i386.deb'
+Note, selecting 'allowed-foo:i386' instead of './incoming/allowed-foo_1_i386.deb'
+The following packages will be REMOVED:
+ needs-allowed-bar needs-allowed-foo
+The following NEW packages will be installed:
+ allowed-foo:i386 foreign-foo:i386
+0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv needs-allowed-bar [1] [needs-foreign-bar:i386 needs-foreign-foo:i386 needs-allowed-bar-any:i386 needs-allowed-foo-any:i386 needs-allowed-foo:amd64 ]
+Remv needs-allowed-foo [1] [needs-foreign-bar:i386 needs-foreign-foo:i386 needs-allowed-bar-any:i386 needs-allowed-foo-any:i386 ]
+Inst allowed-foo:i386 (1 local-deb [i386]) [needs-foreign-bar:i386 needs-foreign-foo:i386 ]
+Inst foreign-foo:i386 (1 local-deb [i386])
+Conf allowed-foo:i386 (1 local-deb [i386])
+Conf foreign-foo:i386 (1 local-deb [i386])" apt install --fix-broken -s ./incoming/foreign-foo_1_i386.deb ./incoming/allowed-foo_1_i386.deb
diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign
new file mode 100755
index 0000000..713b27b
--- /dev/null
+++ b/test/integration/test-multiarch-foreign
@@ -0,0 +1,287 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo'
+insertpackage 'unstable' 'cool-foo-x64' 'amd64' '1.0' 'Depends: foo:amd64'
+insertpackage 'unstable' 'cool-foo-x32' 'amd64' '1.0' 'Depends: foo:i386'
+insertpackage 'unstable' 'hates-foo' 'amd64,i386' '1.0' 'Conflicts: foo'
+insertpackage 'unstable' 'hates-foo-x64' 'amd64' '1.0' 'Conflicts: foo:amd64'
+insertpackage 'unstable' 'hates-foo-x32' 'amd64' '1.0' 'Conflicts: foo:i386'
+insertpackage 'unstable' 'foo' 'amd64,i386,armel' '1.0' 'Multi-Arch: foreign'
+
+insertpackage 'unstable' 'cool-bar' 'amd64,i386' '1.0' 'Depends: bar-provider'
+insertpackage 'unstable' 'cool-bar-x64' 'amd64' '1.0' 'Depends: bar-provider:amd64'
+insertpackage 'unstable' 'cool-bar-x32' 'amd64' '1.0' 'Depends: bar-provider:i386'
+insertpackage 'unstable' 'hates-bar' 'amd64,i386' '1.0' 'Conflicts: bar-provider'
+insertpackage 'unstable' 'hates-bar-x64' 'amd64' '1.0' 'Conflicts: bar-provider:amd64'
+insertpackage 'unstable' 'hates-bar-x32' 'amd64' '1.0' 'Conflicts: bar-provider:i386'
+insertpackage 'unstable' 'bar' 'amd64,i386,armel' '1.0' 'Provides: bar-provider
+Multi-Arch: foreign'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo:i386 foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo:i386 (1.0 unstable [i386])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo:i386 (1.0 unstable [i386])' aptget install cool-foo:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1.0 unstable [i386])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:i386 (1.0 unstable [i386])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo:armel
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:armel (1.0 unstable [armel])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo:armel (1.0 unstable [armel])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:armel -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar:i386 (1.0 unstable [i386])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar:i386 (1.0 unstable [i386])' aptget install cool-bar:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar:armel cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:armel (1.0 unstable [armel])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:armel (1.0 unstable [armel])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar:i386' instead of 'bar-provider:i386'
+The following NEW packages will be installed:
+ bar:i386 cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider:i386 -s
+
+satisfiable_in_singlearch() {
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo:amd64 foo:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar:amd64 bar:amd64 -s
+
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Note, selecting 'bar' instead of 'bar-provider'
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])" aptget install cool-bar bar-provider -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ cool-foo-x64 foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo-x64 (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo-x64 (1.0 unstable [amd64])' aptget install cool-foo-x64 -s
+}
+
+hatersgonnahate() {
+ BADPREFIX='Reading package lists...
+Building dependency tree...
+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:
+'
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ hates-foo : Conflicts: foo
+ Conflicts: foo:i386
+ Conflicts: foo:armel
+E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s
+ testfailureequal "$BADPREFIX
+The following packages have unmet dependencies:
+ $2 : Conflicts: foo:$4
+E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ $1 $3
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst $1 (1.0 unstable [$4])
+Inst $3 (1.0 unstable [amd64])
+Conf $1 (1.0 unstable [$4])
+Conf $3 (1.0 unstable [amd64])" aptget install $1 $3 -s
+}
+hatersgonnahate 'foo' 'hates-foo-x64' 'hates-foo-x32' 'amd64'
+hatersgonnahate 'foo:i386' 'hates-foo-x32' 'hates-foo-x64' 'i386'
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo:i386
+The following NEW packages will be installed:
+ cool-foo-x32 foo:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo:i386 (1.0 unstable [i386])
+Inst cool-foo-x32 (1.0 unstable [amd64])
+Conf foo:i386 (1.0 unstable [i386])
+Conf cool-foo-x32 (1.0 unstable [amd64])' aptget install cool-foo-x32 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar:i386
+The following NEW packages will be installed:
+ bar:i386 cool-bar-x32
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar:i386 (1.0 unstable [i386])
+Inst cool-bar-x32 (1.0 unstable [amd64])
+Conf bar:i386 (1.0 unstable [i386])
+Conf cool-bar-x32 (1.0 unstable [amd64])' aptget install cool-bar-x32 -s
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar cool-bar-x64
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar-x64 (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar-x64 (1.0 unstable [amd64])' aptget install cool-bar-x64 -s
+
+
+satisfiable_in_singlearch
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+satisfiable_in_singlearch
+
+msgmsg 'switch to multi-arch with barbarian architecture'
+
+insertinstalledpackage 'foo' 'armhf' '1.0' 'Multi-Arch: foreign'
+insertinstalledpackage 'bar' 'armhf' '1.0' 'Provides: bar-provider
+Multi-Arch: foreign'
+insertinstalledpackage 'bar-needer' 'armhf' '1.0' 'Depends: bar-provider'
+
+testsuccess aptget check
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following packages will be REMOVED:
+ foo:armhf
+The following NEW packages will be installed:
+ cool-foo foo
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:armhf [1.0]
+Inst foo (1.0 unstable [amd64])
+Inst cool-foo (1.0 unstable [amd64])
+Conf foo (1.0 unstable [amd64])
+Conf cool-foo (1.0 unstable [amd64])' aptget install cool-foo -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar
+The following packages will be REMOVED:
+ bar:armhf
+The following NEW packages will be installed:
+ bar cool-bar
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv bar:armhf [1.0] [bar-needer:armhf ]
+Inst bar (1.0 unstable [amd64])
+Inst cool-bar (1.0 unstable [amd64])
+Conf bar (1.0 unstable [amd64])
+Conf cool-bar (1.0 unstable [amd64])' aptget install cool-bar -s
+
+# a barbarian doesn't satisfy another either
+insertinstalledpackage 'bar-needer2' 's390x' '1.0' 'Depends: bar-provider'
+testfailure aptget check
diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
new file mode 100755
index 0000000..2b16552
--- /dev/null
+++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
@@ -0,0 +1,179 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+configdpkgnoopchroot
+
+if [ ! -e /proc/self/fd ]; then
+ msgskip "needs /proc/self/fd"
+ exit 0
+fi
+
+setupsimplenativepackage "fdleaks" 'all' '1.0' 'unstable'
+BUILDDIR="incoming/fdleaks-1.0"
+for script in 'preinst' 'postinst' 'prerm' 'postrm'; do
+ cat > ${BUILDDIR}/debian/$script << EOF
+#!/bin/sh
+if [ -e '$(pwd)/rootdir/tmp/read_stdin' ]; then
+ read line;
+ echo "STDIN: -\$line-"
+fi
+ls -l /proc/self/fd/
+EOF
+done
+buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
+rm -rf "$BUILDDIR"
+
+PKGNAME='fdleaks:all'
+if dpkg --compare-versions "$(dpkg_version)" 'lt' '1.16.2'; then
+ PKGNAME='fdleaks'
+fi
+
+setupaptarchive
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess aptget install -y fdleaks -qq < /dev/null
+
+checkfdleak() {
+ msgtest 'Check if fds were not' "leaked: expect $1"
+ if [ "$(grep -e 'root root' -e "$(id -un) $(id -gn)" rootdir/tmp/testsuccess.output | wc -l)" = "$1" ]; then
+ msgpass
+ else
+ echo
+ cat rootdir/tmp/testsuccess.output
+ msgfail
+ fi
+}
+checkinstall() {
+ checkfdleak 8
+
+ cp rootdir/tmp/testsuccess.output terminal.output
+ tail -n +3 rootdir/var/log/apt/term.log | head -n -1 > terminal.log
+ testfileequal 'terminal.log' "$(cat terminal.output)"
+
+ testequalor2 "startup archives unpack
+install $PKGNAME <none> 1.0
+status half-installed $PKGNAME 1.0
+status unpacked $PKGNAME 1.0
+startup packages configure
+configure $PKGNAME 1.0 <none>
+status unpacked $PKGNAME 1.0
+status half-configured $PKGNAME 1.0
+status installed $PKGNAME 1.0" "startup archives unpack
+install $PKGNAME <none> 1.0
+status half-installed $PKGNAME 1.0
+status unpacked $PKGNAME 1.0
+status unpacked $PKGNAME 1.0
+startup packages configure
+configure $PKGNAME 1.0 <none>
+status unpacked $PKGNAME 1.0
+status half-configured $PKGNAME 1.0
+status installed $PKGNAME 1.0" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+}
+checkinstall
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess aptget purge -y fdleaks -qq
+checkpurge() {
+ checkfdleak 12
+
+ cp rootdir/tmp/testsuccess.output terminal.output
+ tail -n +3 rootdir/var/log/apt/term.log | head -n -1 > terminal.log
+ testfileequal 'terminal.log' "$(cat terminal.output)"
+
+ if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.18.11'; then
+ testequalor2 "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+ else
+ testequalor2 "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+remove $PKGNAME 1.0 <none>
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" "startup packages remove
+status installed $PKGNAME 1.0
+remove $PKGNAME 1.0 <none>
+status half-configured $PKGNAME 1.0
+status half-installed $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+startup packages configure
+startup packages purge
+remove $PKGNAME 1.0 <none>
+purge $PKGNAME 1.0 <none>
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status config-files $PKGNAME 1.0
+status not-installed $PKGNAME <none>
+startup packages configure" cut -f 3- -d' ' rootdir/var/log/dpkg.log
+ fi
+ testequalor2 "dpkg-query: no packages found matching ${PKGNAME}" "No packages found matching ${PKGNAME}." dpkg -l "$PKGNAME"
+}
+checkpurge
+
+msgtest 'setsid provided is new enough to support' '-w'
+if dpkg-checkbuilddeps -d 'util-linux (>= 2.24.2-1)' /dev/null >/dev/null 2>&1; then
+ msgpass
+else
+ msgskip "$(command dpkg -l util-linux)"
+ exit
+fi
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess runapt command setsid -w "${APTCMDLINEBINDIR}/apt-get" install -y fdleaks -qq < /dev/null
+checkinstall
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+testsuccess runapt command setsid -w "${APTCMDLINEBINDIR}/apt-get" purge -y fdleaks -qq
+checkpurge
+
+touch rootdir/tmp/read_stdin
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+for i in $(seq 1 10); do echo "$i"; done | testsuccess aptget install -y fdleaks -qq
+checkinstall
+testequal '2' grep -c '^STDIN: ' rootdir/var/log/apt/term.log
+
+rm -f rootdir/var/log/dpkg.log rootdir/var/log/apt/term.log
+yes '' | testsuccess runapt command setsid -w "${APTCMDLINEBINDIR}/apt-get" purge -y fdleaks -qq
+checkpurge
+testequal '3' grep -c '^STDIN: ' rootdir/var/log/apt/term.log
diff --git a/test/integration/test-or-group-substitution b/test/integration/test-or-group-substitution
new file mode 100755
index 0000000..51bd9aa
--- /dev/null
+++ b/test/integration/test-or-group-substitution
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+# One package (non-essential) depends on either of two other packages, which conflict with each other.
+
+insertinstalledpackage 'chrony' 'amd64' '1' 'Conflicts: openntpd'
+
+insertpackage 'sid' 'openntpd' 'amd64' '1' 'Conflicts: openntpd'
+
+insertinstalledpackage 'systemd' 'amd64' '1' 'Depends: chrony | openntpd'
+
+# An essential package depends on the non-essential package that has an or group dependency.
+
+insertinstalledpackage 'pop-desktop' 'amd64' '1' 'Depends: systemd
+Essential: yes'
+
+# An additional, non-essential package depends on the package that has an or group dependency.
+
+insertinstalledpackage 'unrelated-package' 'amd64' '1' 'Depends: systemd'
+
+setupaptarchive
+
+# The test removes the currently-installed part of the or group
+# (it should be replaced with the other one automatically.)
+#
+# The test should fail if the package "unrelated-package" is removed.
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ openntpd
+The following packages will be REMOVED:
+ chrony
+The following NEW packages will be installed:
+ openntpd
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv chrony [1] [systemd:amd64 ]
+Inst openntpd (1 sid [amd64])
+Conf openntpd (1 sid [amd64])' aptget -s remove chrony
diff --git a/test/integration/test-package-reinstallation b/test/integration/test-package-reinstallation
new file mode 100755
index 0000000..0b48c0a
--- /dev/null
+++ b/test/integration/test-package-reinstallation
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6'
+insertpackage 'unstable' 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6'
+insertinstalledpackage 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)'
+insertpackage 'unstable' 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)'
+insertinstalledpackage 'apt' 'i386' '0.8.15' 'Depends: libc6'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst libc-bin [2.13-8] (2.13-8 unstable [i386])
+Conf libc-bin (2.13-8 unstable [i386])
+Inst libc6 [2.13-8] (2.13-8 unstable [i386])
+Conf libc6 (2.13-8 unstable [i386])' aptget install --reinstall libc6 libc-bin -s
diff --git a/test/integration/test-parse-all-archs-into-cache b/test/integration/test-parse-all-archs-into-cache
new file mode 100755
index 0000000..7485431
--- /dev/null
+++ b/test/integration/test-parse-all-archs-into-cache
@@ -0,0 +1,93 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'bar' 'i386' '1' 'Depends: foo'
+insertpackage 'unstable' 'foo' 'i386' '1' 'Multi-Arch: foreign
+Depends: libfoo1'
+insertpackage 'unstable' 'libfoo1' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'experimental' 'foo' 'i386' '2' 'Multi-Arch: foreign
+Depends: libfoo1 (>= 2)'
+insertpackage 'experimental' 'libfoo1' 'i386' '2' 'Multi-Arch: same'
+
+# note: the system has amd64 not configured!
+insertinstalledpackage 'foo' 'amd64' '1' 'Multi-Arch: foreign
+Depends: libfoo1'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+You might want to run 'apt --fix-broken install' to correct these.
+The following packages have unmet dependencies:
+ foo:amd64 : Depends: libfoo1:amd64 but it is not installable
+E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution)." aptget check -s
+
+insertinstalledpackage 'libfoo1' 'amd64' '1' 'Multi-Arch: same'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...' aptget check -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libfoo1
+The following packages will be REMOVED:
+ foo:amd64
+The following NEW packages will be installed:
+ foo libfoo1
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Inst libfoo1 (1 unstable [i386])
+Inst foo (1 unstable [i386])
+Conf libfoo1 (1 unstable [i386])
+Conf foo (1 unstable [i386])' aptget install foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Selected version '2' (experimental [i386]) for 'foo'
+Selected version '2' (experimental [i386]) for 'libfoo1' because of 'foo'
+The following additional packages will be installed:
+ libfoo1
+The following packages will be REMOVED:
+ foo:amd64 libfoo1:amd64
+The following NEW packages will be installed:
+ foo libfoo1
+0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Remv libfoo1:amd64 [1]
+Inst libfoo1 (2 experimental [i386])
+Inst foo (2 experimental [i386])
+Conf libfoo1 (2 experimental [i386])
+Conf foo (2 experimental [i386])" aptget install foo/experimental -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo libfoo1
+The following packages will be REMOVED:
+ foo:amd64
+The following NEW packages will be installed:
+ bar foo libfoo1
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv foo:amd64 [1]
+Inst libfoo1 (1 unstable [i386])
+Inst foo (1 unstable [i386])
+Inst bar (1 unstable [i386])
+Conf libfoo1 (1 unstable [i386])
+Conf foo (1 unstable [i386])
+Conf bar (1 unstable [i386])' aptget install bar -s
+
+configarchitecture 'i386' 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ bar
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [i386])
+Conf bar (1 unstable [i386])' aptget install bar -s
diff --git a/test/integration/test-partial-file-support b/test/integration/test-partial-file-support
new file mode 100755
index 0000000..88fa913
--- /dev/null
+++ b/test/integration/test-partial-file-support
@@ -0,0 +1,157 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+changetowebserver
+
+copysource() {
+ dd if="$1" bs=1 count="$2" of="$3" 2>/dev/null
+ touch -d "$(stat --format '%y' "${TESTFILE}")" "$3"
+}
+
+DOWNLOADLOG='rootdir/tmp/testdownloadfile.log'
+
+testdownloadfile() {
+ rm -f "$DOWNLOADLOG"
+ msgtest "Testing download of file $2 with" "$1 $5"
+ if ! downloadfile "$2" "$3" "$5" > "$DOWNLOADLOG"; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+ else
+ msgpass
+ fi
+ sed -e '/^ <- / s#%20# #g' -e '/^ <- / s#%0a#\n#g' "$DOWNLOADLOG" | grep '^.*-Hash: ' > receivedhashes.log || true
+ testsuccess test -s receivedhashes.log
+ local HASHES_OK=0
+ local HASHES_BAD=0
+ while read field hash; do
+ local EXPECTED
+ case "$field" in
+ 'MD5Sum-Hash:') EXPECTED="$(md5sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA1-Hash:') EXPECTED="$(sha1sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA256-Hash:') EXPECTED="$(sha256sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'SHA512-Hash:') EXPECTED="$(sha512sum "$TESTFILE" | cut -d' ' -f 1)";;
+ 'Checksum-FileSize-Hash:')
+ #filesize is too weak to check for !=
+ if [ "$4" = '=' ]; then
+ EXPECTED="$(stat -c '%s' "$TESTFILE")"
+ else
+ continue
+ fi
+ ;;
+ *) continue;;
+ esac
+ if [ "$4" = '=' ]; then
+ msgtest 'Test downloaded file for correct' "$field"
+ else
+ msgtest 'Test downloaded file does not match in' "$field"
+ fi
+ if [ "$EXPECTED" "$4" "$hash" ]; then
+ msgpass
+ HASHES_OK=$((HASHES_OK+1));
+ else
+ msgfail "expected: $EXPECTED ; got: $hash"
+ HASHES_BAD=$((HASHES_BAD+1));
+ fi
+ done < receivedhashes.log
+ msgtest 'At least one good hash and no bad ones'
+ if [ $HASHES_OK -eq 0 ] || [ $HASHES_BAD -ne 0 ]; then
+ cat >&2 "$DOWNLOADLOG"
+ msgfail
+ else
+ msgpass
+ fi
+}
+
+TESTFILE='aptarchive/testfile'
+cp -a "${TESTDIR}/framework" "$TESTFILE"
+cp -a "${TESTDIR}/framework" "${TESTFILE}2"
+
+followuprequest() {
+ local DOWN='./downloaded/testfile'
+
+ copysource $TESTFILE 1M $DOWN
+ testdownloadfile 'completely downloaded file' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '416' "$DOWNLOADLOG"
+
+ webserverconfig 'aptwebserver::support::content-range' 'false'
+ copysource $TESTFILE 1M $DOWN
+ testdownloadfile 'completely downloaded file' "${1}/testfile" "$DOWN" '=' "SHA256:$(sha256sum "$TESTFILE" | cut -d' ' -f 1)"
+ testwebserverlaststatuscode '416' "$DOWNLOADLOG"
+ webserverconfig 'aptwebserver::support::content-range' 'true'
+
+ copysource $TESTFILE 1M $DOWN
+ copysource "${TESTFILE}2" 20 "${DOWN}2"
+ msgtest 'Testing download of files with' 'completely downloaded file + partial file'
+ testsuccess --nomsg apthelper -o Debug::Acquire::${1%%:*}=1 -o Debug::pkgAcquire::Worker=1 \
+ download-file "$1/testfile" "$DOWN" '' "$1/testfile2" "${DOWN}2"
+ testwebserverlaststatuscode '206' 'rootdir/tmp/testsuccess.output'
+ testsuccess diff -u "$TESTFILE" "${DOWN}"
+ testsuccess diff -u "${DOWN}" "${DOWN}2"
+}
+
+testrun() {
+ webserverconfig 'aptwebserver::support::range' 'true'
+ webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'bytes'
+ local DOWN='./downloaded/testfile'
+
+ copysource $TESTFILE 0 $DOWN
+ testdownloadfile 'no data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ copysource $TESTFILE 20 $DOWN
+ testdownloadfile 'valid partial data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '206' "$DOWNLOADLOG"
+
+ copysource /dev/zero 20 $DOWN
+ testdownloadfile 'invalid partial data' "${1}/testfile" "$DOWN" '!='
+ testwebserverlaststatuscode '206' "$DOWNLOADLOG"
+
+ webserverconfig 'aptwebserver::closeOnError' 'false'
+ followuprequest "$1"
+ webserverconfig 'aptwebserver::closeOnError' 'true'
+ followuprequest "$1"
+ webserverconfig 'aptwebserver::closeOnError' 'false'
+
+ copysource /dev/zero 1M $DOWN
+ testdownloadfile 'too-big partial file' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ copysource /dev/zero 20 $DOWN
+ touch $DOWN
+ testdownloadfile 'old data' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+
+ if [ "${1%%:*}" = 'https' ] && expr match "$1" "^.*/redirectme$" >/dev/null; then
+ webserverconfig 'aptwebserver::response-header::Accept-Ranges' 'none'
+ else
+ webserverconfig 'aptwebserver::support::range' 'false'
+ fi
+
+ copysource $TESTFILE 20 $DOWN
+ testdownloadfile 'no server support' "${1}/testfile" "$DOWN" '='
+ testwebserverlaststatuscode '200' "$DOWNLOADLOG"
+}
+
+serverconfigs() {
+ msgmsg "${1%%:*}: Test with Content-Length"
+ webserverconfig 'aptwebserver::chunked-transfer-encoding' 'false'
+ testrun "$1"
+ msgmsg "${1%%:*}: Test with Transfer-Encoding: chunked"
+ webserverconfig 'aptwebserver::chunked-transfer-encoding' 'true'
+ testrun "$1"
+}
+
+serverconfigs "http://localhost:${APTHTTPPORT}"
+
+changetohttpswebserver
+
+serverconfigs "https://localhost:${APTHTTPSPORT}"
+
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/' "https://localhost:${APTHTTPSPORT}/"
+serverconfigs "https://localhost:${APTHTTPSPORT}/redirectme"
+serverconfigs "http://localhost:${APTHTTPPORT}/redirectme"
diff --git a/test/integration/test-pdiff-usage b/test/integration/test-pdiff-usage
new file mode 100755
index 0000000..cf3a2f2
--- /dev/null
+++ b/test/integration/test-pdiff-usage
@@ -0,0 +1,412 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+LOWCOSTEXT='lz4'
+
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+cat >rootdir/etc/apt/apt.conf.d/contents.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ flatMetaKey "Contents-\$(ARCHITECTURE)";
+ flatDescription "\$(RELEASE) \$(ARCHITECTURE) Contents";
+};
+EOF
+
+PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+echo 'contents for stuff' > aptarchive/Contents-i386
+compressfile aptarchive/Contents-i386
+echo 'hacked' > aptarchive/hacked-i386
+compressfile aptarchive/hacked-i386
+
+wasmergeused() {
+ if echo "$*" | grep -q -- '-o test::cannot-use-pdiff=1'; then
+ find rootdir/var/lib/apt/lists/partial -name '*-patched*' -delete
+ fi
+
+ testsuccess apt update "$@"
+ #apt update "$@" 2>&1 | tee rootdir/tmp/testsuccess.output
+
+ msgtest 'No intermediate patch files' 'still exist'
+ testempty --nomsg find rootdir/var/lib/apt/lists -name '*.ed' -o -name '*.ed.*' -o -name '*.diff_Index' -o -name '*.diff_Index.xz'
+
+ if echo "$*" | grep -q -- '-o test::cannot-use-pdiff=1'; then
+ msgtest 'Check if pdiff was' 'not used'
+ cp -a rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess --nomsg grep "^Ign:.* Packages\.diff/Index" rootdir/tmp/aptupdate.output
+ return;
+ fi
+
+ msgtest 'Check if the right pdiff merger was used'
+ if grep -q '^pkgAcqIndexMergeDiffs::Done(): rred' rootdir/tmp/testsuccess.output; then
+ if echo "$*" | grep -q -- '-o Acquire::PDiffs::Merge=1'; then
+ msgpass
+ else
+ msgfail "Merge shouldn't have been used, but was"
+ fi
+ elif echo "$*" | grep -q -- '-o Acquire::PDiffs::Merge=1'; then
+ msgfail "Merge should have been used, but wasn't"
+ else
+ msgpass
+ fi
+
+ testequal '1' grep -c rred:601 rootdir/tmp/testsuccess.output
+}
+
+testrun() {
+ configcompression '.' 'xz'
+ msgmsg "Testcase: setup the base with: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ generatereleasefiles
+ signreleasefiles
+ rm -rf aptarchive/Packages.diff rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ testsuccess aptget update "$@"
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ testnopackage newstuff
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt oldstuff
+ configcompression '.' 'gz'
+
+ # see if the code deals properly with leftover partial files
+ partialleftovers
+
+ msgmsg "Testcase: apply with one patch: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") 2000-08-18-2013.28
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") 2000-08-18-2013.28
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") 2000-08-18-2013.28.gz
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ find aptarchive -name 'Packages*' -type f -delete
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with compressed Index and one patch: $*"
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ cat "$PATCHINDEX" | gzip > "${PATCHINDEX}.gz"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ find aptarchive -name 'Packages*' -type f -delete
+ rm "$PATCHINDEX"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with by-hash compressed Index and one patch: $*"
+ local NORMAL="$(readlink -f "./aptarchive/Packages.diff")"
+ local BYHASH="${NORMAL}/by-hash/SHA256"
+ mkdir -p "${BYHASH}"
+ find "${NORMAL}/" -maxdepth 1 -name "Index*" -exec mv '{}' "$BYHASH" \;
+ ln -s "${BYHASH}/Index.gz" "${BYHASH}/$(sha256sum "${BYHASH}/Index.gz" | cut -f1 -d' ')"
+ echo 'foobar' > "${BYHASH}/$(sha256sum "$PATCHFILE" | cut -f1 -d' ')"
+ echo 'foobar' > "${BYHASH}/$(sha256sum "${PATCHFILE}.gz" | cut -f1 -d' ')"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o Acquire::By-Hash=force
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: SHA1-only patches are not used: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA1-Current: $(sha1sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA1-History:
+ 9f4148e06d7faa37062994ff10d0c842d7017513 33053002 2010-08-18-2013.28
+ $(sha1sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA1-Patches:
+ 7651fc0ac57cd83d41c63195a9342e2db5650257 19722 2010-08-18-2013.28
+ $(sha1sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA1-Download:
+ 2365ac0ac57cde3d43c63145e8251a3bd5410213 197 2010-08-18-2013.28.gz
+ $(sha1sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: no download-hashes patches are not used: $*"
+ find aptarchive -name 'Packages*' -type f -delete
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: apply with two patches: $*"
+ cp "${PKGFILE}-new" aptarchive/Packages
+ echo '
+Package: futurestuff
+Version: 1.0
+Architecture: i386
+Maintainer: Joe Sixpack <joe@example.org>
+Installed-Size: 202
+Filename: pool/futurestuff_1.0_i386.deb
+Size: 202200
+SHA256: b46fd154615edaae5ba33c56a5cc0e7deaef23e2da3e4f129727fd660f28f050
+Description: some cool and shiny future stuff
+ This package will appear in the next^2 mirror update
+Description-md5: d5f89fbbc2ce34c455dfee9b67d82b6b' >> aptarchive/Packages
+
+ compressfile 'aptarchive/Packages'
+ PATCHFILE2="aptarchive/Packages.diff/$(date -d 'now + 1hour' '+%Y-%m-%d-%H%M.%S')"
+ diff -e "${PKGFILE}-new" aptarchive/Packages > "${PATCHFILE2}" || true
+ cat "$PATCHFILE2" | gzip > "${PATCHFILE2}.gz"
+ echo "SHA256-Current: $(sha256sum aptarchive/Packages | cut -d' ' -f 1) $(stat -c%s aptarchive/Packages)
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+ $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new") $(basename "${PATCHFILE2}")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+ $(sha256sum "${PATCHFILE2}" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE2}") $(basename "${PATCHFILE2}")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")
+ $(sha256sum "${PATCHFILE2}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE2}.gz") $(basename "${PATCHFILE2}.gz")" > "$PATCHINDEX"
+
+ generatereleasefiles '+2hour'
+ signreleasefiles
+ cp -a aptarchive/Packages Packages-future
+ find aptarchive -name 'Packages*' -type f -delete
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ wasmergeused "$@"
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ # we reuse the archive state of the previous test here
+ msgmsg "Testcase: pdiff handling is stopped if transaction fails $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp Packages-future aptarchive/Packages
+ rm -f rootdir/var/lib/apt/lists/*_Contents-*
+ webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/hacked-i386.gz'
+ testfailure apt update "$@"
+ cp rootdir/tmp/testfailure.output patchdownload.output
+ webserverconfig 'aptwebserver::overwrite::.*Contents-.*::filename' '/Contents-i386.gz'
+ testfailure grep -q -z 'AbortTransaction.* [a-zA-Z0-9+-]\+:600%20' patchdownload.output
+ testnopackage newstuff futurestuff
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt oldstuff
+
+ # we reuse the entire state of the previous test here
+ msgmsg "Testcase: good files from previous fails are picked up from partial: $*"
+ wasmergeused "$@"
+ testfailure grep '^GET /Packages.diff/Index HTTP/1.1' rootdir/tmp/testsuccess.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ # we reuse the archive state of the previous test here
+ msgmsg "Testcase: downloading a patch fails, but successful fallback: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp Packages-future aptarchive/Packages
+ rm "${PATCHFILE}.gz"
+ testsuccess apt update "$@"
+ cp rootdir/tmp/testsuccess.output patchdownload.output
+ # it should be anchored on line start, but multiple processes on the same output stream…
+ testsuccess grep 'Falling back to normal index file acquire' patchdownload.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat Packages-future)
+" aptcache show apt newstuff futurestuff
+
+ msgmsg "Testcase: patch applying fails, but successful fallback: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ breakfiles "$PATCHFILE" "${PATCHFILE}.gz"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ testsuccess apt update "$@"
+ cp -f rootdir/tmp/testsuccess.output rootdir/tmp/aptupdate.output
+ testsuccess grep 'Hash Sum mismatch' rootdir/tmp/aptupdate.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: pdiff patch bigger than index itself: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ # the general testcode checks for leftovers in partial, but as this file
+ # is never touched in this test as it exits earlier its not a leftover…
+ rm -f rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_Packages
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz")000 $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testsuccess grep 'bytes, but limit is' rootdir/tmp/aptupdate.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+
+ msgmsg "Testcase: pdiff index failed to download: $*"
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ cp "${PKGFILE}-new" aptarchive/Packages
+ compressfile 'aptarchive/Packages'
+ mkdir -p aptarchive/Packages.diff
+ PATCHFILE="aptarchive/Packages.diff/$(date +%Y-%m-%d-%H%M.%S)"
+ diff -e "${PKGFILE}" "${PKGFILE}-new" > "${PATCHFILE}" || true
+ cat "$PATCHFILE" | gzip > "${PATCHFILE}.gz"
+ PATCHINDEX='aptarchive/Packages.diff/Index'
+ echo "SHA256-Current: $(sha256sum "${PKGFILE}-new" | cut -d' ' -f 1) $(stat -c%s "${PKGFILE}-new")
+SHA256-History:
+ 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 33053002 2010-08-18-2013.28
+ $(sha256sum "$PKGFILE" | cut -d' ' -f 1) $(stat -c%s "$PKGFILE") $(basename "$PATCHFILE")
+SHA256-Patches:
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 19722 2010-08-18-2013.28
+ $(sha256sum "$PATCHFILE" | cut -d' ' -f 1) $(stat -c%s "$PATCHFILE") $(basename "$PATCHFILE")
+SHA256-Download:
+ d2a1b33187ed2d248eeae3b1223ea71791ea35f2138a713ed371332a6421f467 197 2010-08-18-2013.28.gz
+ $(sha256sum "${PATCHFILE}.gz" | cut -d' ' -f 1) $(stat -c%s "${PATCHFILE}.gz") $(basename "${PATCHFILE}.gz")" > "$PATCHINDEX"
+ generatereleasefiles '+1hour'
+ signreleasefiles
+ # we let it fail by removing the files so the webserver reports 404
+ rm -f "$PATCHINDEX" "$PATCHFILE" "${PATCHFILE}.gz"
+ wasmergeused "$@" -o test::cannot-use-pdiff=1
+ testsuccess grep '400%20URI%20Failure.*FailReason.*HttpError404.*Packages\.diff/Index' rootdir/tmp/aptupdate.output
+ testnopackage oldstuff
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt newstuff
+}
+echo 'Debug::pkgAcquire::Diffs "true";
+Debug::Acquire::Transaction "true";
+Debug::pkgAcquire::Worker "true";
+Debug::Acquire::http "true";
+Debug::pkgAcquire "true";
+Debug::Acquire::rred "true";' > rootdir/etc/apt/apt.conf.d/rreddebug.conf
+
+testcase() {
+ testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=1 "$@"
+ testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=1 "$@"
+ testrun -o Acquire::PDiffs::Merge=0 -o APT::Get::List-Cleanup=0 "$@"
+ testrun -o Acquire::PDiffs::Merge=1 -o APT::Get::List-Cleanup=0 "$@"
+}
+generatepartialleftovers() {
+ local PREFIX="$1"
+ shift
+ for f in "$@"; do
+ cat "${PKGFILE}" "${PKGFILE}" > "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${PREFIX}${f}"
+ printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/partial/localhost:${APTHTTPPORT}_${PREFIX}${f}"
+ done
+ printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/localhost:${APTHTTPPORT}_${PREFIX}Packages.diff_Index"
+ printf '\n\nInvalid\nStanza: yes\n\n' >> "rootdir/var/lib/apt/lists-bak/localhost:${APTHTTPPORT}_${PREFIX}Packages.diff_Index.xz"
+}
+
+partialleftovers() { generatepartialleftovers '' 'Packages' 'Packages-patched'; }
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages"; }
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=false
+partialleftovers() { generatepartialleftovers '' "Packages.${LOWCOSTEXT}" "Packages-patched.${LOWCOSTEXT}"; }
+aptautotest_apt_update() { aptautotest_aptget_update "$@"; testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_Packages.$LOWCOSTEXT"; }
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true
+
+
+partialleftovers() { generatepartialleftovers 'redirectme_' "Packages.${LOWCOSTEXT}" "Packages-patched.${LOWCOSTEXT}"; }
+# redirect the InRelease file only – the other files are auto-redirected by apt
+webserverconfig 'aptwebserver::redirect::replace::/redirectme/I' "http://0.0.0.0:${APTHTTPPORT}/I"
+rewritesourceslist "http://localhost:${APTHTTPPORT}/redirectme"
+aptautotest_apt_update() {
+ aptautotest_aptget_update "$@"
+ testsuccess test -e "rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_redirectme_Packages.$LOWCOSTEXT"
+ testempty find rootdir/var/lib/apt/lists -type f \! \( -name lock -o -name '*_redirectme_*' \)
+}
+testcase -o Acquire::IndexTargets::deb::Packages::KeepCompressed=true
diff --git a/test/integration/test-phased-updates b/test/integration/test-phased-updates
new file mode 100755
index 0000000..7377f91
--- /dev/null
+++ b/test/integration/test-phased-updates
@@ -0,0 +1,300 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+echo 'APT::Get::Phase-Policy "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386' 'armel'
+
+
+insertinstalledpackage 'phased1' 'all' '1'
+insertinstalledpackage 'phased2' 'all' '1'
+
+insertpackage 'unstable' 'phased1' 'all' '10' 'Phased-Update-Percentage: 10'
+insertpackage 'unstable' 'phased2' 'all' '10' 'Phased-Update-Percentage: 10'
+insertpackage 'unstable' 'phased3' 'all' '10' 'Phased-Update-Percentage: 10'
+
+insertpackage 'unstable' 'phased1' 'all' '100' 'Phased-Update-Percentage: 100'
+insertpackage 'unstable' 'phased2' 'all' '100' 'Phased-Update-Percentage: 100'
+insertpackage 'unstable' 'phased3' 'all' '100' 'Phased-Update-Percentage: 100'
+
+insertpackage 'unstable' 'phased1' 'all' '50' 'Phased-Update-Percentage: 50'
+insertpackage 'unstable' 'phased2' 'all' '50' 'Phased-Update-Percentage: 50'
+insertpackage 'unstable' 'phased3' 'all' '50' 'Phased-Update-Percentage: 50'
+
+insertinstalledpackage 'phased-and-pinned' 'all' '1'
+insertpackage 'unstable' 'phased-and-pinned' 'all' '10' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable' 'phased-and-pinned-new' 'all' '10' 'Phased-Update-Percentage: 0'
+
+cat > rootdir/etc/apt/preferences.d/phased-and-pinned << EOF
+Package: phased-and-pinned phased-and-pinned-new
+Pin: release *
+Pin-Priority: -12
+EOF
+
+setupaptarchive
+
+msgmsg "Basic test"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3
+
+testsuccessequal "phased-and-pinned:
+ Installed: 1
+ Candidate: (none)
+ Version table:
+ 10 -12 (phased 0%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 -12
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased-and-pinned
+
+testsuccessequal "phased-and-pinned-new:
+ Installed: (none)
+ Candidate: (none)
+ Version table:
+ 10 -12 (phased 0%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased-and-pinned-new
+
+
+msgmsg "Test for always-include-phased-updates"
+for always in Update-Manager::Always-Include-Phased-Updates APT::Get::Always-Include-Phased-Updates; do
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3 -o $always=true
+done
+
+msgmsg "Test for never-include-phased-updates"
+for never in Update-Manager::Never-Include-Phased-Updates APT::Get::Never-Include-Phased-Updates; do
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased3:
+ Installed: (none)
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages" aptcache policy phased1 phased2 phased3 -o $never=true
+done
+
+msgmsg "Test that being in a chroot equals always-include-phased-updates"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Bin::ischroot=/bin/true
+
+msgmsg "Test that empty machine-id equals always-include-phased-updates"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Etc::machine-id=/dev/null -o APT::Machine-Id=""
+
+msgmsg "Test that never-include-phased-updates trumps empty machine-id"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 1 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o Dir::Etc::machine-id=/dev/null -o APT::Machine-Id="" -o APT::Get::Never-Include-Phased-Updates=1
+
+
+msgmsg "Test that SOURCE_DATE_EPOCH set equals always-include-phased-updates"
+export SOURCE_DATE_EPOCH=0
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 500 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2
+unset SOURCE_DATE_EPOCH
+
+msgmsg "Test that different machine-id produces different outcome"
+testsuccessequal "phased1:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status
+phased2:
+ Installed: 1
+ Candidate: 100
+ Version table:
+ 100 500
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 50 500 (phased 50%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ 10 1 (phased 10%)
+ 500 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages
+ *** 1 100
+ 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" aptcache policy phased1 phased2 -o apt::machine-id="00000000000000000000000000000000"
diff --git a/test/integration/test-phased-updates-new-depends b/test/integration/test-phased-updates-new-depends
new file mode 100755
index 0000000..5d6ac80
--- /dev/null
+++ b/test/integration/test-phased-updates-new-depends
@@ -0,0 +1,96 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386'
+
+insertinstalledpackage 'has-new-depends' 'all' '1' ''
+insertinstalledpackage 'has-new-recommends' 'all' '1' ''
+insertinstalledpackage 'has-new-conflicts' 'all' '1' ''
+insertinstalledpackage 'new-conflicts' 'all' '1' ''
+
+insertpackage 'unstable-updates' 'new-depends' 'all' '2'
+insertpackage 'unstable-updates' 'new-recommends' 'all' '2'
+insertpackage 'unstable-updates' 'has-new-depends' 'all' '2' 'Phased-Update-Percentage: 0
+Depends: new-depends'
+insertpackage 'unstable-updates' 'has-new-recommends' 'all' '2' 'Phased-Update-Percentage: 0
+Recommends: new-recommends'
+insertpackage 'unstable-updates' 'has-new-conflicts' 'all' '2' 'Phased-Update-Percentage: 0
+Conflicts: new-conflicts'
+
+setupaptarchive
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ has-new-conflicts has-new-depends has-new-recommends
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded." aptget upgrade -s -q -o APT::Get::Always-Include-Phased-Updates=1
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ has-new-conflicts has-new-depends has-new-recommends
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded." aptget upgrade -s -q
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ new-depends new-recommends
+The following packages have been kept back:
+ has-new-conflicts
+The following packages will be upgraded:
+ has-new-depends has-new-recommends
+2 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
+Inst new-depends (2 unstable-updates [all])
+Inst has-new-depends [1] (2 unstable-updates [all])
+Inst has-new-recommends [1] (2 unstable-updates [all])
+Inst new-recommends (2 unstable-updates [all])
+Conf new-depends (2 unstable-updates [all])
+Conf has-new-depends (2 unstable-updates [all])
+Conf has-new-recommends (2 unstable-updates [all])
+Conf new-recommends (2 unstable-updates [all])" aptget upgrade -s -q --with-new-pkgs -o APT::Get::Always-Include-Phased-Updates=1
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ has-new-conflicts has-new-depends has-new-recommends
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded." aptget upgrade -s -q --with-new-pkgs
+
+: testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ new-conflicts
+The following NEW packages will be installed:
+ new-depends new-recommends
+The following packages will be upgraded:
+ has-new-conflicts has-new-depends has-new-recommends
+3 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv new-conflicts [1]
+Inst has-new-conflicts [1] (2 unstable-updates [all])
+Inst new-depends (2 unstable-updates [all])
+Inst has-new-depends [1] (2 unstable-updates [all])
+Inst has-new-recommends [1] (2 unstable-updates [all])
+Inst new-recommends (2 unstable-updates [all])
+Conf has-new-conflicts (2 unstable-updates [all])
+Conf new-depends (2 unstable-updates [all])
+Conf has-new-depends (2 unstable-updates [all])
+Conf has-new-recommends (2 unstable-updates [all])
+Conf new-recommends (2 unstable-updates [all])" aptget dist-upgrade -s -q -o APT::Get::Always-Include-Phased-Updates=1
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ has-new-conflicts has-new-depends has-new-recommends
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded." aptget dist-upgrade -s -q
diff --git a/test/integration/test-phased-updates-upgrade b/test/integration/test-phased-updates-upgrade
new file mode 100755
index 0000000..4f415f2
--- /dev/null
+++ b/test/integration/test-phased-updates-upgrade
@@ -0,0 +1,421 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386' 'armel'
+
+
+
+# Test case phased: The package is installed and has a phased update available
+insertinstalledpackage 'phased' 'all' '1'
+insertpackage 'unstable-updates' 'phased' 'all' '3' 'Phased-Update-Percentage: 0'
+
+# Test case phased-security: A phased package is in security and will be installed
+insertinstalledpackage 'phased-security' 'all' '1'
+insertpackage 'unstable-security' 'phased-security' 'all' '2'
+insertpackage 'unstable-updates' 'phased-security' 'all' '3' 'Phased-Update-Percentage: 0'
+
+# Test case phased-security: A phased package is in security and will be installed
+insertinstalledpackage 'phased-security-same' 'all' '1'
+insertpackage 'unstable-security' 'phased-security-same' 'all' '3'
+insertpackage 'unstable-updates' 'phased-security-same' 'all' '3' 'Phased-Update-Percentage: 0'
+
+# Test case phased-dep: A released update depends on the phased dependency phased-dep
+insertinstalledpackage 'phased-dep' 'all' '1'
+insertinstalledpackage 'depends-phased-dep' 'all' '1'
+insertpackage 'unstable-updates' 'phased-dep' 'all' '3' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable-updates' 'depends-phased-dep' 'all' '3' 'Depends: phased-dep (= 3)'
+
+# Test case phased-new: A release update depends on a new package that's phasing
+insertinstalledpackage 'depends-phased-new' 'all' '1'
+insertpackage 'unstable-updates' 'phased-new' 'all' '3' 'Phased-Update-Percentage: 0'
+insertpackage 'unstable-updates' 'depends-phased-new' 'all' '3' 'Depends: phased-new (= 3)'
+
+# Test case phased-dep: A released update depends on the phased dependency phased-dep
+insertinstalledpackage 'ready-dep' 'all' '1'
+insertinstalledpackage 'phased-depends-ready-dep' 'all' '1' 'Depends: ready-dep (= 1)
+Protected: yes'
+insertpackage 'unstable-updates' 'ready-dep' 'all' '3'
+insertpackage 'unstable-updates' 'phased-depends-ready-dep' 'all' '3' 'Depends: ready-dep (= 3)
+Protected: yes
+Phased-Update-Percentage: 0'
+
+setupaptarchive
+
+msgmsg "Testing with default (upgrade-based) implementation"
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following upgrades have been deferred due to phasing:
+ phased phased-dep phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security phased-security-same
+3 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q
+
+testequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following upgrades have been deferred due to phasing:
+ phased phased-dep phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security phased-security-same
+3 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Need to get 0 B/168 B of archives.
+After this operation, 43.0 kB of additional disk space will be used.
+N: Some packages may have been kept back due to phasing.
+Do you want to continue? [Y/n] Abort." apt dist-upgrade < /dev/null
+
+testsuccessequal "Listing...
+phased-dep/unstable-updates 3 all [upgradable from: 1]
+phased-depends-ready-dep/unstable-updates 3 all [upgradable from: 1]
+phased/unstable-updates 3 all [upgradable from: 1]" apt list '?phasing'
+
+testsuccessequal "Listing...
+phased-security-same/unstable-security,unstable-updates 3 all [upgradable from: 1]
+phased-security/unstable-updates 3 all [upgradable from: 1]" apt list '?security'
+
+for always in APT::Get::Always-Include-Phased-Updates Update-Manager::Always-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security phased-security-same ready-dep
+8 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q -o $always=1
+done
+
+SOURCE_DATE_EPOCH=1 testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security phased-security-same ready-dep
+8 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+
+for never in APT::Get::Never-Include-Phased-Updates Update-Manager::Never-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following upgrades have been deferred due to phasing:
+ phased phased-dep phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security phased-security-same
+3 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q -o $never=1
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following upgrades have been deferred due to phasing:
+ phased phased-dep phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security phased-security-same
+3 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q --with-new-pkgs
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ phased phased-dep phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-dep depends-phased-new ready-dep
+The following packages will be upgraded:
+ phased-security phased-security-same
+2 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q
+
+for upgrade in "dist-upgrade" "upgrade --with-new-pkgs"; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following upgrades have been deferred due to phasing:
+ phased phased-depends-ready-dep
+The following packages have been kept back:
+ ready-dep
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased-dep phased-security
+ phased-security-same
+5 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget $upgrade -s -q depends-phased-dep
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ phased phased-depends-ready-dep
+The following packages have been kept back:
+ depends-phased-new ready-dep
+The following packages will be upgraded:
+ depends-phased-dep phased-dep phased-security phased-security-same
+4 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q depends-phased-dep
+
+# install does not respect phasing
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ phased-dep
+The following packages will be upgraded:
+ depends-phased-dep phased phased-dep phased-security phased-security-same
+5 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget install -s -q phased depends-phased-dep phased-security phased-security-same
+
+msgmsg "Testing with policy based implementation"
+echo 'APT::Get::Phase-Policy "1";' > rootdir/etc/apt/apt.conf.d/phase-by-policy
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget dist-upgrade -s -q
+
+for always in APT::Get::Always-Include-Phased-Updates Update-Manager::Always-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security phased-security-same ready-dep
+8 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q -o $always=1
+done
+
+# In the policy implementation, we can update security
+for never in APT::Get::Never-Include-Phased-Updates Update-Manager::Never-Include-Phased-Updates; do
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget dist-upgrade -s -q -o $never=1
+done
+
+SOURCE_DATE_EPOCH=1 testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages will be upgraded:
+ depends-phased-dep depends-phased-new phased phased-dep
+ phased-depends-ready-dep phased-security phased-security-same ready-dep
+8 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst phased-dep [1] (3 unstable-updates [all])
+Inst depends-phased-dep [1] (3 unstable-updates [all])
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased [1] (3 unstable-updates [all])
+Inst phased-depends-ready-dep [1] (3 unstable-updates [all]) []
+Inst ready-dep [1] (3 unstable-updates [all])
+Inst phased-security [1] (3 unstable-updates [all])
+Inst phased-security-same [1] (3 unstable-security, unstable-updates [all])
+Conf phased-dep (3 unstable-updates [all])
+Conf depends-phased-dep (3 unstable-updates [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased (3 unstable-updates [all])
+Conf phased-depends-ready-dep (3 unstable-updates [all])
+Conf ready-dep (3 unstable-updates [all])
+Conf phased-security (3 unstable-updates [all])
+Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget dist-upgrade -s -q -o with-source-date-epoch=1
+
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ phased-new
+The following packages have been kept back:
+ depends-phased-dep ready-dep
+The following packages will be upgraded:
+ depends-phased-new phased-security
+2 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
+Inst phased-new (3 unstable-updates [all])
+Inst depends-phased-new [1] (3 unstable-updates [all])
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-new (3 unstable-updates [all])
+Conf depends-phased-new (3 unstable-updates [all])
+Conf phased-security (2 unstable-security [all])" aptget upgrade -s -q --with-new-pkgs
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ depends-phased-dep depends-phased-new ready-dep
+The following packages will be upgraded:
+ phased-security
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-security (2 unstable-security [all])" aptget upgrade -s -q
+
+# FIXME: We actually would like this to work I think?
+for upgrade in "dist-upgrade" "upgrade --with-new-pkgs" "upgrade" "install"; do
+ testfailure aptget $upgrade -s -q depends-phased-dep
+ testsuccess grep "depends-phased-dep : Depends: phased-dep (= 3) but 1 is to be installed" rootdir/tmp/testfailure.output
+done
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+phased is already the newest version (1).
+The following packages will be upgraded:
+ phased-security
+1 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
+Inst phased-security [1] (2 unstable-security [all])
+Conf phased-security (2 unstable-security [all])" aptget install -s -q phased phased-security
diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package
new file mode 100755
index 0000000..06103fd
--- /dev/null
+++ b/test/integration/test-pin-non-existent-package
@@ -0,0 +1,75 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'rapt' 'i386' '0.8.15'
+insertpackage 'unstable' 'arch' 'i386' '1.0'
+
+setupaptarchive
+
+testcandidate() {
+ msgtest "Test that the Candidate for $1 is" $2
+ if [ "$(aptcache policy $1 | grep '^ Candidate:')" = " Candidate: $2" ]; then
+ msgpass
+ else
+ echo
+ aptcache policy $1
+ msgfail
+ fi
+}
+
+testcandidate rapt '0.8.15'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo 'Package: rapt
+Pin: release a=unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo '
+Package: doesntexist
+Pin: release a=unstable
+Pin-Priority: 1000' >> rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+
+echo '
+Package: rapt
+Pin: release a=unstable
+Pin-Priority: 1000' >> rootdir/etc/apt/preferences
+
+testcandidate rapt '(none)'
+testsuccessequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only
+
+echo 'Package: arch:amd64
+Pin: release a=unstable
+Pin-Priority: -1' > rootdir/etc/apt/preferences
+
+testcandidate arch '1.0'
+
+echo '
+Package: arch:i386
+Pin: release a=unstable
+Pin-Priority: -1' >> rootdir/etc/apt/preferences
+
+testcandidate arch '(none)'
+
diff --git a/test/integration/test-policy-pinning b/test/integration/test-policy-pinning
new file mode 100755
index 0000000..dc3192f
--- /dev/null
+++ b/test/integration/test-policy-pinning
@@ -0,0 +1,490 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'foobar' 'all' '1'
+
+buildaptarchive
+setupflataptarchive
+
+STATUS=$(readlink -f rootdir/var/lib/dpkg/status)
+APTARCHIVE=$(readlink -f aptarchive)
+
+testequalpolicy() {
+ local SP="$1"
+ local AP="$2"
+ shift 2
+ testsuccessequal "Package files:
+ $(printf '%3s' "$SP") ${STATUS}
+ release a=now
+ $(printf '%3s' "$AP") file:${APTARCHIVE} Packages
+ release c=
+Pinned packages:" aptcache policy "$@"
+}
+
+testglobalpolicy() {
+ aptgetupdate
+
+ testequalpolicy 100 500
+ testequalpolicy 990 500 -t now
+
+ sed -i aptarchive/Release -e 1i"NotAutomatic: yes"
+ aptgetupdate
+
+ testequalpolicy 100 1 -o Test=NotAutomatic
+ testequalpolicy 990 1 -o Test=NotAutomatic -t now
+
+ sed -i aptarchive/Release -e 1i"ButAutomaticUpgrades: yes"
+ aptgetupdate
+
+ testequalpolicy 100 100 -o Test=ButAutomaticUpgrades
+ testequalpolicy 990 100 -o Test=ButAutomaticUpgrades -t now
+
+ sed -i aptarchive/Release -e 's#NotAutomatic: yes#NotAutomatic: no#' -e '/ButAutomaticUpgrades: / d'
+ aptgetupdate
+
+ testequalpolicy 100 500 -o Test=Automatic
+ testequalpolicy 990 500 -o Test=Automatic -t now
+
+ sed -i aptarchive/Release -e '/NotAutomatic: / d' -e '/ButAutomaticUpgrades: / d'
+}
+
+msgmsg 'Test with not signed archive'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ testwarning aptget update --allow-insecure-repositories
+}
+testglobalpolicy
+
+msgmsg 'Test with signed but no key in trusted'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ signreleasefiles 'Marvin Paranoid'
+ testwarning aptget update --allow-insecure-repositories
+}
+testglobalpolicy
+
+# much the same tests will be executed below in more detail again for this one
+msgmsg 'Test with signed and valid key'
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt
+ signreleasefiles 'Joe Sixpack'
+ testsuccess aptget update
+}
+testglobalpolicy
+
+msgmsg 'Test with specific packages'
+
+buildsimplenativepackage "coolstuff" "all" "1.0" "stable"
+buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports"
+
+setupaptarchive
+
+testsuccessequal "coolstuff:
+ Installed: (none)
+ Candidate: 2.0~bpo1
+ Version table:
+ 2.0~bpo1 500
+ 500 file:${APTARCHIVE} backports/main all Packages
+ 1.0 500
+ 500 file:${APTARCHIVE} stable/main all Packages" apt policy '^cool.*'
+
+testequalpolicycoolstuff() {
+ local INSTALLED="${1:-(none)}"
+ local CANDIDATE="${2:-(none)}"
+ local AB="$3"
+ local AS="$4"
+ local PB="$5"
+ local IS=""
+ local IB=""
+ local SB=""
+ local SS=""
+ [ "$1" = "2.0~bpo1" ] && IB="***" && SB="
+ 100 $STATUS" || IB=" "
+ [ "$1" = "1.0" ] && IS="***" && SS="
+ 100 $STATUS" || IS=" "
+ local BPO1ARCHIVE=""
+ local BPO2ARCHIVE=""
+ if [ ! "$7" = "2.0~bpo2" ]; then
+ BPO1PIN="$AB"
+ BPO1ARCHIVE=" $(printf '%3s' "$AB") file:${APTARCHIVE} backports/main all Packages"
+ else
+ BPO2ARCHIVE="
+ 2.0~bpo2 $AB
+ $(printf '%3s' "$AB") file:${APTARCHIVE} backports/main all Packages"
+ SB="$(echo "$SB" | tail -n 1)"
+ shift
+ fi
+ shift 6
+ testsuccessequal "coolstuff:
+ Installed: $INSTALLED
+ Candidate: $CANDIDATE
+ Version table:${BPO2ARCHIVE}
+ $IB 2.0~bpo1 $PB
+${BPO1ARCHIVE}$SB
+ $IS 1.0 $AS
+ $(printf '%3s' "$AS") file:${APTARCHIVE} stable/main all Packages$SS" \
+ aptcache policy coolstuff -o Policy=${INSTALLED}-${CANDIDATE}-${AB}-${AS}-${PB} $*
+}
+
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 500 ""
+testequalpolicycoolstuff "" "1.0" 500 990 500 "" -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=GlobalPin
+testequalpolicycoolstuff "" "1.0" 200 990 200 "" -o Test=GlobalPin -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=GlobalPin -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=GlobalPin
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=GlobalPin -t stable
+echo "Package: cool*
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "" -o Test=GlobPin
+testequalpolicycoolstuff "" "1.0" 500 990 600 "" -o Test=GlobPin -t stable
+echo "Package: /cool.*/
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "" -o Test=RegexPin
+testequalpolicycoolstuff "" "1.0" 500 990 600 "" -o Test=RegexPin -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 500 500 200 "2.0~bpo1" -o Test=PackagePin
+testequalpolicycoolstuff "" "1.0" 990 500 200 "2.0~bpo1" -o Test=PackagePin -t backports
+testequalpolicycoolstuff "" "1.0" 500 990 200 "2.0~bpo1" -o Test=PackagePin -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "2.0~bpo1" -o Test=PackagePin
+testequalpolicycoolstuff "" "1.0" 500 990 600 "2.0~bpo1" -o Test=PackagePin -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=PackagePin -t backports
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -1" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 500 500 -1 "2.0~bpo1" -o Test=PackagePin
+testequalpolicycoolstuff "" "1.0" 990 500 -1 "2.0~bpo1" -o Test=PackagePin -t backports
+testequalpolicycoolstuff "" "1.0" 500 990 -1 "2.0~bpo1" -o Test=PackagePin -t stable
+
+rm rootdir/etc/apt/preferences
+sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "" "1.0" 1 500 1 "" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "1.0" 1 990 1 "" -o Test=NotAutomatic -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=NotAutomatic -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=NotAutomatic
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=NotAutomatic -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 1 500 200 "2.0~bpo1" -o Test=NotAutomatic
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 1 500 600 "2.0~bpo1" -o Test=NotAutomatic
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=NotAutomatic -t backports
+testequalpolicycoolstuff "" "1.0" 1 990 600 "2.0~bpo1" -o Test=NotAutomatic -t stable
+
+rm rootdir/etc/apt/preferences
+sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=ButAutomaticUpgrades
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=ButAutomaticUpgrades -t stable
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 200" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "1.0" 100 500 200 "2.0~bpo1" -o Test=ButAutomaticUpgrades
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 600" > rootdir/etc/apt/preferences
+testequalpolicycoolstuff "" "2.0~bpo1" 100 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t backports
+testequalpolicycoolstuff "" "1.0" 100 990 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t stable
+
+rm rootdir/etc/apt/preferences
+testsuccess aptget install coolstuff -y
+testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testsuccess aptget dist-upgrade -y
+testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "1.0" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "1.0" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+
+testsuccess aptget install coolstuff -t backports -y
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testsuccess aptget dist-upgrade -y
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports
+
+rm incoming/backports.main.pkglist incoming/backports.main.srclist
+buildsimplenativepackage "coolstuff" "all" "2.0~bpo2" "backports"
+buildsimplenativepackage "hotstuff" "all" "1.0" "backports"
+setupaptarchive --no-update
+
+sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 500 100 "" "2.0~bpo2" -o Test=NotAutomatic
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 990 100 "" "2.0~bpo2" -o Test=NotAutomatic -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=NotAutomatic -t backports
+
+sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
+signreleasefiles
+aptgetupdate
+
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 990 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t stable
+testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t backports
+
+
+tmppath="$(readlink -f .)"
+
+# Check 16-bit integers
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 32767
+" > rootdir/etc/apt/preferences
+
+testsuccess aptget install -s coolstuff -o PinPriority=32767
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -32768
+" > rootdir/etc/apt/preferences
+testsuccess aptget install -s coolstuff -o PinPriority=-32768
+
+# Check for 32-bit integers
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 32768
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: ${tmppath}/rootdir/etc/apt/preferences: Value 32768 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=32768
+
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: -32769
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: ${tmppath}/rootdir/etc/apt/preferences: Value -32769 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=-32769
+
+# Check for 64-bit integers
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 2147483648
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: Cannot convert 2147483648 to integer: out of range
+E: ${tmppath}/rootdir/etc/apt/preferences: Value 2147483648 is outside the range of valid pin priorities (-32768 to 32767)" \
+ aptget install -s coolstuff -o PinPriority=2147483648
+
+# Check that short-max/min is a valid pin
+currentpin() {
+echo "Package: *
+Pin: release n=backports
+Pin-Priority: $1
+" > rootdir/etc/apt/preferences
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: $2
+ Version table:
+ 2.0~bpo2 ${3:-$1}
+ ${3:-$1} file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" apt policy coolstuff
+}
+currentpin '32767' '2.0~bpo2'
+currentpin '-32768' '2.0~bpo1' '-32767'
+currentpin '-32767' '2.0~bpo1' '-32767'
+
+# Check for 0
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 0
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: No priority (or zero) specified for pin" \
+ aptget install -s coolstuff -o PinPriority=0
+
+# Check with comments
+echo "#Package: coolstuff
+#Pin: release n=backports
+#Pin-Priority: 0
+
+# Test
+
+Package: coolstuff
+Pin: release n=backports
+#Pin: release n=unstable
+#Pin-Priority: 999
+Pin-Priority: 999
+#Pin-Priority: 999" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo2
+ Version table:
+ 2.0~bpo2 999
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
+
+
+# Check for override pins
+
+# Normal pins: First one wins
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 990
+
+Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 991
+" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo2
+ Version table:
+ 2.0~bpo2 990
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
+
+
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: 990
+
+Package: *
+Pin: release n=backports
+Pin-Priority: never
+" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo1
+ Version table:
+ 2.0~bpo2 -32768
+ -32768 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
+
+
+msgmsg "Check that local-only versions can be pinned correctly (LP: #1821308)"
+echo "Package: coolstuff
+Pin: version 2.0~bpo1
+Pin-Priority: 1000" > rootdir/etc/apt/preferences
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo1
+ Version table:
+ 2.0~bpo2 100
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 1000
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff
+
+# Check for 0
+echo "Package: coolstuff
+Pin: release n=backports
+Pin-Priority: never
+" > rootdir/etc/apt/preferences
+
+testfailureequal "Reading package lists...
+E: ${tmppath}/rootdir/etc/apt/preferences: The special 'Pin-Priority: never' can only be used for 'Package: *' records" \
+ aptget install -s coolstuff -o PinPriority=0
+
+# Test multiple packages
+echo "Package: coolstuff hotstuff
+Pin: release n=backports
+Pin-Priority: 600
+" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo2
+ Version table:
+ 2.0~bpo2 600
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages
+hotstuff:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 600
+ 100 file:${tmppath}/aptarchive backports/main all Packages" aptcache policy coolstuff hotstuff
+
+echo "Package: c?ol*ff /hot[st]+uff/
+Pin: release n=backports
+Pin-Priority: 600
+" > rootdir/etc/apt/preferences
+
+testsuccessequal "coolstuff:
+ Installed: 2.0~bpo1
+ Candidate: 2.0~bpo2
+ Version table:
+ 2.0~bpo2 600
+ 100 file:${tmppath}/aptarchive backports/main all Packages
+ *** 2.0~bpo1 100
+ 100 ${tmppath}/rootdir/var/lib/dpkg/status
+ 1.0 500
+ 500 file:${tmppath}/aptarchive stable/main all Packages
+hotstuff:
+ Installed: (none)
+ Candidate: 1.0
+ Version table:
+ 1.0 600
+ 100 file:${tmppath}/aptarchive backports/main all Packages" aptcache policy coolstuff hotstuff
diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers
new file mode 100755
index 0000000..7c3f323
--- /dev/null
+++ b/test/integration/test-prefer-higher-priority-providers
@@ -0,0 +1,106 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important'
+insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional'
+insertpackage 'unstable' 'baz' 'all' '1' 'Provides: stuff' 'extra'
+insertpackage 'unstable' 'awesome' 'all' '1' 'Depends: stuff'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])' aptget install awesome foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'bar' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+The following additional packages will be installed:
+ foo
+The following NEW packages will be installed:
+ awesome foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome bar- baz- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ awesome bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ awesome bar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- baz- -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'bar' is not installed, so not removed
+The following additional packages will be installed:
+ baz
+The following NEW packages will be installed:
+ awesome baz
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst baz (1 unstable [all])
+Inst awesome (1 unstable [all])
+Conf baz (1 unstable [all])
+Conf awesome (1 unstable [all])" aptget install awesome foo- bar- -s
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed
+Package 'bar' is not installed, so not removed
+Package 'baz' is not installed, so not removed
+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:
+ awesome : Depends: stuff
+E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s
diff --git a/test/integration/test-prefer-native-architecture-over-higher-priority b/test/integration/test-prefer-native-architecture-over-higher-priority
new file mode 100755
index 0000000..d21836b
--- /dev/null
+++ b/test/integration/test-prefer-native-architecture-over-higher-priority
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'arm64'
+
+insertpackage 'unstable' 'm4' 'amd64' '1' 'Multi-Arch: foreign' 'optional'
+insertpackage 'unstable' 'm4' 'arm64' '1' 'Multi-Arch: foreign' 'standard'
+insertpackage 'unstable' 'autoconf' 'all' '1' 'Depends: m4'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ m4
+The following NEW packages will be installed:
+ autoconf m4
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst m4 (1 unstable [amd64])
+Inst autoconf (1 unstable [all])
+Conf m4 (1 unstable [amd64])
+Conf autoconf (1 unstable [all])' aptget install autoconf -s
diff --git a/test/integration/test-prevent-markinstall-multiarch-same-versionscrew b/test/integration/test-prevent-markinstall-multiarch-same-versionscrew
new file mode 100755
index 0000000..7966238
--- /dev/null
+++ b/test/integration/test-prevent-markinstall-multiarch-same-versionscrew
@@ -0,0 +1,133 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertpackage 'stable' 'allarchs' 'all' '1'
+insertpackage 'unstable' 'allarchs' 'all' '2'
+
+insertpackage 'stable,installed' 'fine' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'fine' 'amd64,i386' '2' 'Multi-Arch: same'
+insertpackage 'experimental' 'fine' 'amd64,i386' '3' 'Multi-Arch: same'
+
+insertinstalledpackage 'fine-installed' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'fine-installed' 'i386,amd64,armel' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'fine-installed' 'i386,amd64' '2' 'Multi-Arch: same'
+insertpackage 'experimental' 'fine-installed' 'i386,amd64' '3' 'Multi-Arch: same'
+
+insertpackage 'stable,installed' 'out-of-sync-native' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-native' 'amd64' '2' 'Multi-Arch: same'
+
+insertpackage 'stable,installed' 'out-of-sync-foreign' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-foreign' 'i386' '2' 'Multi-Arch: same'
+
+insertinstalledpackage 'out-of-sync-gone-native' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'out-of-sync-gone-native' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-gone-native' 'i386' '2' 'Multi-Arch: same'
+
+insertinstalledpackage 'out-of-sync-gone-foreign' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'out-of-sync-gone-foreign' 'amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'out-of-sync-gone-foreign' 'amd64' '2' 'Multi-Arch: same'
+
+insertpackage 'stable' 'libsame2' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'libsame2' 'amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'depender2' 'all' '2' 'Depends: libsame2 (= 2)'
+insertpackage 'stable' 'libsame3' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'libsame3' 'i386,amd64' '3' 'Multi-Arch: same'
+insertpackage 'unstable' 'depender3' 'all' '3' 'Depends: libsame3 (= 3)'
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ out-of-sync-gone-foreign:i386 out-of-sync-gone-native
+The following packages have been kept back:
+ out-of-sync-foreign:i386 out-of-sync-native
+The following packages will be upgraded:
+ fine fine:i386 fine-installed fine-installed:i386 out-of-sync-gone-foreign
+ out-of-sync-gone-native:i386
+6 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
+Remv out-of-sync-gone-foreign:i386 [1]
+Remv out-of-sync-gone-native [1]
+Inst fine [1] (2 unstable [amd64]) [fine:amd64 on fine:i386] [fine:i386 on fine:amd64] [fine:i386 ]
+Inst fine:i386 [1] (2 unstable [i386])
+Inst fine-installed [1] (2 unstable [amd64]) [fine-installed:amd64 on fine-installed:i386] [fine-installed:i386 on fine-installed:amd64] [fine-installed:i386 ]
+Inst fine-installed:i386 [1] (2 unstable [i386])
+Inst out-of-sync-gone-foreign [1] (2 unstable [amd64])
+Inst out-of-sync-gone-native:i386 [1] (2 unstable [i386])
+Conf fine (2 unstable [amd64])
+Conf fine:i386 (2 unstable [i386])
+Conf fine-installed (2 unstable [amd64])
+Conf fine-installed:i386 (2 unstable [i386])
+Conf out-of-sync-gone-foreign (2 unstable [amd64])
+Conf out-of-sync-gone-native:i386 (2 unstable [i386])' aptget dist-upgrade -s #-o Debug::pkgDepCache::Marker=1
+
+echo 'Package: fine:* fine-installed:*
+Pin: release a=experimental
+Pin-Priority: 500' > rootdir/etc/apt/preferences.d/experimental.pref
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ out-of-sync-gone-foreign:i386 out-of-sync-gone-native
+The following packages have been kept back:
+ out-of-sync-foreign:i386 out-of-sync-native
+The following packages will be upgraded:
+ fine fine:i386 fine-installed fine-installed:i386 out-of-sync-gone-foreign
+ out-of-sync-gone-native:i386
+6 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
+Remv out-of-sync-gone-foreign:i386 [1]
+Remv out-of-sync-gone-native [1]
+Inst fine [1] (3 experimental [amd64]) [fine:amd64 on fine:i386] [fine:i386 on fine:amd64] [fine:i386 ]
+Inst fine:i386 [1] (3 experimental [i386])
+Inst fine-installed [1] (3 experimental [amd64]) [fine-installed:amd64 on fine-installed:i386] [fine-installed:i386 on fine-installed:amd64] [fine-installed:i386 ]
+Inst fine-installed:i386 [1] (3 experimental [i386])
+Inst out-of-sync-gone-foreign [1] (2 unstable [amd64])
+Inst out-of-sync-gone-native:i386 [1] (2 unstable [i386])
+Conf fine (3 experimental [amd64])
+Conf fine:i386 (3 experimental [i386])
+Conf fine-installed (3 experimental [amd64])
+Conf fine-installed:i386 (3 experimental [i386])
+Conf out-of-sync-gone-foreign (2 unstable [amd64])
+Conf out-of-sync-gone-native:i386 (2 unstable [i386])' aptget dist-upgrade -s #-o Debug::pkgDepCache::Marker=1
+
+testempty dpkg -C
+rm -f rootdir/var/lib/dpkg/status
+insertinstalledpackage 'libsame2' 'i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libsame3' 'i386' '1' 'Multi-Arch: same'
+
+# the error message isn't great, but better than nothing, right?
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ depender2 : Depends: libsame2 (= 2) but it is not going to be installed
+E: Unable to correct problems, you have held broken packages.' aptget install depender2 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libsame3:i386 libsame3
+The following NEW packages will be installed:
+ depender3 libsame3
+The following packages will be upgraded:
+ libsame3:i386
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame3:i386 [1] (3 unstable [i386])
+Inst libsame3 (3 unstable [amd64])
+Inst depender3 (3 unstable [all])
+Conf libsame3:i386 (3 unstable [i386])
+Conf libsame3 (3 unstable [amd64])
+Conf depender3 (3 unstable [all])' aptget install depender3 -s
+
+testempty dpkg -C
diff --git a/test/integration/test-provides-arch-all b/test/integration/test-provides-arch-all
new file mode 100755
index 0000000..f212b51
--- /dev/null
+++ b/test/integration/test-provides-arch-all
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# In apt 1.9.6, this test would have failed, outputting:
+# The following packages will be REMOVED:
+# libltdl-dev
+# 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+# Remv libltdl-dev [1]
+#
+# Because we started inserting groups without packages, and then could not
+# properly insert the provides.
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'automake' 'i386' '1' 'Provides: automake-1.16
+Source: automake-1.16
+Multi-Arch: foreign'
+insertinstalledpackage 'libltdl-dev' 'i386' '1' 'Depends: automake-1.16'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget install -f -s
diff --git a/test/integration/test-provides-gone-with-upgrade b/test/integration/test-provides-gone-with-upgrade
new file mode 100755
index 0000000..5249ea0
--- /dev/null
+++ b/test/integration/test-provides-gone-with-upgrade
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'apt' 'i386' '0.8.14' 'Provides: libapt-pkg4.10'
+insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: libapt-pkg4.10'
+insertpackage 'unstable' 'libapt-pkg4.10' 'i386' '0.8.15' 'Breaks: apt (<< 0.8.15)
+Replaces: apt (<< 0.8.15)'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ libapt-pkg4.10
+The following packages will be upgraded:
+ apt
+1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt [0.8.14] (0.8.15 unstable [i386]) []
+Inst libapt-pkg4.10 (0.8.15 unstable [i386])
+Conf libapt-pkg4.10 (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])' aptget dist-upgrade -s
diff --git a/test/integration/test-proxy-connect b/test/integration/test-proxy-connect
new file mode 100755
index 0000000..579bab3
--- /dev/null
+++ b/test/integration/test-proxy-connect
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive
+changetowebserver --request-absolute='uri'
+
+
+msgmsg 'Check that host header we send for CONNECT is for target, not proxy'
+echo "deb https://example.example/ example example" > rootdir/etc/apt/sources.list
+rm -f rootdir/etc/apt/sources.list.d/*
+echo "Acquire::http::Proxy \"http://localhost:${APTHTTPPORT}\";" > rootdir/etc/apt/apt.conf.d/99proxy
+
+aptget update >/dev/null 2>&1
+testsuccessequal "CONNECT example.example:443 HTTP/1.1\r
+Host: example.example:443\r
+--
+CONNECT example.example:443 HTTP/1.1\r
+Host: example.example:443\r
+--
+CONNECT example.example:443 HTTP/1.1\r
+Host: example.example:443\r
+--
+CONNECT example.example:443 HTTP/1.1\r
+Host: example.example:443\r" grep -A1 "^CONNECT" aptarchive/webserver.log
diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching
new file mode 100755
index 0000000..5233dec
--- /dev/null
+++ b/test/integration/test-release-candidate-switching
@@ -0,0 +1,459 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'libc6' 'i386' '2.11.2-7+sid'
+insertpackage 'unstable' 'phonon-backend-xine' 'i386' '4:4.6.0really4.4.2-1+sid' 'Provides: phonon-backend'
+insertpackage 'unstable' 'phonon-backend-xine2' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-xine3' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-xine4' 'i386' '4:4.6.0really4.4.2-1+sid'
+insertpackage 'unstable' 'phonon-backend-null' 'i386' '4:4.20.0+sid' 'Provides: phonon-backend'
+insertpackage 'unstable' 'intermediatepkg' 'all' '1.0'
+
+insertpackage 'unstable' 'amarok-common' 'all' '2.3.1-1+sid'
+insertpackage 'unstable' 'amarok-utils' 'i386' '2.3.1-1+sid'
+insertpackage 'unstable' 'libmtp8' 'i386' '0.3.1+sid'
+insertpackage 'unstable' 'amarok' 'i386' '2.3.1-1+sid' 'Depends: amarok-common (= 2.3.1-1+sid), amarok-utils (= 2.3.1-1+sid), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental' 'amarok-common' 'all' '2.3.2-2+exp'
+insertpackage 'experimental' 'amarok-utils' 'i386' '2.3.2-2+exp'
+insertpackage 'experimental' 'libmtp8' 'i386' '0.3.3+exp'
+insertpackage 'experimental' 'phonon-backend-xine' 'i386' '5:4.6.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental' 'phonon-backend-xine2' 'i386' '5:4.6.0+exp' 'Depends: uninstallablepkg
+Provides: phonon-backend-broken'
+insertpackage 'experimental' 'phonon-backend-xine3' 'i386' '5:4.6.0+exp' 'Depends: intermediatepkg (>= 1.5)'
+insertpackage 'experimental' 'phonon-backend-xine4' 'i386' '5:4.6.0+exp' 'Depends: intermediateuninstallablepkg (= 2.0)
+Provides: phonon-backend-broken'
+insertpackage 'experimental' 'intermediatepkg' 'all' '2.0' 'Depends: libc6'
+insertpackage 'experimental' 'intermediateuninstallablepkg' 'all' '2.0' 'Depends: uninstallablepkg'
+insertpackage 'experimental' 'phonon-backend-null' 'i386' '5:4.20.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental' 'amarok' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental2' 'phonon-backend-xine' 'i386' '5:4.00.0+exp' 'Provides: phonon-backend'
+insertpackage 'experimental2' 'amarok-less' 'i386' '2.3.2-2+exp' 'Depends: amarok-common, phonon-backend-xine (>= 5:4.00.0+exp), libmtp8, libc6, amarok-utils'
+insertpackage 'experimental' 'amarok-higher' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (>= 5:4.6.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+
+insertpackage 'experimental' 'amarok-null' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-null2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-null (= 1:1.0-1) | phonon-backend, libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine2 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine3' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine3 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-xine4' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-xine4 (= 5:4.6.0+exp) | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+insertpackage 'experimental' 'amarok-broken' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp), phonon-backend-broken | phonon-backend-null (= 5:4.20.0+exp), libmtp8 (>= 0.3.1), libc6, amarok-utils (= 2.3.2-2+exp)'
+
+insertpackage 'experimental' 'amarok-recommends' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp)
+Recommends: amarok-utils (= 2.3.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+insertpackage 'experimental' 'amarok-recommends2' 'i386' '2.3.2-2+exp' 'Depends: amarok-common (= 2.3.2-2+exp)
+Recommends: amarok-utils (= 2.30.2-2+exp), phonon-backend-xine | phonon-backend, libmtp8 (>= 0.3.1), libc6'
+
+insertpackage 'experimental' 'uninstallablepkg' 'all' '1.0' 'Depends: libmtp8 (>= 10:0.20.1), amarok-utils (= 2.3.2-2+exp)'
+
+setupaptarchive
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ amarok-common (2.3.1-1+sid)
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.1-1+sid)
+ amarok-common (2.3.1-1+sid)
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.3+exp)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.3+exp)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok -t experimental --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental --trivial-only -V
+
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-null (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null/experimental --trivial-only -V
+
+# do not select the same version multiple times
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-null (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/294 B of archives.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok/experimental amarok-null/experimental --trivial-only -V
+
+# … but thighten the version if needed
+# in theory, the second line is wrong, but printing the right version is too much of a hassle
+# (we have to check if later in the Changed list is another change and if so use this version
+# instead of the current candidate) - and it wouldn't be (really) useful anyway…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental2 [i386]) for 'amarok-less'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-less'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-higher'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-higher'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-higher'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-higher'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-higher (2.3.2-2+exp)
+ amarok-less (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/294 B of archives.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-less/experimental2 amarok-higher/experimental --trivial-only -V
+
+# phonon-backend-null can't be used directly, but as it provides it is still fine…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-null2'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-null2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-null2 (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (4:4.20.0+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-null2/experimental --trivial-only -V
+
+# if an or-group satisfier is already found, do not set others
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine' because of 'amarok-xine'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (5:4.6.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine/experimental --trivial-only -V
+
+# … but proceed testing if the first doesn't work out
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine2'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine2'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine2 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine2/experimental --trivial-only -V
+
+# sometimes, the second level need to be corrected, too
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine3'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine3'
+Selected version '5:4.6.0+exp' (experimental [i386]) for 'phonon-backend-xine3' because of 'amarok-xine3'
+Selected version '2.0' (experimental [all]) for 'intermediatepkg' because of 'phonon-backend-xine3'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine3'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ intermediatepkg (2.0)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine3 (5:4.6.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine3 (2.3.2-2+exp)
+ intermediatepkg (2.0)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine3 (5:4.6.0+exp)
+0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/294 B of archives.
+After this operation, 301 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine3/experimental --trivial-only -V
+
+# … but proceed testing if the first doesn't work out even in second deep
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-xine4'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-xine4'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-xine4'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-xine4'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ amarok-xine4 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-xine4/experimental --trivial-only -V
+
+# providers can be broken, too
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-broken'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-broken'
+Selected version '5:4.20.0+exp' (experimental [i386]) for 'phonon-backend-null' because of 'amarok-broken'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-broken'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+The following NEW packages will be installed:
+ amarok-broken (2.3.2-2+exp)
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-null (5:4.20.0+exp)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-broken/experimental --trivial-only -V
+
+# switch the candidate for recommends too if they should be installed
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-utils' because of 'amarok-recommends'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends (2.3.2-2+exp)
+ amarok-utils (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/252 B of archives.
+After this operation, 258 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -o APT::Install-Recommends=1
+
+# … or not if not
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+Recommended packages:
+ amarok-utils (2.3.1-1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+ | phonon-backend
+ libmtp8 (0.3.1+sid)
+ libc6 (2.11.2-7+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends (2.3.2-2+exp)
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/84 B of archives.
+After this operation, 86.0 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends/experimental --trivial-only -V -o APT::Install-Recommends=0
+
+# but broken recommends are not the end of the world
+# FIXME: the version output for recommend packages is a bit strange… but what would be better?
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-recommends2'
+Selected version '2.3.2-2+exp' (experimental [all]) for 'amarok-common' because of 'amarok-recommends2'
+The following additional packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+Recommended packages:
+ amarok-utils (2.3.1-1+sid)
+The following NEW packages will be installed:
+ amarok-common (2.3.2-2+exp)
+ amarok-recommends2 (2.3.2-2+exp)
+ libc6 (2.11.2-7+sid)
+ libmtp8 (0.3.1+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/210 B of archives.
+After this operation, 215 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." aptget install amarok-recommends2/experimental --trivial-only -V -o APT::Install-Recommends=1
+
+# if one depends doesn't work, we don't need to look deeper…
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '1.0' (experimental [all]) for 'uninstallablepkg'
+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:
+ uninstallablepkg : Depends: libmtp8 (>= 10:0.20.1) but it is not going to be installed
+ Depends: amarok-utils (= 2.3.2-2+exp) but 2.3.1-1+sid is to be installed
+E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V
+
+insertinstalledpackage 'libmtp8' 'i386' '1'
+insertinstalledpackage 'amarok' 'i386' '3' 'Depends: amarok-common (= 3), libmtp8 (>= 1)'
+insertinstalledpackage 'amarok-common' 'all' '3'
+# note that libmtp8 isn't downgraded as there is no need
+testfailureequal "Reading package lists...
+Building dependency tree...
+Selected version '2.3.1-1+sid' (unstable [i386]) for 'amarok'
+Selected version '2.3.1-1+sid' (unstable [all]) for 'amarok-common' because of 'amarok'
+The following additional packages will be installed:
+ amarok-common (2.3.1-1+sid)
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following NEW packages will be installed:
+ amarok-utils (2.3.1-1+sid)
+ libc6 (2.11.2-7+sid)
+ phonon-backend-xine (4:4.6.0really4.4.2-1+sid)
+The following packages will be DOWNGRADED:
+ amarok (3 => 2.3.1-1+sid)
+ amarok-common (3 => 2.3.1-1+sid)
+0 upgraded, 3 newly installed, 2 downgraded, 0 to remove and 0 not upgraded.
+Need to get 0 B/210 B of archives.
+After this operation, 129 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation." apt install amarok/sid --trivial-only -V
diff --git a/test/integration/test-releasefile-date b/test/integration/test-releasefile-date
new file mode 100755
index 0000000..a985074
--- /dev/null
+++ b/test/integration/test-releasefile-date
@@ -0,0 +1,46 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'wheezy' 'apt' 'all' '0.8.15'
+
+getlabelfromsuite() {
+ echo -n 'Testcases'
+}
+
+setupaptarchive --no-update
+
+runtest() {
+ local MSG="$1"
+ msgtest "Release file is $MSG as it has" "$2"
+ rm -rf rootdir/var/lib/apt/lists
+ generatereleasefiles "$3"
+ signreleasefiles
+ shift 3
+ if [ "$MSG" = 'accepted' ]; then
+ testsuccess --nomsg aptget update "$@"
+ testfailure grep -q 'is not valid yet' rootdir/tmp/testsuccess.output
+ else
+ testfailure --nomsg aptget update "$@"
+ testsuccess grep -q 'is not valid yet' rootdir/tmp/testfailure.output
+ fi
+}
+
+
+runtest 'accepted' 'no date' ''
+runtest 'accepted' 'ok date' 'now + 1 hour'
+runtest 'rejected' 'date to far in the future' 'now + 12 hours'
+runtest 'accepted' 'date to far in the future, but accepted via option' 'now + 12 hours' -o Acquire::Max-FutureTime=86400
+
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [check-date=no] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'bad Date but overridden by sources option' 'now + 1 day'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[.*\] #\1 [date-max-future=86400] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'Date allowed via sources list option via sources option' 'now + 12 hours'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[.*\] #\1 [date-max-future=86405] #' rootdir/etc/apt/sources.list.d/*
+runtest 'rejected' 'Date further in the future than allowed by sources.list option' 'now + 2 day'
diff --git a/test/integration/test-releasefile-date-older b/test/integration/test-releasefile-date-older
new file mode 100755
index 0000000..81c71ea
--- /dev/null
+++ b/test/integration/test-releasefile-date-older
@@ -0,0 +1,132 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'wheezy' 'apt' 'all' '0.8.15'
+
+setupaptarchive --no-update
+
+# we don't complain as the server could have just sent a 'Hit' here and this
+# 'downgrade attack' is usually performed by out-of-sync mirrors. Valid-Until
+# catches the 'real' downgrade attacks (expect that it finds stale mirrors).
+# Scaring users with an error here serves hence no point.
+
+msgmsg 'InRelease file is silently rejected if' 'new Date is before old Date'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+msgmsg 'Release.gpg file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='InRelease'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Crisscross InRelease/Release.gpg file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='Release.gpg'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testsuccess aptget update
+export APT_DONT_SIGN='InRelease'
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Crisscross Release.gpg/InRelease file is silently rejected if' 'new Date is before old Date'
+export APT_DONT_SIGN='InRelease'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+find aptarchive -name 'InRelease' -delete
+testsuccess aptget update
+export APT_DONT_SIGN='Release.gpg'
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testsuccess aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+unset APT_DONT_SIGN
+
+msgmsg 'Release file has' 'no Date and no Valid-Until field'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarning aptget update
+listcurrentlistsdirectory > listsdir.lst
+# have no effect as Date is unknown
+testwarning aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+testwarning aptget update -o Acquire::Max-ValidTime=1
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+sed -i '/^Codename: / a\
+Another-Field: yes' $(find aptarchive/ -name 'Release')
+touch -d 'now + 1 day' $(find aptarchive/ -name 'Release')
+signreleasefiles "${2:-Joe Sixpack}"
+testwarning aptget update
+testsuccess cmp $(find aptarchive/ -name 'InRelease') $(find rootdir/var/lib/apt/ -name '*_InRelease')
+
+msgmsg 'Release file has' 'no Date field, but Valid-Until expired'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now - 2 days'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testfailure aptget update
+listcurrentlistsdirectory > listsdir.lst
+# have no effect as Date is unknown
+testfailure aptget update -o Acquire::Min-ValidTime=$((3600*24*30))
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+testfailure aptget update -o Acquire::Max-ValidTime=1
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+
+msgmsg 'Release file has' 'no Date field, but Valid-Until is good'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 2 days'
+sed -i '/^Date: / d' $(find ./aptarchive -name 'Release')
+signreleasefiles
+testwarning aptget update
+
+# the repo is now signed by unknown key, but marked as trusted
+rm -rf rootdir/etc/apt/trusted.gpg.d
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+
+msgmsg 'Forgot to disable in follow-up' 'Check-Date'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now + 3 days' 'now + 7 days'
+signreleasefiles
+testfailure aptget update
+testwarning aptget update -o Acquire::Check-Date=no
+listcurrentlistsdirectory > listsdir.lst
+generatereleasefiles 'now + 5 days' 'now + 13 days'
+signreleasefiles
+testfailure aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
+testwarning aptget update -o Acquire::Check-Date=no
+testsuccess cmp "$(find aptarchive/ -name 'InRelease')" "$(find rootdir/var/lib/apt/ -name '*_Release')"
+
+msgmsg 'Force-Trusted InRelease file is silently ignored' 'new Date is before old Date'
+rm -rf rootdir/var/lib/apt/lists
+generatereleasefiles 'now' 'now + 7 days'
+signreleasefiles
+testwarning aptget update
+listcurrentlistsdirectory > listsdir.lst
+redatereleasefiles 'now - 2 days'
+testwarning aptget update
+testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)"
diff --git a/test/integration/test-releasefile-valid-until b/test/integration/test-releasefile-valid-until
new file mode 100755
index 0000000..b18dde2
--- /dev/null
+++ b/test/integration/test-releasefile-valid-until
@@ -0,0 +1,57 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'wheezy' 'apt' 'all' '0.8.15'
+
+getlabelfromsuite() {
+ echo -n 'Testcases'
+}
+
+setupaptarchive --no-update
+
+runtest() {
+ local MSG="$1"
+ msgtest "Release file is $MSG as it has" "$2"
+ rm -rf rootdir/var/lib/apt/lists
+ generatereleasefiles "$3" "$4"
+ signreleasefiles
+ shift 4
+ if [ "$MSG" = 'accepted' ]; then
+ testsuccess --nomsg aptget update "$@"
+ testfailure grep -q 'is expired' rootdir/tmp/testsuccess.output
+ else
+ testfailure --nomsg aptget update "$@"
+ testsuccess grep -q 'is expired' rootdir/tmp/testfailure.output
+ fi
+}
+
+runtest 'accepted' 'no Until' '' ''
+runtest 'accepted' 'no Until and good Max-Valid' '' '' -o Acquire::Max-ValidTime=3600
+runtest 'rejected' 'no Until, but bad Max-Valid' 'now - 2 days' '' -o Acquire::Max-ValidTime=3600
+runtest 'accepted' 'good Until' 'now - 3 days' 'now + 1 day'
+runtest 'rejected' 'bad Until' 'now - 7 days' 'now - 4 days'
+runtest 'rejected' 'bad Until (ignore good Max-Valid)' 'now - 7 days' 'now - 4 days' -o Acquire::Max-ValidTime=1209600
+runtest 'rejected' 'bad Max-Valid (bad Until)' 'now - 7 days' 'now - 4 days' -o Acquire::Max-ValidTime=86400
+runtest 'rejected' 'bad Max-Valid (good Until)' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=86400
+runtest 'accepted' 'good labeled Max-Valid' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=86400 -o Acquire::Max-ValidTime::Testcases=1209600
+runtest 'rejected' 'bad labeled Max-Valid' 'now - 7 days' 'now + 4 days' -o Acquire::Max-ValidTime=1209600 -o Acquire::Max-ValidTime::Testcases=86400
+runtest 'accepted' 'good Until (good Min-Valid, no Max-Valid)' 'now - 7 days' 'now + 1 days' -o Acquire::Min-ValidTime=1209600
+runtest 'accepted' 'good Min-Valid (bad Until, no Max-Valid)' 'now - 7 days' 'now - 4 days' -o Acquire::Min-ValidTime=1209600
+runtest 'accepted' 'good Min-Valid (bad Until, good Max-Valid) <' 'now - 7 days' 'now - 2 days' -o Acquire::Min-ValidTime=1209600 -o Acquire::Max-ValidTime=2419200
+runtest 'rejected' 'bad Max-Valid (bad Until, good Min-Valid) >' 'now - 7 days' 'now - 2 days' -o Acquire::Max-ValidTime=12096 -o Acquire::Min-ValidTime=2419200
+runtest 'rejected' 'bad Max-Valid (bad Until, bad Min-Valid) <' 'now - 7 days' 'now - 2 days' -o Acquire::Min-ValidTime=12096 -o Acquire::Max-ValidTime=241920
+runtest 'rejected' 'bad Max-Valid (bad Until, bad Min-Valid) >' 'now - 7 days' 'now - 2 days' -o Acquire::Max-ValidTime=12096 -o Acquire::Min-ValidTime=241920
+
+sed -i -e 's#\(deb\(-src\)\?\) #\1 [check-valid-until=no] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'bad Until but overridden by sources option' 'now - 7 days' 'now - 4 days'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[check-valid-until=no\] #\1 [valid-until-max=86400] #' rootdir/etc/apt/sources.list.d/*
+runtest 'rejected' 'bad Max-Valid (good Until) via sources option' 'now - 7 days' 'now + 4 days'
+
+sed -i -e 's#\(deb\(-src\)\?\) \[valid-until-max=86400\] #\1 [valid-until-min=1209600] #' rootdir/etc/apt/sources.list.d/*
+runtest 'accepted' 'good Min-Valid (bad Until) via sources option' 'now - 7 days' 'now - 4 days'
diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification
new file mode 100755
index 0000000..5f873b8
--- /dev/null
+++ b/test/integration/test-releasefile-verification
@@ -0,0 +1,509 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+export APT_DONT_SIGN='Release.gpg'
+buildaptarchive
+setupflataptarchive
+changetowebserver
+
+prepare() {
+ local DATE="${2:-now}"
+ if [ "$DATE" = 'now' ]; then
+ if [ "$1" = "${PKGFILE}-new" ]; then
+ DATE='now - 1 day'
+ else
+ DATE='now - 7 day'
+ fi
+ fi
+ for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
+ touch -d 'now - 1 year' "$release"
+ done
+ aptget clean
+ cp "$1" aptarchive/Packages
+ find aptarchive -name 'Release' -delete
+ compressfile 'aptarchive/Packages' "$DATE"
+ generatereleasefiles "$DATE" 'now + 1 month'
+}
+
+installaptold() {
+ rm -rf rootdir/var/cache/apt/archives
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 3 B of archives.
+After this operation, 5370 kB of additional disk space will be used.
+Get:1 http://localhost:${APTHTTPPORT} apt 0.7.25.3 [3 B]
+Download complete and in download only mode" aptget install apt -dy
+}
+
+installaptnew() {
+ rm -rf rootdir/var/cache/apt/archives
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 3 B of archives.
+After this operation, 5808 kB of additional disk space will be used.
+Get:1 http://localhost:${APTHTTPPORT} apt 0.8.0~pre1 [3 B]
+Download complete and in download only mode" aptget install apt -dy
+}
+
+failaptold() {
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 3 B of archives.
+After this operation, 5370 kB of additional disk space will be used.
+WARNING: The following packages cannot be authenticated!
+ apt
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated' aptget install apt -dy
+}
+
+failaptnew() {
+ testfailureequal 'Reading package lists...
+Building dependency tree...
+Suggested packages:
+ aptitude | synaptic | wajig dpkg-dev apt-doc bzip2 lzma python-apt
+The following NEW packages will be installed:
+ apt
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Need to get 3 B of archives.
+After this operation, 5808 kB of additional disk space will be used.
+WARNING: The following packages cannot be authenticated!
+ apt
+E: There were unauthenticated packages and -y was used without --allow-unauthenticated' aptget install apt -dy
+}
+
+# fake our downloadable file
+echo -n 'apt' > aptarchive/apt.deb
+
+PKGFILE="${TESTDIR}/$(echo "$(basename "$0")" | sed 's#^test-#Packages-#')"
+
+updatewithwarnings() {
+ testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testsuccess grep -E "$1" rootdir/tmp/testwarning.output
+}
+
+runtest() {
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ if [ "$(id -u)" != '0' ]; then
+ msgmsg 'Cold archive signed by' 'Joe Sixpack + unreadable key'
+ rm -rf rootdir/var/lib/apt/lists
+ echo 'foobar' > rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ chmod 000 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ updatewithwarnings '^W: .* is not readable by user'
+ chmod 644 rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ rm -f rootdir/etc/apt/trusted.gpg.d/unreadablekey.gpg
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ fi
+
+ msgmsg 'Good warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by' 'Rex Expired'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ signreleasefiles 'Rex Expired'
+ updatewithwarnings '^W: .* EXPKEYSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+ msgmsg 'Cold archive expired signed by' 'Joe Sixpack'
+ if dpkg --compare-versions "$(aptkey adv --version | head -n 2 | tail -n 1 | cut -d' ' -f 3)" '>=' '2.1' >/dev/null 2>&1; then
+ touch rootdir/etc/apt/apt.conf.d/99gnupg2
+ elif gpg2 --version >/dev/null 2>&1; then
+ echo 'Apt::Key::gpgcommand "gpg2";' > rootdir/etc/apt/apt.conf.d/99gnupg2
+ if ! dpkg --compare-versions "$(aptkey adv --version | head -n 2 | tail -n 1 | cut -d' ' -f 3)" '>=' '2.1' >/dev/null 2>&1; then
+ rm rootdir/etc/apt/apt.conf.d/99gnupg2
+ fi
+ fi
+ if [ -e rootdir/etc/apt/apt.conf.d/99gnupg2 ]; then
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack' 'aptarchive' --faked-system-time "20070924T154812" --default-sig-expire 2016-04-01
+ updatewithwarnings '^W: .* EXPSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ rm -f rootdir/etc/apt/apt.conf.d/99gnupg2
+ else
+ msgskip 'Not a new enough gpg available providing --fake-system-time'
+ fi
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack,Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack,Marvin Paranoid'
+ successfulaptgetupdate 'NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack,Rex Expired'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack,Rex Expired'
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ successfulaptgetupdate 'EXPKEYSIG'
+ rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+
+ msgmsg 'Bad warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Good warm archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Marvin Paranoid'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Good warm archive signed by' 'Rex Expired'
+ prepare "${PKGFILE}-new"
+ cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ signreleasefiles 'Rex Expired'
+ updatewithwarnings '^W: .* EXPKEYSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+ msgmsg 'Good warm archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}-new"
+ signreleasefiles
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Cold archive signed by bad keyring' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ local MARVIN="$(readlink -f keys/marvinparanoid.pub)"
+ sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
+ updatewithwarnings '^W: .* NO_PUBKEY'
+
+ msgmsg 'Cold archive signed by good keyring' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ signreleasefiles 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyrings' 'Marvin Paranoid, Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ local SIXPACK="$(readlink -f keys/joesixpack.pub)"
+ sed -i "s# \[signed-by=[^]]\+\] # [signed-by=$MARVIN,$SIXPACK] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyrings' 'Joe Sixpack, Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ local SIXPACK="$(readlink -f keys/joesixpack.pub)"
+ sed -i "s# \[signed-by=[^]]\+\] # [signed-by=$SIXPACK,$MARVIN] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ sed -i "s# \[signed-by=[^]]\+\] # #" rootdir/etc/apt/sources.list.d/*
+
+ local MARVIN="$(aptkey --keyring $MARVIN finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
+ msgmsg 'Cold archive signed by bad keyid' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
+ updatewithwarnings '^W: .* be verified because the public key is not available: .*'
+
+ msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ cp keys/marvinparanoid.pub rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid,Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid,Joe Sixpack'
+ successfulaptgetupdate 'NoPubKey: GOODSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger --with-colons | grep '^fpr' | cut -d':' -f 10)"
+ msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 [signed-by=${SIXPACK},${MARVIN}] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=${SIXPACK},${MARVIN}\] #\1 [signed-by=${MARVIN},${SIXPACK}] #" rootdir/etc/apt/sources.list.d/*
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+ rm -f rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
+ sed -i "s#^\(deb\(-src\)\?\) \[signed-by=${MARVIN},${SIXPACK}\] #\1 #" rootdir/etc/apt/sources.list.d/*
+
+ rm -rf rootdir/var/lib/apt/lists-bak
+ cp -a rootdir/var/lib/apt/lists rootdir/var/lib/apt/lists-bak
+ prepare "${PKGFILE}-new"
+ signreleasefiles 'Joe Sixpack'
+
+ msgmsg 'Warm archive with signed-by' 'Joe Sixpack'
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Warm archive with signed-by' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${MARVIN}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ updatewithwarnings 'W: .* public key is not available: GOODSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ msgmsg 'Warm archive with outdated signed-by' 'Marvin Paranoid'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Valid-Until: $(date -u -d "now - 2min" '+%a, %d %b %Y %H:%M:%S %Z') \\
+Signed-By: ${MARVIN}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Warm archive with two signed-bys' 'Joe Sixpack'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${MARVIN} ${MARVIN}, \\
+ ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ cp -a keys/sebastiansubkey.pub rootdir/etc/apt/trusted.gpg.d/sebastiansubkey.gpg
+ local SEBASTIAN="$(aptkey --keyring keys/sebastiansubkey.pub finger --with-colons | grep -m 1 '^fpr' | cut -d':' -f 10)"
+ msgmsg 'Warm archive with subkey signing' 'Sebastian Subkey'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ signreleasefiles 'Sebastian Subkey'
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${SEBASTIAN}" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+
+ msgmsg 'Warm archive with wrong exact subkey signing' 'Sebastian Subkey'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${SEBASTIAN}!" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ updatewithwarnings 'W: .* public key is not available: GOODSIG'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ installaptold
+
+ local SUBKEY="$(aptkey --keyring keys/sebastiansubkey.pub finger --with-colons | grep -m 2 '^fpr' | tail -n -1 | cut -d':' -f 10)"
+ msgmsg 'Warm archive with correct exact subkey signing' 'Sebastian Subkey'
+ rm -rf rootdir/var/lib/apt/lists
+ cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists
+ sed -i "/^Valid-Until: / a\
+Signed-By: ${SUBKEY}!" rootdir/var/lib/apt/lists/*Release
+ touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+ successfulaptgetupdate
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ installaptnew
+ rm -f rootdir/etc/apt/trusted.gpg.d/sebastiansubkey.gpg
+}
+
+runtest2() {
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ successfulaptgetupdate
+
+ # New .deb but now an unsigned archive. For example MITM to circumvent
+ # package verification.
+ msgmsg 'Warm archive signed by' 'nobody'
+ prepare "${PKGFILE}-new"
+ find aptarchive/ \( -name InRelease -o -name Release.gpg \) -delete
+ updatewithwarnings 'W: .* no longer signed.'
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ failaptnew
+
+ # Unsigned archive from the beginning must also be detected.
+ msgmsg 'Cold archive signed by' 'nobody'
+ rm -rf rootdir/var/lib/apt/lists
+ updatewithwarnings 'W: .* is not signed.'
+ testsuccessequal "$(cat "${PKGFILE}-new")
+" aptcache show apt
+ failaptnew
+}
+
+runtest3() {
+ echo "APT::Hashes::$APT_TESTS_DIGEST_ALGO::$1 \"yes\";" > rootdir/etc/apt/apt.conf.d/truststate
+ msgmsg "Running base test with $1 digest"
+ runtest2
+
+ for DELETEFILE in 'InRelease' 'Release.gpg'; do
+ export APT_DONT_SIGN="$DELETEFILE"
+ msgmsg "Running test with deletion of $DELETEFILE and $1 digest"
+ runtest
+ export APT_DONT_SIGN='Release.gpg'
+ done
+}
+
+# disable some protection by default and ensure we still do the verification
+# correctly
+cat > rootdir/etc/apt/apt.conf.d/weaken-security <<EOF
+Acquire::AllowInsecureRepositories "1";
+Acquire::AllowDowngradeToInsecureRepositories "1";
+EOF
+# the hash marked as configurable in our gpgv method
+export APT_TESTS_DIGEST_ALGO='SHA224'
+
+successfulaptgetupdate() {
+ testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ if [ -n "$1" ]; then
+ cp rootdir/tmp/testsuccess.output aptupdate.output
+ testsuccess grep "$1" aptupdate.output
+ fi
+}
+runtest3 'Trusted'
+
+successfulaptgetupdate() {
+ testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ if [ -n "$1" ]; then
+ testsuccess grep "$1" rootdir/tmp/testwarning.output
+ fi
+ testsuccess grep 'uses weak digest algorithm' rootdir/tmp/testwarning.output
+}
+runtest3 'Weak'
+
+msgmsg "Running test with apt-untrusted digest"
+echo "APT::Hashes::$APT_TESTS_DIGEST_ALGO::Untrusted \"yes\";" > rootdir/etc/apt/apt.conf.d/truststate
+runfailure() {
+ for DELETEFILE in 'InRelease' 'Release.gpg'; do
+ export APT_DONT_SIGN="$DELETEFILE"
+ msgmsg 'Cold archive signed by' 'Joe Sixpack'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Joe Sixpack'
+ testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testsuccess grep 'The following signatures were invalid' rootdir/tmp/testfailure.output
+ testnopackage 'apt'
+ testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ failaptold
+ rm -rf rootdir/var/lib/apt/lists
+ sed -i 's#^deb\(-src\)\? #deb\1 [allow-insecure=yes] #' rootdir/etc/apt/sources.list.d/*
+ testwarning aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ failaptold
+ sed -i 's#^deb\(-src\)\? \[allow-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/*
+
+ msgmsg 'Cold archive signed by' 'Marvin Paranoid'
+ prepare "${PKGFILE}"
+ rm -rf rootdir/var/lib/apt/lists
+ signreleasefiles 'Marvin Paranoid'
+ testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
+ testnopackage 'apt'
+ updatewithwarnings '^W: .* NO_PUBKEY'
+ testsuccessequal "$(cat "${PKGFILE}")
+" aptcache show apt
+ failaptold
+ export APT_DONT_SIGN='Release.gpg'
+ done
+}
+runfailure
+
+msgmsg "Running test with gpgv-untrusted digest"
+export APT_TESTS_DIGEST_ALGO='MD5'
+runfailure
diff --git a/test/integration/test-releasefile-verification-noflat b/test/integration/test-releasefile-verification-noflat
new file mode 100755
index 0000000..3953c64
--- /dev/null
+++ b/test/integration/test-releasefile-verification-noflat
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+export APT_DONT_SIGN='Release.gpg'
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+setupaptarchive "now" "now + 1 year"
+changetowebserver
+
+SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
+
+testsuccess aptget update
+
+msgmsg 'Warm archive with signed-by' 'Joe Sixpack'
+sed -i "/^Valid-Until: / a\
+Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release
+touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} unstable InRelease [$(stat -c '%s' 'aptarchive/dists/unstable/InRelease') B]
+Reading package lists..." aptget update
+testsuccess aptcache show foo
diff --git a/test/integration/test-resolve-by-keep-new-recommends b/test/integration/test-resolve-by-keep-new-recommends
new file mode 100755
index 0000000..3591ed8
--- /dev/null
+++ b/test/integration/test-resolve-by-keep-new-recommends
@@ -0,0 +1,21 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertinstalledpackage 'foo' 'i386' '1.0'
+insertpackage 'unstable' 'foo' 'i386' '2.0' 'Recommends: bar'
+
+setupaptarchive
+
+UPGRADE_KEEP="Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ foo
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded."
+testsuccessequal "$UPGRADE_KEEP" aptget upgrade -s
+
diff --git a/test/integration/test-resolver-delays-remove-decisions b/test/integration/test-resolver-delays-remove-decisions
new file mode 100755
index 0000000..a069954
--- /dev/null
+++ b/test/integration/test-resolver-delays-remove-decisions
@@ -0,0 +1,106 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'stuff' 'all' '1'
+
+insertpackage 'unstable' 'foobar' 'all' '1' 'Depends: foo | bar'
+insertpackage 'unstable' 'foo' 'all' '1' 'Conflicts: stuff
+Depends: foo-dep'
+insertpackage 'unstable' 'foo-dep' 'all' '1' 'Depends: uninstallable'
+
+insertpackage 'unstable' 'bar' 'all' '1'
+
+setupaptarchive
+
+# We are needlessly removing "stuff" if we don't delay its marking here
+# as we do not question the remove later on
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
+ Installing foo:amd64 as Depends of foobar:amd64
+ Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
+ MarkInstall foo:amd64 < none -> 1 @un uN Ib > FU=0
+ Installing foo-dep:amd64 as Depends of foo:amd64
+ foo-dep:amd64 Depends on uninstallable:amd64 < none @un H > can't be satisfied!
+ foo:amd64 Depends on foo-dep:amd64 < none @un H > can't be satisfied! (dep)
+ Installing bar:amd64 as Depends of foobar:amd64
+ MarkInstall bar:amd64 < none -> 1 @un uN > FU=0
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ bar
+The following NEW packages will be installed:
+ bar foobar
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst bar (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf bar (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+
+insertinstalledpackage 'uninstallable' 'all' '1'
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
+ Installing foo:amd64 as Depends of foobar:amd64
+ Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
+ MarkInstall foo:amd64 < none -> 1 @un uN Ib > FU=0
+ Installing foo-dep:amd64 as Depends of foo:amd64
+ MarkInstall foo-dep:amd64 < none -> 1 @un uN > FU=0
+ MarkDelete stuff:amd64 < 1 @ii mK > FU=0
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ foo foo-dep
+The following packages will be REMOVED:
+ stuff
+The following NEW packages will be installed:
+ foo foo-dep foobar
+ MarkDelete stuff:amd64 < 1 @ii K > FU=1
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv stuff [1]
+Inst foo-dep (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf foo-dep (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
+
+# Same solution but the installs are considered protected now as there is no other solution
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1
+ Installing foo:amd64 as Depends of foobar:amd64
+ Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1)
+ MarkDelete stuff:amd64 < 1 @ii mK > FU=0
+ MarkInstall foo:amd64 < none -> 1 @un puN Ib > FU=0
+ Installing foo-dep:amd64 as Depends of foo:amd64
+ MarkInstall foo-dep:amd64 < none -> 1 @un puN > FU=0
+ MarkInstall uninstallable:amd64 < 1 @ii pmK > FU=0
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+ Ignore MarkGarbage of foo:amd64 < none -> 1 @un puN > as its mode (Install) is protected
+Package 'bar' is not installed, so not removed
+The following additional packages will be installed:
+ foo foo-dep
+The following packages will be REMOVED:
+ stuff
+The following NEW packages will be installed:
+ foo foo-dep foobar
+ MarkDelete stuff:amd64 < 1 | none @ii H > FU=1
+0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
+Remv stuff [1]
+Inst foo-dep (1 unstable [all])
+Inst foo (1 unstable [all])
+Inst foobar (1 unstable [all])
+Conf foo-dep (1 unstable [all])
+Conf foo (1 unstable [all])
+Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
diff --git a/test/integration/test-resolver-provider-exchange b/test/integration/test-resolver-provider-exchange
new file mode 100755
index 0000000..0a85db3
--- /dev/null
+++ b/test/integration/test-resolver-provider-exchange
@@ -0,0 +1,107 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'fuse' 'all' '2'
+insertpackage 'unstable' 'fuse3' 'all' '3' 'Conflicts: fuse
+Provides: fuse'
+
+insertpackage 'unstable' 'foobar-d' 'all' '1' 'Depends: fuse'
+insertpackage 'unstable' 'foobar-d2' 'all' '1' 'Depends: fuse
+Conflicts: fuse3'
+insertpackage 'unstable' 'foobar-d3' 'all' '1' 'Depends: fuse3'
+insertpackage 'unstable' 'foobar-r' 'all' '1' 'Recommends: fuse'
+insertpackage 'unstable' 'foobar-r2' 'all' '1' 'Recommends: fuse
+Conflicts: fuse3'
+insertpackage 'unstable' 'foobar-r3' 'all' '1' 'Recommends: fuse3'
+
+setupaptarchive
+
+installfoobars() {
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foobar-d
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-d (1 unstable [all])
+Conf foobar-d (1 unstable [all])' apt install -s foobar-d
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foobar-d2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-d2 (1 unstable [all])
+Conf foobar-d2 (1 unstable [all])' apt install -s foobar-d2
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ fuse3
+The following packages will be REMOVED:
+ fuse
+The following NEW packages will be installed:
+ foobar-d3 fuse3
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv fuse [2]$1
+Inst fuse3 (3 unstable [all])
+Inst foobar-d3 (1 unstable [all])
+Conf fuse3 (3 unstable [all])
+Conf foobar-d3 (1 unstable [all])" apt install -s foobar-d3
+
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foobar-r
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-r (1 unstable [all])
+Conf foobar-r (1 unstable [all])' apt install -s foobar-r
+ testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foobar-r2
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foobar-r2 (1 unstable [all])
+Conf foobar-r2 (1 unstable [all])' apt install -s foobar-r2
+ if [ -z "$1" ]; then
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ fuse3
+The following packages will be REMOVED:
+ fuse
+The following NEW packages will be installed:
+ foobar-r3 fuse3
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv fuse [2]$1
+Inst foobar-r3 (1 unstable [all])
+Inst fuse3 (3 unstable [all])
+Conf foobar-r3 (1 unstable [all])
+Conf fuse3 (3 unstable [all])" apt install -s foobar-r3
+ else
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ fuse3
+The following packages will be REMOVED:
+ fuse
+The following NEW packages will be installed:
+ foobar-r3 fuse3
+0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
+Remv fuse [2]$1
+Inst fuse3 (3 unstable [all])
+Inst foobar-r3 (1 unstable [all])
+Conf fuse3 (3 unstable [all])
+Conf foobar-r3 (1 unstable [all])" apt install -s foobar-r3
+ fi
+}
+msgmsg 'fuse has no installed dependers'
+installfoobars
+
+for i in $(seq 0 10); do
+ insertinstalledpackage "stuff$i" 'all' '1' 'Depends: fuse'
+done
+msgmsg 'fuse has many dependers installed'
+installfoobars ' [stuff0:amd64 stuff1:amd64 stuff2:amd64 stuff3:amd64 stuff4:amd64 stuff5:amd64 stuff6:amd64 stuff7:amd64 stuff8:amd64 stuff9:amd64 stuff10:amd64 ]'
diff --git a/test/integration/test-same-version-but-different b/test/integration/test-same-version-but-different
new file mode 100755
index 0000000..595a66f
--- /dev/null
+++ b/test/integration/test-same-version-but-different
@@ -0,0 +1,109 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertpackage 'unstable' 'all-same' 'all' '1'
+insertpackage 'testing' 'all-same' 'all' '1'
+
+insertpackage 'unstable' 'diff-depends' 'all' '1' 'Depends: all-same (= 1)'
+insertpackage 'testing' 'diff-depends' 'all' '1' 'Depends: all-same (= 2)'
+
+insertpackage 'unstable' 'diff-arch' 'all' '1'
+insertpackage 'testing' 'diff-arch' 'amd64' '1'
+
+insertpackage 'unstable' 'diff-ma-1' 'all' '1' 'Multi-Arch: foreign'
+insertpackage 'testing' 'diff-ma-1' 'all' '1'
+
+insertpackage 'unstable' 'diff-ma-2' 'all' '1' 'Multi-Arch: foreign'
+insertpackage 'testing' 'diff-ma-2' 'all' '1' 'Multi-Arch: no'
+
+insertpackage 'unstable' 'diff-ma-3' 'amd64' '1' 'Multi-Arch: foreign'
+insertpackage 'testing' 'diff-ma-3' 'amd64' '1' 'Multi-Arch: same'
+
+insertpackage 'unstable' 'diff-size' 'all' '1' 'Size: 21'
+insertpackage 'testing' 'diff-size' 'all' '1' 'Size: 42'
+
+insertpackage 'unstable' 'diff-instsize' 'all' '1' 'Installed-Size: 21'
+insertpackage 'testing' 'diff-instsize' 'all' '1' 'Installed-Size: 42'
+
+insertpackage 'unstable' 'diff-sha256' 'all' '1' 'SHA256: 0000000000000000000000000000000000000000000000000000000000000000'
+insertpackage 'testing' 'diff-sha256' 'all' '1' 'SHA256: 0000000000000000000000000000000000000000000000000000000000000001'
+
+setupaptarchive
+
+APTARCHIVE="$(readlink -f ./aptarchive)"
+testsuccessequal "all-same:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy all-same
+testsuccessequal "diff-depends:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-depends
+testsuccessequal "diff-arch:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main amd64 Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-arch
+testsuccessequal "diff-ma-1:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-ma-1
+testsuccessequal "diff-ma-2:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-ma-2
+testsuccessequal "diff-ma-3:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main amd64 Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main amd64 Packages" apt policy diff-ma-3
+testsuccessequal "diff-size:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-size
+testsuccessequal "diff-instsize:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-instsize
+testsuccessequal "diff-sha256:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${APTARCHIVE} testing/main all Packages
+ 1 500
+ 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-sha256
diff --git a/test/integration/test-security-no-remote-status b/test/integration/test-security-no-remote-status
new file mode 100755
index 0000000..7db979e
--- /dev/null
+++ b/test/integration/test-security-no-remote-status
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Test that packages from remote sources cannot set the Status field.
+#
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+TMPDIR=$(readlink -f .)
+
+insertpackage 'unstable' 'pretends-installed' 'all' '1' 'Status: install ok installed'
+insertinstalledpackage 'really-installed' 'all' '1'
+setupaptarchive
+
+testequal "pretends-installed:
+ Installed: (none)
+ Candidate: 1
+ Version table:
+ 1 500
+ 500 file:${TMPDIR}/aptarchive unstable/main all Packages" aptcache policy pretends-installed
+
+testequal "really-installed:
+ Installed: 1
+ Candidate: 1
+ Version table:
+ *** 1 100
+ 100 ${TMPDIR}/rootdir/var/lib/dpkg/status" aptcache policy really-installed
diff --git a/test/integration/test-signed-by-option b/test/integration/test-signed-by-option
new file mode 100755
index 0000000..58e4c4b
--- /dev/null
+++ b/test/integration/test-signed-by-option
@@ -0,0 +1,73 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+export TMPDIR="${TMPWORKINGDIRECTORY}/tmp"
+mkdir "${TMPDIR}"
+
+msgtest 'Check that a repository with' 'signed-by and two components works'
+echo 'deb [signed-by=CDE5618B8805FD6E202CE9C2D73C39E56580B386] https://people.debian.org/~jak/debian/ stable main contrib # Äffchen' > rootdir/etc/apt/sources.list
+testsuccess --nomsg aptcache policy
+
+msgtest 'Check that a repository with' 'two fingerprints work'
+echo 'deb [signed-by=CDE5618B8805FD6E202CE9C2D73C39E56580B386,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA] https://people.debian.org/~jak/debian/ stable main contrib # Äffchen' > rootdir/etc/apt/sources.list
+testsuccess --nomsg aptcache policy
+
+msgtest 'Check that a repository with' 'exact fingerprint works'
+echo 'deb [signed-by=CDE5618B8805FD6E202CE9C2D73C39E56580B386!] https://people.debian.org/~jak/debian/ stable main contrib # Äffchen' > rootdir/etc/apt/sources.list
+testsuccess --nomsg aptcache policy
+
+msgtest 'Check that a repository with' 'whitespaced fingerprints work'
+echo 'deb [signed-by=CDE5618B8805FD6E202CE9C2D73C39E56580B386!,,,,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA] https://people.debian.org/~jak/debian/ stable main contrib # Äffchen' > rootdir/etc/apt/sources.list
+cat > rootdir/etc/apt/sources.list.d/people.sources <<EOF
+Types: deb
+URIs: mirror+file:/var/lib/apt/mirror.lst
+Suites: stable testing
+Components: main contrib
+Architectures: amd64 i386
+Signed-By: CDE5618B8805FD6E202CE9C2D73C39E56580B386! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ , , BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+EOF
+testsuccess --nomsg aptcache policy
+
+buildsimplenativepackage "coolstuff" "all" "1.0" "stable"
+setupaptarchive --no-update
+rm -f rootdir/etc/apt/sources.list.d/* rootdir/etc/apt/sources.list
+rm -f rootdir/etc/apt/trusted.gpg.d/* rootdir/etc/apt/trusted.gpg
+
+cat > rootdir/etc/apt/sources.list.d/deb822.sources << EOF
+Types: deb
+URIs: file://$PWD/aptarchive
+Suites: stable
+Components: main
+xSigned-By:
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
+ .
+ mQENBExsGNYBCADNVx+TQ6h1tEyUP11f7ihfta3ZePkW1rIdkdHgA3Fw/TeLnTEq
+ mWuhMw2pL4zy1vQhU8efNrRaNUrUS7kV3LIdSjd5K4Aizqtsdy/gLKFoTcO8LFIm
+ KAXPg5hZBZ1B1HWvw7Npe4nkIj0Ar+bUyMfyCBUeqoaNeIy31a4IiNo8LdD73DOh
+ 4APKcp+pXh2s2DOmWOnTI8Z+WZ9W2ZurtdZl8g04hszGatwVKrNc6p5wK0wAvJ+X
+ M0HaIVt/+90GVLCMb/Gjf66At73BS19BdRDPi54PPK5N+Q9HZAYq0zPPNySB3l4A
+ vGjZtCqljkSqiaL1C0ZKf8c5ey/FoAviyS7TABEBAAG0M0pvZSBTaXhwYWNrIChB
+ UFQgVGVzdGNhc2VzIER1bW15KSA8am9lQGV4YW1wbGUub3JnPokBNwQTAQoAIQIb
+ AwIeAQIXgAUCV7L5PQULCQgHAwUVCgkICwUWAgMBAAAKCRBakNFB26yNri5RB/sF
+ xRzAFAwwp6TQNeZk3L2zsHD2ZPKaoWzi1l+nD4grfP1enuAnwcLR3HG4zouN3nCg
+ M0PgZEUo2yOAnKK4D5XWkcZjhcoCj133bTW807e+aM6d08ns+piIGJ8VdUVYlNZ2
+ Tnr8eunkUQVkWQGjtHicIJFtjbokIKXzlJtVSklF/kDQ+v93kyj1SNM7Tm57Q01i
+ ZtB2jCXNYvqdlHaZw1oXdVd1R6u0+SSb4wtjHuTeYG76JaCnWKBnvexWhIEN1MxK
+ xNHhRHzEPTYZ4PCCyaRX4YRAwsEMFsscsghpQgqRDhGSWq+jUVI+Aay7FTnd+1UA
+ 1snsGpB0o9qxx8JpGMXI
+ =c/k4
+ -----END PGP PUBLIC KEY BLOCK-----
+EOF
+testfailure apt update -o Debug::Acquire::gpgv=1
+testsuccess grep "NO_PUBKEY 5A90D141DBAC8DAE" rootdir/tmp/testfailure.output
+sed -i s/^xSigned-By/Signed-By/ rootdir/etc/apt/sources.list.d/deb822.sources
+testsuccess apt update -o Debug::Acquire::gpgv=1
+# make sure we did not leave leftover files (LP: #1995247)
+testsuccessequal "" ls "${TMPDIR}"
diff --git a/test/integration/test-snapshot b/test/integration/test-snapshot
new file mode 100755
index 0000000..26ef5a7
--- /dev/null
+++ b/test/integration/test-snapshot
@@ -0,0 +1,335 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'awesome' 'native' '42' 'stable'
+buildsimplenativepackage 'foo' 'all' '1.0' 'stable'
+buildsimplenativepackage 'libbar' 'all' '1.0' 'stable'
+
+getlabelfromsuite() { echo 'Testcases'; }
+getoriginfromsuite() { echo 'Debian'; }
+releasechanger() {
+ # modifying the Release files in lists… bad stuff. Good that this is only a test…
+ msgmsg "Changing $1 to $2"
+ sed -i "s#^${1}: .*#${1}: ${2}#" $(find rootdir/var/lib/apt/lists -name '*Release')
+ rm -f rootdir/var/cache/apt/*.bin
+}
+
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess aptget update
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+testsuccessequal "'https://snapshot.debian.org/archive/debian/OPTIONNOTSET/dists/stable/InRelease' snapshot.debian.org_archive_debian_OPTIONNOTSET_dists_stable_InRelease 0
+'https://snapshot.debian.org/archive/debian/OPTIONNOTSET/dists/stable/main/source/Sources.xz' snapshot.debian.org_archive_debian_OPTIONNOTSET_dists_stable_main_source_Sources 0
+'https://snapshot.debian.org/archive/debian/OPTIONNOTSET/dists/stable/main/binary-amd64/Packages.xz' snapshot.debian.org_archive_debian_OPTIONNOTSET_dists_stable_main_binary-amd64_Packages 0
+'https://snapshot.debian.org/archive/debian/OPTIONNOTSET/dists/stable/main/binary-all/Packages.xz' snapshot.debian.org_archive_debian_OPTIONNOTSET_dists_stable_main_binary-all_Packages 0
+'https://snapshot.debian.org/archive/debian/OPTIONNOTSET/dists/stable/main/i18n/Translation-en.xz' snapshot.debian.org_archive_debian_OPTIONNOTSET_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris --snapshot OPTIONNOTSET
+
+# repository does not support snapshots: we succeed here by silently ignoring the snapshot for the repository because it's not forced-on
+releasechanger 'Origin' 'NoSnapshotsKnown'
+testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris --snapshot OPTION-NOT-SET-AND-RELEASE-SAYS-NO
+
+
+# Enable the snapshot feature
+sed -i 's/http:/[snapshot=enable] http:/' rootdir/etc/apt/sources.list.d/*
+
+# repository does not support snapshots: we fail here because now, we actually forced the feature enabled
+testfailuremsg "E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: The list of sources could not be read." aptget update --print-uris -S OPTION-SET-AND-RELEASE-SAYS-NO
+
+releasechanger 'Origin' 'Debian'
+testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris
+
+for option in -S --snapshot; do
+testsuccessequal "'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/InRelease' snapshot.debian.org_archive_debian_BANANA_dists_stable_InRelease 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/source/Sources.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_source_Sources 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/binary-amd64/Packages.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_binary-amd64_Packages 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/binary-all/Packages.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_binary-all_Packages 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/i18n/Translation-en.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA
+done
+
+
+# Let us update for realz
+mkdir aptarchive/snapshot/BANANA -p
+cp -a aptarchive/dists aptarchive/snapshot/BANANA
+
+testsuccessequal "Hit:1 http://localhost:${APTHTTPPORT} stable InRelease
+Get:2 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable InRelease [$(stat -c %s aptarchive/dists/stable/InRelease) B]
+Get:3 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main Sources [$(stat -c %s aptarchive/dists/stable/main/source/Sources.gz) B]
+Get:4 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main amd64 Packages [$(stat -c %s aptarchive/dists/stable/main/binary-amd64/Packages.gz) B]
+Get:5 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main all Packages [$(stat -c %s aptarchive/dists/stable/main/binary-all/Packages.gz) B]
+Get:6 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main Translation-en [$(stat -c %s aptarchive/dists/stable/main/i18n/Translation-en.gz) B]
+Reading package lists..." \
+ aptget update -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA
+
+msgmsg "Cache constructed without snapshot"
+testsuccessequal "Package files:
+ 500 http://localhost:${APTHTTPPORT} stable/main all Packages
+ release o=Debian,a=stable,n=stable,l=Testcases,c=main,b=all
+ origin localhost
+ 500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages
+ release o=Debian,a=stable,n=stable,l=Testcases,c=main,b=amd64
+ origin localhost
+Pinned packages:" \
+ aptcache policy -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/"
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/awesome_42_amd64.deb' awesome_42_amd64.deb $(stat -c %s aptarchive/pool/awesome_42_amd64.deb) " \
+ aptget install --print-uris -qq awesome
+
+msgmsg "Cache constructed with snapshot"
+testsuccessequal "Package files:
+ 500 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main all Packages
+ release o=Debian,a=stable,n=stable,l=Testcases,c=main,b=all
+ origin localhost
+ 500 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main amd64 Packages
+ release o=Debian,a=stable,n=stable,l=Testcases,c=main,b=amd64
+ origin localhost
+Pinned packages:" \
+ aptcache policy -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/snapshot/BANANA/pool/awesome_42_amd64.deb' awesome_42_amd64.deb $(stat -c %s aptarchive/pool/awesome_42_amd64.deb) " \
+ aptget install --print-uris -qq awesome -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA
+
+
+msgmsg "Origin: Ubuntu"
+releasechanger 'Origin' 'Ubuntu'
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/source/Sources.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_source_Sources 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA
+
+msgmsg "Label: Debian"
+releasechanger 'Label' 'Debian'
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/source/Sources.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_source_Sources 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA
+
+testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/InRelease' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -o Acquire::Snapshots::URI::Label::Debian="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA
+
+msgmsg "Origin: Unknown"
+releasechanger 'Origin' 'Unknown'
+# XXX: @PATH@ is empty here so we have //, there isn't much we can do here, people don't have to use @PATH@ of course.
+testsuccessequal "'https://example.org/snapshots//BANANA/dists/stable/InRelease' example.org_snapshots__BANANA_dists_stable_InRelease 0
+'https://example.org/snapshots//BANANA/dists/stable/main/source/Sources.xz' example.org_snapshots__BANANA_dists_stable_main_source_Sources 0
+'https://example.org/snapshots//BANANA/dists/stable/main/binary-amd64/Packages.xz' example.org_snapshots__BANANA_dists_stable_main_binary-amd64_Packages 0
+'https://example.org/snapshots//BANANA/dists/stable/main/binary-all/Packages.xz' example.org_snapshots__BANANA_dists_stable_main_binary-all_Packages 0
+'https://example.org/snapshots//BANANA/dists/stable/main/i18n/Translation-en.xz' example.org_snapshots__BANANA_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA -o Acquire::Snapshots::URI::Host::localhost="https://example.org/snapshots/@PATH@/@SNAPSHOTID@/"
+
+msgmsg "Snapshots: set in the InRelease file"
+sed -i '/^Origin: / a\
+Snapshots: https://example.org/snapshots/@SNAPSHOTID@/' $(find rootdir/var/lib/apt/lists -name '*Release')
+rm -f rootdir/var/cache/apt/*.bin
+
+testsuccessequal "'https://example.org/snapshots/BANANA/dists/stable/InRelease' example.org_snapshots_BANANA_dists_stable_InRelease 0
+'https://example.org/snapshots/BANANA/dists/stable/main/source/Sources.xz' example.org_snapshots_BANANA_dists_stable_main_source_Sources 0
+'https://example.org/snapshots/BANANA/dists/stable/main/binary-amd64/Packages.xz' example.org_snapshots_BANANA_dists_stable_main_binary-amd64_Packages 0
+'https://example.org/snapshots/BANANA/dists/stable/main/binary-all/Packages.xz' example.org_snapshots_BANANA_dists_stable_main_binary-all_Packages 0
+'https://example.org/snapshots/BANANA/dists/stable/main/i18n/Translation-en.xz' example.org_snapshots_BANANA_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -SBANANA
+
+releasechanger 'Snapshots' 'no'
+testfailuremsg "E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: The list of sources could not be read." aptget update --print-uris -S BANANA
+
+testfailuremsg "E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: Snapshots not supported for http://localhost:${APTHTTPPORT}/ stable
+E: The list of sources could not be read." aptget update --print-uris -S BANANA -o Acquire::Snapshots::URI::Host::localhost="https://example.org/snapshots/@PATH@/@SNAPSHOTID@/"
+
+msgmsg "Snapshot URI configured in apt.conf"
+sed -i '/^Snapshots: / d' $(find rootdir/var/lib/apt/lists -name '*Release')
+releasechanger 'Label' 'Testcases'
+
+echo "Acquire::Snapshots::URI::Label::Testcases \"http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/\";" > rootdir/etc/apt/apt.conf.d/changelog.conf
+testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/InRelease' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_InRelease 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_source_Sources 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_binary-amd64_Packages 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_binary-all_Packages 0
+'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -SBANANA
+
+rm rootdir/etc/apt/apt.conf.d/changelog.conf
+
+msgmsg "Testing host-based seed: Ubuntu"
+
+echo "deb http://security.ubuntu.com/ubuntu/ mantic-security main" > rootdir/etc/apt/security.list
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_i18n_Translation-en 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/InRelease' security.ubuntu.com_ubuntu_dists_mantic-security_InRelease 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_binary-amd64_Packages 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_binary-all_Packages 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=security.list -o Dir::Etc::SourceParts=/dev/null -SBANANA
+
+echo "deb [snapshot=BANANA] http://security.ubuntu.com/ubuntu/ mantic-security main" > rootdir/etc/apt/security.list
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic-security/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic-security_main_i18n_Translation-en 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/InRelease' security.ubuntu.com_ubuntu_dists_mantic-security_InRelease 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_binary-amd64_Packages 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_binary-all_Packages 0
+'http://security.ubuntu.com/ubuntu/dists/mantic-security/main/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_mantic-security_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=security.list -o Dir::Etc::SourceParts=/dev/null
+echo "deb [snapshot=BANANA] http://archive.ubuntu.com/ubuntu/ mantic main" > rootdir/etc/apt/archive.list
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/InRelease' archive.ubuntu.com_ubuntu_dists_mantic_InRelease 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_binary-amd64_Packages 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_binary-all_Packages 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=archive.list -o Dir::Etc::SourceParts=/dev/null
+echo "deb [snapshot=BANANA] http://cc.archive.ubuntu.com/ubuntu/ mantic main" > rootdir/etc/apt/cc.archive.list
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/InRelease' cc.archive.ubuntu.com_ubuntu_dists_mantic_InRelease 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/binary-amd64/Packages.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_binary-amd64_Packages 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/binary-all/Packages.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_binary-all_Packages 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/i18n/Translation-en.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=cc.archive.list -o Dir::Etc::SourceParts=/dev/null
+
+# with a custom override for .archive.ubuntu.com
+testsuccessequal "'https://cc.snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/InRelease' cc.snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_InRelease 0
+'https://cc.snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-amd64/Packages.xz' cc.snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://cc.snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-all/Packages.xz' cc.snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://cc.snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/i18n/Translation-en.xz' cc.snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/InRelease' cc.archive.ubuntu.com_ubuntu_dists_mantic_InRelease 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/binary-amd64/Packages.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_binary-amd64_Packages 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/binary-all/Packages.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_binary-all_Packages 0
+'http://cc.archive.ubuntu.com/ubuntu/dists/mantic/main/i18n/Translation-en.xz' cc.archive.ubuntu.com_ubuntu_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=cc.archive.list -o Dir::Etc::SourceParts=/dev/null -o "Acquire::Snapshots::URI::Host::.archive.ubuntu.com"="https://cc.snapshot.ubuntu.com/@PATH@/@SNAPSHOTID@/"
+
+testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_InRelease 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-amd64/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/binary-all/Packages.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/mantic/main/i18n/Translation-en.xz' snapshot.ubuntu.com_ubuntu_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/InRelease' archive.ubuntu.com_ubuntu_dists_mantic_InRelease 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_binary-amd64_Packages 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_binary-all_Packages 0
+'http://archive.ubuntu.com/ubuntu/dists/mantic/main/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=archive.list -o Dir::Etc::SourceParts=/dev/null -o "Acquire::Snapshots::URI::Host::.archive.ubuntu.com"="https://cc.snapshot.ubuntu.com/@PATH@/@SNAPSHOTID@/"
+
+testfailureequal "E: Snapshots not supported for http://archive.ubuntu.com/ubuntu/ mantic
+E: The list of sources could not be read." aptget update --print-uris -o Dir::Etc::SourceList=archive.list -o Dir::Etc::SourceParts=/dev/null -o "Acquire::Snapshots::URI::Host::archive.ubuntu.com"="no"
+
+msgmsg "Testing host based-seeds: PPA"
+
+echo "deb [snapshot=BANANA] http://ppa.launchpad.net/owner/archive/distribution/ mantic main" > rootdir/etc/apt/ppa.list
+testsuccessequal "'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/InRelease' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_InRelease 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/binary-amd64/Packages.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/binary-all/Packages.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/i18n/Translation-en.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://ppa.launchpad.net/owner/archive/distribution/dists/mantic/InRelease' ppa.launchpad.net_owner_archive_distribution_dists_mantic_InRelease 0
+'http://ppa.launchpad.net/owner/archive/distribution/dists/mantic/main/binary-amd64/Packages.xz' ppa.launchpad.net_owner_archive_distribution_dists_mantic_main_binary-amd64_Packages 0
+'http://ppa.launchpad.net/owner/archive/distribution/dists/mantic/main/binary-all/Packages.xz' ppa.launchpad.net_owner_archive_distribution_dists_mantic_main_binary-all_Packages 0
+'http://ppa.launchpad.net/owner/archive/distribution/dists/mantic/main/i18n/Translation-en.xz' ppa.launchpad.net_owner_archive_distribution_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=ppa.list -o Dir::Etc::SourceParts=/dev/null
+
+echo "deb [snapshot=BANANA] http://ppa.launchpadcontent.net/owner/archive/distribution/ mantic main" > rootdir/etc/apt/ppa.list
+testsuccessequal "'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/InRelease' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_InRelease 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/binary-amd64/Packages.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_binary-amd64_Packages 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/binary-all/Packages.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_binary-all_Packages 0
+'https://snapshot.ppa.launchpadcontent.net/owner/archive/distribution/BANANA/dists/mantic/main/i18n/Translation-en.xz' snapshot.ppa.launchpadcontent.net_owner_archive_distribution_BANANA_dists_mantic_main_i18n_Translation-en 0
+'http://ppa.launchpadcontent.net/owner/archive/distribution/dists/mantic/InRelease' ppa.launchpadcontent.net_owner_archive_distribution_dists_mantic_InRelease 0
+'http://ppa.launchpadcontent.net/owner/archive/distribution/dists/mantic/main/binary-amd64/Packages.xz' ppa.launchpadcontent.net_owner_archive_distribution_dists_mantic_main_binary-amd64_Packages 0
+'http://ppa.launchpadcontent.net/owner/archive/distribution/dists/mantic/main/binary-all/Packages.xz' ppa.launchpadcontent.net_owner_archive_distribution_dists_mantic_main_binary-all_Packages 0
+'http://ppa.launchpadcontent.net/owner/archive/distribution/dists/mantic/main/i18n/Translation-en.xz' ppa.launchpadcontent.net_owner_archive_distribution_dists_mantic_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=ppa.list -o Dir::Etc::SourceParts=/dev/null
+
+msgmsg "Testing host based-seeds: Debian"
+
+echo "deb [snapshot=BANANA] http://deb.debian.org/debian/ unstable main" > rootdir/etc/apt/debian.list
+testsuccessequal "'https://snapshot.debian.org/archive/debian/BANANA/dists/unstable/InRelease' snapshot.debian.org_archive_debian_BANANA_dists_unstable_InRelease 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/unstable/main/binary-amd64/Packages.xz' snapshot.debian.org_archive_debian_BANANA_dists_unstable_main_binary-amd64_Packages 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/unstable/main/binary-all/Packages.xz' snapshot.debian.org_archive_debian_BANANA_dists_unstable_main_binary-all_Packages 0
+'https://snapshot.debian.org/archive/debian/BANANA/dists/unstable/main/i18n/Translation-en.xz' snapshot.debian.org_archive_debian_BANANA_dists_unstable_main_i18n_Translation-en 0
+'http://deb.debian.org/debian/dists/unstable/InRelease' deb.debian.org_debian_dists_unstable_InRelease 0
+'http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Packages.xz' deb.debian.org_debian_dists_unstable_main_binary-amd64_Packages 0
+'http://deb.debian.org/debian/dists/unstable/main/binary-all/Packages.xz' deb.debian.org_debian_dists_unstable_main_binary-all_Packages 0
+'http://deb.debian.org/debian/dists/unstable/main/i18n/Translation-en.xz' deb.debian.org_debian_dists_unstable_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=debian.list -o Dir::Etc::SourceParts=/dev/null
+
+echo "deb [snapshot=BANANA] http://deb.debian.org/debian-security/ stable-security main" > rootdir/etc/apt/debian-security.list
+testsuccessequal "'https://snapshot.debian.org/archive/debian-security/BANANA/dists/stable-security/InRelease' snapshot.debian.org_archive_debian-security_BANANA_dists_stable-security_InRelease 0
+'https://snapshot.debian.org/archive/debian-security/BANANA/dists/stable-security/main/binary-amd64/Packages.xz' snapshot.debian.org_archive_debian-security_BANANA_dists_stable-security_main_binary-amd64_Packages 0
+'https://snapshot.debian.org/archive/debian-security/BANANA/dists/stable-security/main/binary-all/Packages.xz' snapshot.debian.org_archive_debian-security_BANANA_dists_stable-security_main_binary-all_Packages 0
+'https://snapshot.debian.org/archive/debian-security/BANANA/dists/stable-security/main/i18n/Translation-en.xz' snapshot.debian.org_archive_debian-security_BANANA_dists_stable-security_main_i18n_Translation-en 0
+'http://deb.debian.org/debian-security/dists/stable-security/InRelease' deb.debian.org_debian-security_dists_stable-security_InRelease 0
+'http://deb.debian.org/debian-security/dists/stable-security/main/binary-amd64/Packages.xz' deb.debian.org_debian-security_dists_stable-security_main_binary-amd64_Packages 0
+'http://deb.debian.org/debian-security/dists/stable-security/main/binary-all/Packages.xz' deb.debian.org_debian-security_dists_stable-security_main_binary-all_Packages 0
+'http://deb.debian.org/debian-security/dists/stable-security/main/i18n/Translation-en.xz' deb.debian.org_debian-security_dists_stable-security_main_i18n_Translation-en 0 " aptget update --print-uris -o Dir::Etc::SourceList=debian-security.list -o Dir::Etc::SourceParts=/dev/null
+
+exit 0
+msgmsg "Failure cases"
+
+# no @CHANGEPATH@ in the URI
+testequal 'E: Failed to fetch changelog:/foo.changelog Changelog unavailable for foo=1.0' \
+ aptget update -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot" -SBANANA
+
+testequal "E: Failed to fetch http://localhost:${APTHTTPPORT}/does/not/exist/main/f/foo/foo_1.0/change.txt Changelog unavailable for foo=1.0 (404 Not Found)" \
+ aptget update -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/does/not/exist/@SNAPSHOTID@" -SBANANA
+
+
diff --git a/test/integration/test-sourceslist-arch-plusminus-options b/test/integration/test-sourceslist-arch-plusminus-options
new file mode 100755
index 0000000..fdf33cc
--- /dev/null
+++ b/test/integration/test-sourceslist-arch-plusminus-options
@@ -0,0 +1,94 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testbinaries() {
+ msgtest 'Test acquired archs for' "$1"
+ shift
+ rm -f gotarchs.list
+ aptget update --print-uris | grep -o '/binary-[a-z0-9-]\+/Packages' | sort > gotarchs.list
+ while [ -n "$1" ]; do
+ echo "/binary-${1}/Packages"
+ shift
+ done | sort | checkdiff - gotarchs.list && msgpass || msgfail
+}
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'default & native' 'amd64' 'all'
+configarchitecture 'amd64' 'i386'
+testbinaries 'default & native + foreign' 'amd64' 'i386' 'all'
+configarchitecture 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel'
+testbinaries 'default & native + many foreigns' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=native' 'amd64' 'all'
+
+echo 'deb [arch=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=foreign' 'mips' 'all'
+
+echo 'deb [arch=kfreebsd-armel] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=unknown' 'kfreebsd-armel' 'all'
+
+echo 'deb [arch=amd64,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=native,foreign' 'amd64' 'i386' 'all'
+
+echo 'deb [arch=mips,armhf] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=foreign,foreign' 'mips' 'armhf' 'all'
+
+echo 'deb [arch=kfreebsd-armel,hurd-powerpc,mipsel,armel] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch=unknown,unknown,foreign,foreign' 'kfreebsd-armel' 'hurd-powerpc' 'mipsel' 'armel' 'all'
+
+echo 'deb [arch+=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=native' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=mips,armhf,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign,foreign,foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch+=hurd-powerpc] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=unknown' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'hurd-powerpc' 'all'
+
+echo 'deb [arch+=mips,hurd-powerpc,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch+=foreign,unknown,foreign' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'hurd-powerpc' 'all'
+
+echo 'deb [arch-=amd64] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=native' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign' 'amd64' 'i386' 'armel' 'armhf' 'mipsel' 'all'
+
+echo 'deb [arch-=mips,armhf,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign,foreign,foreign' 'amd64' 'armel' 'mipsel' 'all'
+
+echo 'deb [arch-=hurd-powerpc] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=unknown' 'amd64' 'i386' 'armel' 'armhf' 'mips' 'mipsel' 'all'
+
+echo 'deb [arch-=mips,hurd-powerpc,i386] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'arch-=foreign,unknown,foreign' 'amd64' 'armel' 'armhf' 'mipsel' 'all'
+
+echo 'deb [arch=mips,i386 arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'subtract from a arch-set' 'i386' 'all'
+
+echo 'deb [arch=mips,i386 arch-=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless subtract from a arch-set' 'i386' 'all'
+
+echo 'deb [arch=mips,i386 arch+=armhf] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'addition to a arch-set' 'i386' 'mips' 'armhf' 'all'
+
+echo 'deb [arch=mips,i386 arch+=mips] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless addition to a arch-set' 'i386' 'mips' 'all'
+
+echo 'deb [arch=i386 arch-=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'substract all from arch-set' 'i386'
+
+echo 'deb [arch=i386 arch+=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'useless addition of all' 'i386' 'all'
+
+echo 'deb [arch=all] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testbinaries 'explicit all' 'all'
diff --git a/test/integration/test-sourceslist-lang-plusminus-options b/test/integration/test-sourceslist-lang-plusminus-options
new file mode 100755
index 0000000..abdb647
--- /dev/null
+++ b/test/integration/test-sourceslist-lang-plusminus-options
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testlangs() {
+ msgtest 'Test acquired languages for' "$1"
+ local LANGS="$2"
+ shift 2
+ rm -f gotlangs.list
+ aptget indextargets --no-release-info 'Identifier: Translations' "$@" --format '$(LANGUAGE)' | sort -u > gotlangs.list
+ if [ -z "$LANGS" ]; then
+ echo -n | tr ',' '\n' | sort | checkdiff - gotlangs.list && msgpass || msgfail
+ else
+ echo -n "$LANGS" | tr ',' '\n' | sort | checkdiff - gotlangs.list && msgpass || msgfail
+ fi
+}
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'default' 'en'
+
+echo 'Acquire::Languages "environment,en";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'default config' 'en'
+
+echo 'Acquire::Languages "en,en,en";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'duplicated config' 'en'
+
+echo 'Acquire::Languages "none";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'none config' ''
+
+echo 'Acquire::Languages "en,none,de,de_DE";' > rootdir/etc/apt/apt.conf.d/langs.conf
+testlangs 'english + german config' 'en,de,de_DE'
+
+echo 'deb [lang=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=pt' 'pt'
+
+echo 'deb [lang=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=en' 'en'
+
+echo 'deb [lang=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=de_DE' 'de_DE'
+
+echo 'deb [lang=none] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang=none' ''
+testequal 'amd64
+all' aptget indextargets --no-release-info 'Identifier: Packages' --format '$(ARCHITECTURE)'
+
+echo 'deb [lang+=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=pt' 'en,de,de_DE,pt'
+
+echo 'deb [lang+=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=en' 'en,de,de_DE'
+
+echo 'deb [lang+=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang+=de_DE' 'en,de,de_DE'
+
+echo 'deb [lang-=pt] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=pt' 'en,de,de_DE'
+
+echo 'deb [lang-=en] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=en' 'de,de_DE'
+
+echo 'deb [lang-=de_DE] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testlangs 'lang-=de_DE' 'en,de'
+
+echo 'deb http://example.org/debian stable rocks
+deb http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'english + german config multicomponent' 'en,de,de_DE'
+
+echo 'deb http://example.org/debian stable rocks
+deb [lang=pt] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent one lang= combined' 'en,de,de_DE,pt'
+testlangs 'multicomponent one lang= rocks' 'en,de,de_DE' 'Component: rocks'
+testlangs 'multicomponent one lang= solid' 'pt' 'Component: solid'
+
+echo 'deb [lang=pt] http://example.org/debian stable rocks
+deb [lang=de] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent different lang= combined' 'de,pt'
+testlangs 'multicomponent different lang= rocks' 'pt' 'Component: rocks'
+testlangs 'multicomponent different lang= solid' 'de' 'Component: solid'
+
+echo 'deb [lang+=pt] http://example.org/debian stable rocks
+deb [lang-=de] http://example.org/debian stable solid' > rootdir/etc/apt/sources.list
+testlangs 'multicomponent different lang+-= combined' 'en,de,de_DE,pt'
+testlangs 'multicomponent different lang+-= rocks' 'en,de,de_DE,pt' 'Component: rocks'
+testlangs 'multicomponent different lang+-= solid' 'en,de_DE' 'Component: solid'
diff --git a/test/integration/test-sourceslist-target-plusminus-options b/test/integration/test-sourceslist-target-plusminus-options
new file mode 100755
index 0000000..5c79af2
--- /dev/null
+++ b/test/integration/test-sourceslist-target-plusminus-options
@@ -0,0 +1,128 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+testtargets() {
+ msgtest 'Test acquired targets for' "$1"
+ shift
+ while [ -n "$1" ]; do
+ echo "$1"
+ shift
+ done | sort -u > expectedtargets.lst
+ aptget indextargets --no-release-info --format='$(CREATED_BY)' | sort -u > gottargets.lst
+ testfileequal --nomsg ./expectedtargets.lst "$(cat ./gottargets.lst)"
+}
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default' 'Packages' 'Translations'
+
+msgmsg 'Contents as a default target'
+cat > rootdir/etc/apt/apt.conf.d/content-target.conf <<EOF
+Acquire::IndexTargets::deb::Contents {
+ MetaKey "\$(COMPONENT)/Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents";
+ Description "\$(RELEASE)/\$(COMPONENT) \$(ARCHITECTURE) Contents";
+};
+Acquire::IndexTargets::deb::Contents2 {
+ MetaKey "Contents-\$(ARCHITECTURE)";
+ ShortDescription "Contents2";
+ Description "\$(RELEASE) \$(ARCHITECTURE) Contents2";
+ Fallback-Of "Contents";
+ Identifier "Contents";
+};
+EOF
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default + Contents' 'Packages' 'Translations' 'Contents' 'Contents2'
+
+echo 'deb [target=Packages] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Packages target' 'Packages'
+
+echo 'deb [target=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Contents target' 'Contents'
+
+echo 'deb [target=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force two targets' 'Contents' 'Translations'
+
+echo 'deb [target+=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target+=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target-=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove existing' 'Packages' 'Contents2'
+
+echo 'deb [target-=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate non-existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate existing' 'Packages' 'Contents' 'Contents2' 'Translations'
+
+echo 'deb [Contents=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate existing' 'Packages' 'Translations'
+
+echo 'deb [target=Packages Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'explicit + activate' 'Packages' 'Contents' 'Contents2'
+
+echo 'deb [Contents=yes,target+=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'duplications are okay' 'Packages' 'Translations' 'Contents' 'Contents2'
+
+msgmsg 'Contents NOT as a default target (but Contents2)'
+echo 'Acquire::IndexTargets::deb::Contents::DefaultEnabled "no";' > rootdir/etc/apt/apt.conf.d/content-target-notdefault.conf
+
+echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'default + Contents' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [target=Packages] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Packages target' 'Packages'
+
+echo 'deb [target=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force Contents target' 'Contents'
+
+echo 'deb [target=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'force two targets' 'Contents' 'Translations'
+
+echo 'deb [target+=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add existing' 'Packages' 'Contents' 'Translations' 'Contents2'
+
+echo 'deb [target+=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'add non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [target-=Translations,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove existing' 'Packages' 'Contents2'
+
+echo 'deb [target-=AppStream] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'remove non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [AppStream=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate non-existing' 'Packages' 'Translations' 'Contents2'
+
+echo 'deb [Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'activate existing' 'Packages' 'Contents' 'Contents2' 'Translations'
+
+echo 'deb [Contents=no] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'deactivate existing' 'Packages' 'Translations'
+
+echo 'deb [target=Packages Contents=yes] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'explicit + activate' 'Packages' 'Contents' 'Contents2'
+
+echo 'deb [Contents=yes,target+=Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'duplications are okay' 'Packages' 'Translations' 'Contents' 'Contents2'
+
+# we can't check if it really reorders here
+echo 'deb [target+=Contents2,Contents] http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list
+testtargets 'reordered fallback order' 'Packages' 'Translations' 'Contents' 'Contents2'
diff --git a/test/integration/test-sourceslist-trusted-options b/test/integration/test-sourceslist-trusted-options
new file mode 100755
index 0000000..1eee3b0
--- /dev/null
+++ b/test/integration/test-sourceslist-trusted-options
@@ -0,0 +1,218 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'amd64' '1' 'stable'
+buildsimplenativepackage 'foo' 'amd64' '2' 'testing'
+
+setupaptarchive --no-update
+
+APTARCHIVE=$(readlink -f ./aptarchive)
+
+everythingsucceeds() {
+ testsuccessequal 'Listing...
+foo/testing 2 amd64
+foo/stable 1 amd64
+' apt list foo -a
+
+ cd downloaded
+ rm -f foo_1_amd64.deb foo_2_amd64.deb
+ testsuccess aptget download foo "$@"
+ testsuccess test -s foo_1_amd64.deb -o -s foo_2_amd64.deb
+
+ rm -f foo_1.dsc foo_2.dsc
+ testsuccess aptget source foo --dsc-only "$@"
+ testsuccess test -s foo_1.dsc -o -s foo_2.dsc
+ cd - >/dev/null
+}
+
+everythingfails() {
+ testsuccessequal 'Listing...
+foo/testing 2 amd64
+foo/stable 1 amd64
+' apt list foo -a
+
+ local WARNING='WARNING: The following packages cannot be authenticated!
+ foo
+E: Some packages could not be authenticated'
+
+ cd downloaded
+ rm -f foo_1_amd64.deb foo_2_amd64.deb
+ testfailure aptget download foo "$@"
+ testequal "$WARNING" tail -n 3 ../rootdir/tmp/testfailure.output
+ testfailure test -s foo_1_amd64.deb -o -s foo_2_amd64.deb
+
+ rm -f foo_1.dsc foo_2.dsc
+ testfailure aptget source foo --dsc-only "$@"
+ testequal "$WARNING" tail -n 3 ../rootdir/tmp/testfailure.output
+ testfailure test -s foo_1.dsc -o -s foo_2.dsc
+ cd - >/dev/null
+}
+
+cp -a rootdir/etc/apt/sources.list.d/ rootdir/etc/apt/sources.list.d.bak/
+echo 'Debug::Acquire::Transaction "true";
+Debug::pkgAcquire::Worker "true";' > rootdir/etc/apt/apt.conf.d/00debugging
+
+aptgetupdate() {
+ rm -rf rootdir/var/lib/apt/lists
+ # note that insecure with trusted=yes are allowed
+ # as the trusted=yes indicates that security is provided by
+ # something above the understanding of apt
+ ${1:-testsuccess} aptget update --no-allow-insecure-repositories
+}
+
+insecureaptgetupdate() {
+ rm -rf rootdir/var/lib/apt/lists
+ testfailure aptget update --no-allow-insecure-repositories
+ rm -rf rootdir/var/lib/apt/lists
+ testwarning aptget update --allow-insecure-repositories
+}
+
+msgmsg 'Test without trusted option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+# we want the warnings on the actions, but for 'update' everything is fine
+aptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+find aptarchive/dists/stable \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+
+msgmsg 'Test without trusted option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and unsigned sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+signreleasefiles 'Marvin Paranoid' 'aptarchive/dists/stable'
+
+msgmsg 'Test without trusted option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate 'testwarning'
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and unknown sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+signreleasefiles 'Rex Expired' 'aptarchive/dists/stable'
+cp -a keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+
+msgmsg 'Test without trusted option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingsucceeds
+everythingfails -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=yes option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate 'testwarning'
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and good and expired sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+# same as the one further above, but this time testing is unsigned
+find aptarchive/ \( -name 'InRelease' -o -name 'Release.gpg' \) -delete
+signreleasefiles 'Joe Sixpack' 'aptarchive/dists/stable'
+
+msgmsg 'Test without trusted option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+insecureaptgetupdate
+everythingfails
+everythingsucceeds -t stable
+everythingfails -t testing
+
+msgmsg 'Test with trusted=yes option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=yes] #' rootdir/etc/apt/sources.list.d/*
+aptgetupdate
+everythingsucceeds
+everythingsucceeds -t stable
+everythingsucceeds -t testing
+
+msgmsg 'Test with trusted=no option and unsigned and good sources'
+cp -a rootdir/etc/apt/sources.list.d.bak/* rootdir/etc/apt/sources.list.d/
+sed -i 's#^deb\(-src\)\? #deb\1 [trusted=no] #' rootdir/etc/apt/sources.list.d/*
+insecureaptgetupdate
+everythingfails
+everythingfails -t stable
+everythingfails -t testing
+
+msgmsg 'Test conflicting trusted options are refused'
+testsource() {
+ echo "$@" > rootdir/etc/apt/sources.list.d/example.list
+ testfailuremsg 'E: Conflicting values set for option Trusted regarding source http://example.org/bad/ unstable
+E: The list of sources could not be read.' aptget update --print-uris
+}
+for VAL in 'yes' 'no'; do
+ testsource "deb http://example.org/bad unstable main
+deb [trusted=${VAL}] http://example.org/bad unstable non-free"
+ testsource "deb [trusted=${VAL}] http://example.org/bad unstable main
+deb http://example.org/bad unstable non-free"
+done
+testsource 'deb [trusted=yes] http://example.org/bad unstable main
+deb [trusted=no] http://example.org/bad unstable non-free'
+testsource 'deb [trusted=no] http://example.org/bad unstable main
+deb [trusted=yes] http://example.org/bad unstable non-free'
diff --git a/test/integration/test-specific-architecture-dependencies b/test/integration/test-specific-architecture-dependencies
new file mode 100755
index 0000000..447e407
--- /dev/null
+++ b/test/integration/test-specific-architecture-dependencies
@@ -0,0 +1,324 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'libc6' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'libold' 'amd64,i386' '1' 'Multi-Arch: same'
+insertinstalledpackage 'provider' 'amd64' '1' 'Provides: foo'
+
+insertpackage 'unstable' 'pre-depender' 'all' '1' 'Pre-Depends: libc6:i386'
+insertpackage 'unstable' 'depender' 'all' '1' 'Depends: libc6:i386'
+insertpackage 'unstable' 'depender-x32' 'i386,amd64' '1' 'Depends: libc6:i386'
+insertpackage 'unstable' 'depender-x64' 'i386,amd64' '1' 'Depends: libc6:amd64'
+
+insertpackage 'unstable' 'breaker' 'all' '1' 'Breaks: libold (<< 2)'
+insertpackage 'unstable' 'breaker-x32' 'i386,amd64' '1' 'Breaks: libold:i386 (<< 2)'
+insertpackage 'unstable' 'breaker-x64' 'i386,amd64' '1' 'Breaks: libold:amd64 (<< 2)'
+# conflicts with no effect
+insertpackage 'unstable' 'oldconflictor' 'all' '1' 'Conflicts: libold (<< 0)'
+insertpackage 'unstable' 'oldconflictor-x32' 'amd64' '1' 'Conflicts: libold:i386 (<< 0)'
+insertpackage 'unstable' 'oldconflictor-x64' 'i386' '1' 'Conflicts: libold:amd64 (<< 0)'
+
+insertpackage 'unstable' 'foo-depender' 'i386,amd64' '1' 'Depends: foo'
+insertpackage 'unstable' 'foo-native-depender' 'amd64' '1' 'Depends: foo:amd64'
+insertpackage 'unstable' 'foo-foreign-depender' 'i386' '1' 'Depends: foo:amd64'
+
+insertpackage 'unstable' 'foo-conflictor' 'i386,amd64' '1' 'Conflicts: foo'
+insertpackage 'unstable' 'foo-foreign-conflictor' 'i386' '1' 'Conflicts: foo:amd64'
+insertpackage 'unstable' 'foo-no-conflictor' 'i386' '1' 'Conflicts: foo:i386'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ libc6:i386 pre-depender
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Conf libc6:i386 (1 unstable [i386])
+Inst pre-depender (1 unstable [all])
+Conf pre-depender (1 unstable [all])' aptget install pre-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender (1 unstable [all])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender (1 unstable [all])' aptget install depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender-x32:i386 libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender-x32:i386 (1 unstable [i386])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender-x32:i386 (1 unstable [i386])' aptget install depender-x32:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6:i386
+The following NEW packages will be installed:
+ depender-x32 libc6:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6:i386 (1 unstable [i386])
+Inst depender-x32 (1 unstable [amd64])
+Conf libc6:i386 (1 unstable [i386])
+Conf depender-x32 (1 unstable [amd64])' aptget install depender-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64 (1 unstable [amd64])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64:i386 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64:i386 (1 unstable [i386])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64:i386 (1 unstable [i386])' aptget install depender-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386 libold
+The following NEW packages will be installed:
+ breaker
+0 upgraded, 1 newly installed, 2 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Remv libold [1]
+Inst breaker (1 unstable [all])
+Conf breaker (1 unstable [all])' aptget install breaker -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32 (1 unstable [amd64])
+Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32:i386 (1 unstable [i386])
+Conf breaker-x32:i386 (1 unstable [i386])' aptget install breaker-x32:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64 (1 unstable [amd64])
+Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64:i386 (1 unstable [i386])
+Conf breaker-x64:i386 (1 unstable [i386])' aptget install breaker-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor (1 unstable [all])
+Conf oldconflictor (1 unstable [all])' aptget install oldconflictor -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor-x32
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor-x32 (1 unstable [amd64])
+Conf oldconflictor-x32 (1 unstable [amd64])' aptget install oldconflictor-x32 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ oldconflictor-x64:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst oldconflictor-x64:i386 (1 unstable [i386])
+Conf oldconflictor-x64:i386 (1 unstable [i386])' aptget install oldconflictor-x64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-depender (1 unstable [amd64])
+Conf foo-depender (1 unstable [amd64])' aptget install foo-depender -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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-depender:i386 : Depends: foo:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-native-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-native-depender (1 unstable [amd64])
+Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-foreign-depender:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-foreign-depender:i386 (1 unstable [i386])
+Conf foo-foreign-depender:i386 (1 unstable [i386])' aptget install foo-foreign-depender:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-conflictor
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-conflictor (1 unstable [amd64])
+Conf foo-conflictor (1 unstable [amd64])' aptget install foo-conflictor -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-conflictor:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-conflictor:i386 (1 unstable [i386])
+Conf foo-conflictor:i386 (1 unstable [i386])' aptget install foo-conflictor:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ provider
+The following NEW packages will be installed:
+ foo-foreign-conflictor:i386
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv provider [1]
+Inst foo-foreign-conflictor:i386 (1 unstable [i386])
+Conf foo-foreign-conflictor:i386 (1 unstable [i386])' aptget install foo-foreign-conflictor:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-no-conflictor:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-no-conflictor:i386 (1 unstable [i386])
+Conf foo-no-conflictor:i386 (1 unstable [i386])' aptget install foo-no-conflictor:i386 -s
+
+msgmsg 'switch to single architecture'
+configarchitecture 'amd64'
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libc6
+The following NEW packages will be installed:
+ depender-x64 libc6
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libc6 (1 unstable [amd64])
+Inst depender-x64 (1 unstable [amd64])
+Conf libc6 (1 unstable [amd64])
+Conf depender-x64 (1 unstable [amd64])' aptget install depender-x64 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+E: Unable to locate package depender-x64:i386' aptget install depender-x64:i386 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ foo-native-depender
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst foo-native-depender (1 unstable [amd64])
+Conf foo-native-depender (1 unstable [amd64])' aptget install foo-native-depender -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold:i386
+The following NEW packages will be installed:
+ breaker-x32
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold:i386 [1]
+Inst breaker-x32 (1 unstable [amd64])
+Conf breaker-x32 (1 unstable [amd64])' aptget install breaker-x32:amd64 -s
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ libold
+The following NEW packages will be installed:
+ breaker-x64
+0 upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
+Remv libold [1]
+Inst breaker-x64 (1 unstable [amd64])
+Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+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:
+ depender-x32 : Depends: libc6:i386 but it is not installable
+E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s
diff --git a/test/integration/test-srcrecord b/test/integration/test-srcrecord
new file mode 100755
index 0000000..34de2be
--- /dev/null
+++ b/test/integration/test-srcrecord
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+cat > aptarchive/Sources <<EOF
+Package: space-before-comma
+Binary: space-before-comma1 , space-before-comma2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field
+Binary:, broken-field2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field-b
+Binary: , broken-field-b2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+EOF
+
+setupaptarchive --no-update
+
+testsuccess aptget update
+testsuccess aptcache showsrc space-before-comma1
+testsuccess aptcache showsrc broken-field2
+testsuccess aptcache showsrc broken-field-b2
diff --git a/test/integration/test-suggest-installed-multiarch-silbing b/test/integration/test-suggest-installed-multiarch-silbing
new file mode 100755
index 0000000..4918217
--- /dev/null
+++ b/test/integration/test-suggest-installed-multiarch-silbing
@@ -0,0 +1,79 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+insertinstalledpackage 'foo' 'i386' '1'
+insertpackage 'unstable' 'foo' 'amd64,i386' '1'
+
+insertpackage 'unstable,installed' 'foo2' 'i386' '1'
+
+insertinstalledpackage 'foo3' 'amd64' '1'
+insertpackage 'unstable' 'foo3' 'amd64,i386' '1'
+
+insertinstalledpackage 'samefoo' 'i386,amd64' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'samefoo' 'amd64,i386,armel' '1' 'Multi-Arch: same'
+
+insertinstalledpackage 'samefoo2' 'i386' '1' 'Multi-Arch: same'
+insertpackage 'unstable' 'samefoo2' 'amd64,i386,armel' '1' 'Multi-Arch: same'
+
+insertinstalledpackage 'mozplugger' 'i386' '1' 'Depends: iceweasel | fireweasel'
+insertinstalledpackage 'fireweasel' 'i386' '1'
+insertpackage 'unstable' 'mozplugger' 'i386,amd64' '1' 'Depends: iceweasel | fireweasel'
+
+setupaptarchive
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo' is not installed, so not removed. Did you mean 'foo:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo2:i386
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo2:i386 [1]" aptget remove foo2 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+The following packages will be REMOVED:
+ foo3
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv foo3 [1]" aptget remove foo3 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'foo3:i386' is not installed, so not removed. Did you mean 'foo3'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo3:i386 -s
+
+testequalor2 "Reading package lists...
+Building dependency tree...
+Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." "Reading package lists...
+Building dependency tree...
+Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'samefoo2' is not installed, so not removed. Did you mean 'samefoo2:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2 -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'samefoo2:armel' is not installed, so not removed. Did you mean 'samefoo2:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2:armel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'iceweasel' is not installed, so not removed
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove iceweasel -s
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Package 'fireweasel' is not installed, so not removed. Did you mean 'fireweasel:i386'?
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove fireweasel:amd64 -s
diff --git a/test/integration/test-ubuntu-bug-1078697-missing-source-hashes b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes
new file mode 100755
index 0000000..0b9103f
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1078697-missing-source-hashes
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+
+msgtest 'Test apt-ftparchive source with missing hashes in .dsc'
+
+touch aptarchive/foo_1.0.tar.gz
+cat > aptarchive/foo_1.0.dsc << EOF
+Format: 3.0 (native)
+Source: foo
+Binary: foo
+Architecture: all
+Version: 1.0
+Package-List:
+ foo deb admin extra
+Files:
+ d41d8cd98f00b204e9800998ecf8427e 0 foo_1.0.tar.gz
+EOF
+
+# check for the SHA hashes
+testsuccess aptftparchive sources aptarchive/
+cp rootdir/tmp/testsuccess.output aptarchive/Sources
+testsuccess grep Checksums-Sha512 aptarchive/Sources
+
+for hash in sha512sum sha256sum sha1sum; do
+ for f in foo_1.0.tar.gz foo_1.0.dsc; do
+ SUM=$($hash aptarchive/$f | cut -d' ' -f1)
+ NEEDLE="$SUM $(stat -c%s aptarchive/$f) $f"
+ testsuccess test -n "$SUM"
+ msgtest "Test $hash hash matches for $f"
+ testsuccess --nomsg grep "$NEEDLE" aptarchive/Sources
+ done
+done
diff --git a/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum
new file mode 100755
index 0000000..6a66094
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1098738-apt-get-source-md5sum
@@ -0,0 +1,444 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+cat > aptarchive/Sources <<EOF
+Package: pkg-md5-ok
+Binary: pkg-md5-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-ok_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-ok_1.0.tar.gz
+
+Package: pkg-sha1-ok
+Binary: pkg-sha1-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha1-ok_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha1-ok_1.0.tar.gz
+
+Package: pkg-sha256-ok
+Binary: pkg-sha256-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-ok_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-ok_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-ok_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-ok_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-sha256-ok_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-sha256-ok_1.0.tar.gz
+
+Package: pkg-size-bad
+Binary: pkg-size-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 2 pkg-size-bad_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 4 pkg-size-bad_1.0.tar.gz
+
+Package: pkg-sha256-bad
+Binary: pkg-sha256-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-bad_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-bad_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-bad_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-bad_1.0.tar.gz
+Checksums-Sha256:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-sha256-bad_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-sha256-bad_1.0.tar.gz
+
+Package: pkg-md5-bad
+Binary: pkg-md5-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-md5-bad_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-md5-bad_1.0.tar.gz
+
+Package: pkg-no-md5
+Binary: pkg-no-md5
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-no-md5_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-no-md5_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-no-md5_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-no-md5_1.0.tar.gz
+
+Package: pkg-mixed-ok
+Binary: pkg-mixed-ok
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-mixed-ok_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-mixed-ok_1.0.dsc
+
+Package: pkg-mixed-sha1-bad
+Binary: pkg-mixed-sha1-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-mixed-sha1-bad_1.0.dsc
+Checksums-Sha256:
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-mixed-sha1-bad_1.0.tar.gz
+
+Package: pkg-mixed-sha2-bad
+Binary: pkg-mixed-sha2-bad
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-mixed-sha2-bad_1.0.dsc
+Checksums-Sha256:
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-mixed-sha2-bad_1.0.tar.gz
+
+Package: pkg-md5-disagree
+Binary: pkg-md5-disagree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-disagree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-disagree_1.0.tar.gz
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-md5-disagree_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-md5-disagree_1.0.tar.gz
+
+Package: pkg-md5-agree
+Binary: pkg-md5-agree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-agree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-agree_1.0.tar.gz
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-md5-agree_1.0.tar.gz
+ 9604ba9427a280db542279d9ed78400b 3 pkg-md5-agree_1.0.dsc
+
+Package: pkg-sha256-disagree
+Binary: pkg-sha256-disagree
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+Files:
+ 9604ba9427a280db542279d9ed78400b 3 pkg-sha256-disagree_1.0.dsc
+ db5570bf61464b46e2bde31ed61a7dc6 3 pkg-sha256-disagree_1.0.tar.gz
+Checksums-Sha1:
+ 324f464e6151a92cf57b26ef95dcfcf2059a8c44 3 pkg-sha256-disagree_1.0.dsc
+ 680254bad1d7ca0d65ec46aaa315d363abf6a50a 3 pkg-sha256-disagree_1.0.tar.gz
+Checksums-Sha256:
+ 943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a 3 pkg-sha256-disagree_1.0.dsc
+ 90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb 3 pkg-sha256-disagree_1.0.tar.gz
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 3 pkg-sha256-disagree_1.0.dsc
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3 pkg-sha256-disagree_1.0.tar.gz
+EOF
+
+# create fetchable files
+for x in 'pkg-md5-ok' 'pkg-sha1-ok' 'pkg-sha256-ok' 'pkg-sha256-bad' 'pkg-no-md5' \
+ 'pkg-mixed-ok' 'pkg-mixed-sha1-bad' 'pkg-mixed-sha2-bad' \
+ 'pkg-md5-agree' 'pkg-md5-disagree' 'pkg-sha256-disagree' \
+ 'pkg-md5-bad' 'pkg-size-bad'; do
+ echo -n 'dsc' > aptarchive/${x}_1.0.dsc
+ echo -n 'tar' > aptarchive/${x}_1.0.tar.gz
+done
+
+setupaptarchive --no-update
+changetowebserver
+testsuccess aptget update
+
+cd downloaded
+
+testok() {
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files were successfully downloaded for' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+}
+
+testkeep() {
+ echo -n 'dsc' > ${1}_1.0.dsc
+ echo -n 'tar' > ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping already downloaded file '${1}_1.0.dsc'
+Skipping already downloaded file '${1}_1.0.tar.gz'
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files already downloaded are kept for' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+}
+
+testnohash() {
+ #FIXME: Maybe we should fail in this case instead of skipping
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping download of file '${1}_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file '${1}_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@"
+ msgtest 'Files are not downloaded for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -o -e ${1}_1.0.tar.gz
+}
+
+testmismatch() {
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ local FAILURE
+ if [ "$1" = 'pkg-size-bad' ]; then
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [2 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ File has unexpected size (3 != 2). Mirror sync in progress?
+ Hashes of expected file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - Filesize:2 [weak]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [4 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ File has unexpected size (3 != 4). Mirror sync in progress?
+ Hashes of expected file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:4 [weak]
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc File has unexpected size (3 != 2). Mirror sync in progress?
+ Hashes of expected file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - Filesize:2 [weak]
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz File has unexpected size (3 != 4). Mirror sync in progress?
+ Hashes of expected file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:4 [weak]
+E: Failed to fetch some archives."
+ elif [ "$1" = 'pkg-md5-bad' ]; then
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:e52b7bb395ea3f46974f1f65b7c5975839aad32d4e2ec0f458f735d5aa24d2bf36d7816ed1e01dc3c493e11879e9a8f66dfca42821608cfe993996929a6be18a
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - MD5Sum:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb [weak]
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA512:5aa4cad81553320574eb72ee92bd45a1f0575528e257749dff298b2a33df9e7fc7f5c1c87fc1c8fde230f1234cca3a99bf8625a0ff7bb3238eb7e5473f9b43c0
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch some archives."
+ else
+ FAILURE="Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ - Filesize:3 [weak]
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ Hashes of received file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Err:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.dsc Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ - Filesize:3 [weak]
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ Hashes of received file:
+ - SHA256:943d3bf22ac661fb0f59bc4ff68cc12b04ff17a838dfcc2537008eb9c7f3770a
+ - SHA1:324f464e6151a92cf57b26ef95dcfcf2059a8c44 [weak]
+ - MD5Sum:9604ba9427a280db542279d9ed78400b [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.dsc")
+E: Failed to fetch http://localhost:${APTHTTPPORT}/${1}_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - SHA1:680254bad1d7ca0d65ec46aaa315d363abf6a50a [weak]
+ - MD5Sum:db5570bf61464b46e2bde31ed61a7dc6 [weak]
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification "aptarchive/${1}_1.0.tar.gz")
+E: Failed to fetch some archives."
+ fi
+ testfailureequal "$FAILURE" aptget source -d "$@"
+ msgtest 'Files were not download as they have hashsum mismatches for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+
+ if [ "$2" != '--allow-unauthenticated' ]; then
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Skipping download of file '${1}_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file '${1}_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d "$@" -o Acquire::ForceHash=ROT26
+ msgtest 'Files were not download as hash is unavailable for' "$1"
+ testfailure --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ fi
+
+ if [ "$1" != 'pkg-size-bad' ]; then
+ rm -f ${1}_1.0.dsc ${1}_1.0.tar.gz
+ testsuccessequal "Reading package lists...
+Need to get 6 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} $1 1.0 (dsc) [3 B]
+Get:2 http://localhost:${APTHTTPPORT} $1 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source --allow-unauthenticated -d "$@" -o Acquire::ForceHash=ROT26
+ msgtest 'Files were downloaded unauthenticated as user allowed it' "$1"
+ testsuccess --nomsg test -e ${1}_1.0.dsc -a -e ${1}_1.0.tar.gz
+ fi
+}
+
+testnohash pkg-md5-ok
+testnohash pkg-sha1-ok
+testok pkg-sha256-ok
+testkeep pkg-sha256-ok
+
+# pkg-sha256-bad has a bad SHA sum, but good MD5 sum. If apt is
+# checking the best available hash (as it should), this will trigger
+# a hash mismatch.
+testmismatch pkg-sha256-bad
+testok pkg-sha256-bad -o Acquire::ForceHash=MD5Sum
+
+testnohash pkg-md5-bad
+testmismatch pkg-md5-bad --allow-unauthenticated
+
+testmismatch pkg-size-bad
+
+# not having MD5 sum doesn't mean the file doesn't exist at all …
+testok pkg-no-md5
+testok pkg-no-md5 -o Acquire::ForceHash=SHA256
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-no-md5_1.0.dsc' as requested hashsum is not available for authentication
+Skipping download of file 'pkg-no-md5_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 0 B of source archives.
+Download complete and in download only mode" aptget source -d pkg-no-md5 -o Acquire::ForceHash=MD5Sum
+msgtest 'Files were not download as MD5 is not available for this package' 'pkg-no-md5'
+testfailure --nomsg test -e pkg-no-md5_1.0.dsc -a -e pkg-no-md5_1.0.tar.gz
+
+# deal with cases in which we haven't for all files the same checksum type
+# mostly pathologic as this shouldn't happen, but just to be sure
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-mixed-ok_1.0.tar.gz' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-ok 1.0 (dsc) [3 B]
+Download complete and in download only mode" aptget source -d pkg-mixed-ok
+
+testsuccessequal "Reading package lists...
+Skipping download of file 'pkg-mixed-sha1-bad_1.0.dsc' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha1-bad 1.0 (tar) [3 B]
+Download complete and in download only mode" aptget source -d pkg-mixed-sha1-bad
+msgtest 'Only tar file is downloaded as the dsc has hashsum mismatch' 'pkg-mixed-sha1-bad'
+testsuccess --nomsg test ! -e pkg-mixed-sha1-bad_1.0.dsc -a -e pkg-mixed-sha1-bad_1.0.tar.gz
+testfailureequal "Reading package lists...
+Skipping download of file 'pkg-mixed-sha2-bad_1.0.dsc' as requested hashsum is not available for authentication
+Need to get 3 B of source archives.
+Get:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar) [3 B]
+Err:1 http://localhost:${APTHTTPPORT} pkg-mixed-sha2-bad 1.0 (tar)
+ Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz')
+E: Failed to fetch http://localhost:${APTHTTPPORT}/pkg-mixed-sha2-bad_1.0.tar.gz Hash Sum mismatch
+ Hashes of expected file:
+ - SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+ - Filesize:3 [weak]
+ Hashes of received file:
+ - SHA256:90aebae315675cbf04612de4f7d5874850f48e0b8dd82becbeaa47ca93f5ebfb
+ - Filesize:3 [weak]
+ Last modification reported: $(lastmodification 'aptarchive/pkg-mixed-sha2-bad_1.0.tar.gz')
+E: Failed to fetch some archives." aptget source -d pkg-mixed-sha2-bad
+
+# it gets even more pathologic: multiple entries for one file, some even disagreeing!
+testnohash pkg-md5-agree
+testfailureequal 'Reading package lists...
+E: Error parsing checksum in Files of source package pkg-md5-disagree' aptget source -d pkg-md5-disagree
+testfailureequal 'Reading package lists...
+E: Error parsing checksum in Checksums-Sha256 of source package pkg-sha256-disagree' aptget source -d pkg-sha256-disagree
diff --git a/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings b/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings
new file mode 100755
index 0000000..d766026
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings
@@ -0,0 +1,103 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'stable' 'libmesa' 'amd64,i386' '1' 'Multi-Arch: same'
+insertpackage 'stable' 'libmesa-lts' 'amd64,i386' '1' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+insertpackage 'stable' 'steam' 'i386' '1' 'Depends: libmesa'
+
+insertpackage 'unstable' 'libmesa' 'amd64,i386' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'libmesa-lts' 'amd64,i386' '2' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+insertpackage 'unstable' 'steam' 'i386' '2' 'Depends: libmesa'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
+
+insertinstalledpackage 'libmesa' 'amd64' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa libmesa:i386
+The following NEW packages will be installed:
+ libmesa:i386 steam:i386
+The following packages will be upgraded:
+ libmesa
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa [1] (2 unstable [amd64])
+Inst libmesa:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa (2 unstable [amd64])
+Conf libmesa:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
+
+rm -f rootdir/var/lib/dpkg/status
+insertinstalledpackage 'libmesa-lts' 'amd64' '1' 'Provides: libmesa
+Conflicts: libmesa
+Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa-lts:i386
+The following NEW packages will be installed:
+ libmesa-lts:i386 steam:i386
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa-lts:i386 (1 stable [i386])
+Inst steam:i386 (1 stable [i386])
+Conf libmesa-lts:i386 (1 stable [i386])
+Conf steam:i386 (1 stable [i386])' aptget install steam -st stable
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libmesa-lts libmesa-lts:i386
+The following NEW packages will be installed:
+ libmesa-lts:i386 steam:i386
+The following packages will be upgraded:
+ libmesa-lts
+1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst libmesa-lts [1] (2 unstable [amd64])
+Inst libmesa-lts:i386 (2 unstable [i386])
+Inst steam:i386 (2 unstable [i386])
+Conf libmesa-lts (2 unstable [amd64])
+Conf libmesa-lts:i386 (2 unstable [i386])
+Conf steam:i386 (2 unstable [i386])' aptget install steam -st unstable
diff --git a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
new file mode 100755
index 0000000..82e1d61
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'i386'
+
+# Regression test for LP: #1304403
+#
+# The issue here is that libkadm5srv-mit8 (priority standard) is replaced
+# by a new libkadm5srv-mit9 and libkbd5-7 breaks on the old -mit8 package.
+# The -mit8 package is no longer downloadable (and hence not upgradeable)
+
+# normal upradable pkg
+# (libkdb5-7 that breaks on libkadm5srv-mit8 (<< 1.11+dfsg~)
+insertinstalledpackage 'upgradable' 'all' '1.0' '' 'extra'
+insertpackage 'unstable' 'upgradable' 'all' '2.0' 'Breaks: not-downloadable (<< 1.1)' 'optional'
+
+# no longer downloadable pkg (libkadm5srv-mit8, replaced by libkadm5srv-mit9)
+# but priority standard pushes it higher
+insertinstalledpackage 'not-downloadable' 'all' '1.0' '' 'standard'
+
+setupaptarchive
+
+# discourage keeping obsolete high-priority packages …
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be REMOVED:
+ not-downloadable
+The following packages will be upgraded:
+ upgradable
+1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv not-downloadable [1.0]
+Inst upgradable [1.0] (2.0 unstable [all])
+Conf upgradable (2.0 unstable [all])' aptget -s dist-upgrade
+
+# … but if it has dependencies we want to keep it as usual
+for i in $(seq 1 10); do
+insertinstalledpackage "depender$i" 'all' '1.0' 'Depends: not-downloadable'
+done
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages have been kept back:
+ upgradable
+0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget -s dist-upgrade
diff --git a/test/integration/test-ubuntu-bug-1549819-empty-arch-list b/test/integration/test-ubuntu-bug-1549819-empty-arch-list
new file mode 100755
index 0000000..5e1c6ce
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1549819-empty-arch-list
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture ""
+echo 'APT::Architecture "";' > rootdir/etc/apt/apt.conf
+echo 'APT::Architectures:: "";' >> rootdir/etc/apt/apt.conf
+setupaptarchive
+
+# test success
+testsuccess aptcache -c rootdir/etc/apt/apt.conf gencaches -o debug::NoLocking=1
diff --git a/test/integration/test-ubuntu-bug-1651923-requote-https-uri b/test/integration/test-ubuntu-bug-1651923-requote-https-uri
new file mode 100755
index 0000000..cf56a6a
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1651923-requote-https-uri
@@ -0,0 +1,19 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+
+mkdir "aptarchive/target with space"
+echo 'alright' > "aptarchive/target with space/working"
+changetohttpswebserver
+webserverconfig 'aptwebserver::redirect::replace::/targetwithoutspace/' '/target%20with%20space/'
+webserverconfig 'aptwebserver::redirect::replace::/targetwithoutspace2/' '/target with space/'
+
+testsuccess downloadfile "http://localhost:${APTHTTPPORT}/targetwithoutspace/working" httpfile1
+testsuccess downloadfile "http://localhost:${APTHTTPPORT}/targetwithoutspace2/working" httpfile2
+testsuccess downloadfile "https://localhost:${APTHTTPSPORT}/targetwithoutspace/working" httpsfile1
+testsuccess downloadfile "https://localhost:${APTHTTPSPORT}/targetwithoutspace2/working" httpsfile2
diff --git a/test/integration/test-ubuntu-bug-1876495-pkgnames-virtual b/test/integration/test-ubuntu-bug-1876495-pkgnames-virtual
new file mode 100755
index 0000000..627bd0c
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1876495-pkgnames-virtual
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertinstalledpackage 'coolstuff' 'all' '1.0' 'Provides: virtual-package
+Source: source-package'
+
+setupaptarchive
+changetowebserver
+
+testsuccess aptget update -o Debug::Acquire::gpg=1
+testsuccessequal 'coolstuff' aptcache pkgnames
+
+testsuccessequal 'source-package
+virtual-package
+coolstuff' aptcache pkgnames --all-names
diff --git a/test/integration/test-ubuntu-bug-1921626-unsized-packages b/test/integration/test-ubuntu-bug-1921626-unsized-packages
new file mode 100755
index 0000000..477ed52
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1921626-unsized-packages
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture "i386"
+confighashes 'SHA512'
+
+mkdir tree
+head -c $((5*1024)) /dev/urandom > tree/data-file
+
+buildsimplenativepackage 'a' 'all' '1.0' 'stable'
+buildsimplenativepackage 'b' 'all' '1.0' 'stable' '' '' '' '' "$PWD/tree"
+buildsimplenativepackage 'c' 'all' '1.0' 'stable'
+
+setupaptarchive --no-update
+changetowebserver
+
+testsuccess apt update
+
+for file in rootdir/var/lib/apt/lists/*Packages; do
+ awk '!(/^Size/ && ++cnt==2)' $file > $file.new
+ mv $file.new $file
+done
+
+
+size_a=$(wc -c aptarchive/pool/a_1.0_all.deb | awk '{print $1}')
+size_b=$(wc -c aptarchive/pool/b_1.0_all.deb | awk '{print $1}')
+size_c=$(wc -c aptarchive/pool/c_1.0_all.deb | awk '{print $1}')
+
+cd downloaded
+testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} stable/main all a all 1.0 [$size_a B]
+Get:2 http://localhost:${APTHTTPPORT} stable/main all b all 1.0 [$size_b B]
+Get:3 http://localhost:${APTHTTPPORT} stable/main all c all 1.0 [$size_c B]" apt download a b c -o Acquire::AllowUnsizedPackages=true
+rm *.deb
+
+testfailureequal "E: Repository is broken: http://localhost:${APTHTTPPORT} stable/main all b all 1.0 has no Size information" apt download a b c
+cd ..
diff --git a/test/integration/test-ubuntu-bug-1974196 b/test/integration/test-ubuntu-bug-1974196
new file mode 100755
index 0000000..7c38723
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1974196
@@ -0,0 +1,101 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+insertinstalledpackage 'pkg0' 'all' '1'
+insertinstalledpackage 'pkg1' 'all' '1'
+insertinstalledpackage 'depends' 'all' '1' 'Depends: pkg0 (= 1), pkg1 (= 1)'
+insertpackage 'unstable' 'pkg0' 'all' '2'
+insertpackage 'unstable' 'pkg1' 'all' '2'
+insertpackage 'unstable' 'depends' 'all' '2' 'Depends: pkg0 (= 2), pkg1 (= 2)'
+
+configarchitecture 'arm64'
+setupaptarchive
+
+noprogress() {
+ "$@" | sed /^Progress/d
+}
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+ Upgrading: depends:arm64 < 1 | 2 @ii umH Ib > due to depends:arm64 Depends on pkg0:arm64 < 1 -> 2 @ii pumU > (= 1)
+ MarkInstall pkg0:arm64 < 1 -> 2 @ii pumU > FU=1
+ MarkInstall depends:arm64 < 1 -> 2 @ii umU Ib > FU=0
+ Installing pkg1:arm64 as Depends of depends:arm64
+ MarkInstall pkg1:arm64 < 1 -> 2 @ii umU > FU=0
+Starting pkgProblemResolver with broken count: 0
+Starting 2 pkgProblemResolver with broken count: 0
+Done
+The following additional packages will be installed:
+ depends pkg1
+The following packages will be upgraded:
+ depends pkg0 pkg1
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst depends [1] (2 unstable [all]) []
+Inst pkg0 [1] (2 unstable [all]) []
+Inst pkg1 [1] (2 unstable [all])
+Conf depends (2 unstable [all])
+Conf pkg0 (2 unstable [all])
+Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s
+
+testsuccessequal "Percentage: 0
+Message: Start up solver…
+
+Percentage: 1
+Message: Read request…
+
+Percentage: 5
+Message: Read scenario…
+
+Percentage: 50
+Message: Apply request on scenario…
+
+Percentage: 60
+Message: Call problemresolver on current scenario…
+
+Percentage: 95
+Message: Write solution…
+
+Install: 66284
+Package: udev:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 66185
+Package: systemd-timesyncd:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 65031
+Package: libpam-systemd:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 65263
+Package: libsystemd0:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 65023
+Package: libnss-systemd:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 65264
+Package: libudev-dev:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 66181
+Package: systemd:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 65265
+Package: libudev1:arm64
+Version: 249.11-0ubuntu3.4
+
+Install: 66184
+Package: systemd-sysv:arm64
+Version: 249.11-0ubuntu3.4
+
+Percentage: 100
+Message: Done
+" noprogress runapt "${APTHELPERBINDIR}/solvers/apt" < $TESTDIR/edsp-ubuntu-bug-1974196
diff --git a/test/integration/test-ubuntu-bug-1990586 b/test/integration/test-ubuntu-bug-1990586
new file mode 100755
index 0000000..415c502
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-1990586
@@ -0,0 +1,42 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+
+configarchitecture 'amd64'
+
+noprogress() {
+ "$@" | sed /^Progress/d
+}
+
+# The important thing in this bug is that python3.10 and python3.10-defaults are phasing differently,
+# so both should be kept back rather than one causing tons of removals.
+# This should effectively be a no-op
+testsuccessequal "Percentage: 0
+Message: Start up solver…
+
+Percentage: 1
+Message: Read request…
+
+Percentage: 5
+Message: Read scenario…
+
+Percentage: 50
+Message: Apply request on scenario…
+
+Percentage: 60
+Message: Call problemresolver on current scenario…
+
+Percentage: 95
+Message: Write solution…
+
+Autoremove: 74428
+Package: systemd-hwe-hwdb:amd64
+Version: 249.11.1
+
+Percentage: 100
+Message: Done
+" noprogress runapt "${APTHELPERBINDIR}/solvers/apt" < $TESTDIR/edsp-ubuntu-bug-1990586
diff --git a/test/integration/test-ubuntu-bug-2025462-phased-dist-upgrade b/test/integration/test-ubuntu-bug-2025462-phased-dist-upgrade
new file mode 100755
index 0000000..5678642
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-2025462-phased-dist-upgrade
@@ -0,0 +1,52 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+echo 'Debug::Phasing "1";' > rootdir/etc/apt/apt.conf.d/debug-phasing
+configarchitecture 'i386'
+
+insertinstalledpackage 'gnome-shell' 'all' '1' 'Depends: mutter (>= 1), gnome-shell-common (= 1)'
+insertinstalledpackage 'gnome-shell-common' 'all' '1'
+insertinstalledpackage 'mutter' 'all' '1'
+
+insertpackage 'unstable-updates' 'gnome-shell-common' 'all' '2' 'Phased-Update-Percentage: 100'
+insertpackage 'unstable-updates' 'gnome-shell' 'all' '2' 'Phased-Update-Percentage: 100
+Depends: mutter (>= 2), gnome-shell-common (= 2)'
+insertpackage 'unstable-updates' 'mutter' 'all' '2' 'Phased-Update-Percentage: 0'
+
+setupaptarchive
+
+# This is the broken test case:
+#
+# The following packages will be REMOVED:
+# gnome-shell
+# The following packages have been kept back:
+# mutter
+# The following packages will be upgraded:
+# gnome-shell-common
+# 1 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following upgrades have been deferred due to phasing:
+ mutter
+The following packages have been kept back:
+ gnome-shell gnome-shell-common
+0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded." aptget dist-upgrade -s -q
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ gnome-shell gnome-shell-common mutter
+3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst mutter [1] (2 unstable-updates [all])
+Inst gnome-shell [1] (2 unstable-updates [all]) []
+Inst gnome-shell-common [1] (2 unstable-updates [all])
+Conf mutter (2 unstable-updates [all])
+Conf gnome-shell (2 unstable-updates [all])
+Conf gnome-shell-common (2 unstable-updates [all])" aptget dist-upgrade -s -q -o APT::Get::Always-Include-Phased-Updates=1
diff --git a/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall
new file mode 100755
index 0000000..5f2109d
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall
@@ -0,0 +1,102 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+insertpackage 'unstable' 'unrelated' 'all' '1.0' 'stable'
+insertsource 'unstable' 'unrelated' 'all' '1.0' 'stable'
+
+echo 'ni ni ni' > aptarchive/knights
+
+setupaptarchive
+changetowebserver -o 'aptwebserver::overwrite::.*InRelease::filename=/knights' -o 'aptwebserver::overwrite::.*::filename=/knights'
+
+msgtest 'Acquire test file from the webserver to check' 'overwrite'
+if downloadfile http://localhost:${APTHTTPPORT}/holygrail ./knights-talking >/dev/null; then
+ msgpass
+else
+ msgfail
+fi
+
+testfileequal knights-talking 'ni ni ni'
+
+ensure_n_canary_strings_in_dir() {
+ local DIR="$1"
+ local CANARY_STRING="$2"
+ local EXPECTED_N="$3"
+
+ msgtest "Testing in $DIR for $EXPECTED_N canary" "$CANARY_STRING"
+ local N=$(grep "$CANARY_STRING" $DIR/* 2>/dev/null |wc -l )
+ test "$N" = "$EXPECTED_N" && msgpass || msgfail "Expected $EXPECTED_N canaries, got $N"
+}
+
+runtests() {
+ LISTS='rootdir/var/lib/apt/lists'
+ rm -rf "$LISTS"
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+ testequal 'auxfiles
+lock
+partial' ls "$LISTS"
+
+ # and again with pre-existing files with "valid data" which should remain
+ for f in Release Release.gpg main_binary-amd64_Packages main_source_Sources; do
+ echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}"
+ chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}"
+ done
+
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 4
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+
+ # and now with a pre-existing InRelease file
+ echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease"
+ chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease"
+ rm -f "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release" "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release.gpg"
+ msgtest 'excpected failure of' 'apt-get update'
+ testfailure aptget update
+ testsuccess grep "$1" rootdir/tmp/testfailure.output
+
+ ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 3
+ ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0
+}
+runtests '^E:.*Clearsigned file .*NOSPLIT.*'
+webserverconfig 'aptwebserver::overwrite::.*InRelease::filename' '/404'
+runtests '^E:.*Signed file .*NODATA.*'
+
+webserverconfig 'aptwebserver::overwrite::.*::filename' '/404'
+webserverconfig 'aptwebserver::httpcode::404' '511 Network Authentication Required'
+rm -rf rootdir/var/lib/apt/lists
+testfailureequal "Err:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 511 Network Authentication Required
+Reading package lists...
+E: Failed to fetch http://localhost:${APTHTTPPORT}/dists/unstable/InRelease 511 Network Authentication Required
+E: The repository 'http://localhost:${APTHTTPPORT} unstable InRelease' is not signed.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." aptget update
+
+# on S3 all files get a 403. If we accept unsigned, lets be liberal in non-existence acceptance
+webserverconfig 'aptwebserver::httpcode::404' '403 Forbidden'
+rm -rf rootdir/var/lib/apt/lists
+testfailureequal "Err:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 403 Forbidden
+Reading package lists...
+E: Failed to fetch http://localhost:${APTHTTPPORT}/dists/unstable/InRelease 403 Forbidden
+E: The repository 'http://localhost:${APTHTTPPORT} unstable InRelease' is not signed.
+N: Updating from such a repository can't be done securely, and is therefore disabled by default.
+N: See apt-secure(8) manpage for repository creation and user configuration details." apt update
+
+sed -i 's#^deb\(-src\)\? #deb\1 [allow-insecure=yes] #' rootdir/etc/apt/sources.list.d/*
+testfailure apt update
+testequal "Ign:1 http://localhost:${APTHTTPPORT} unstable InRelease
+ 403 Forbidden
+Ign:2 http://localhost:${APTHTTPPORT} unstable Release
+ 403 Forbidden" head -n 4 rootdir/tmp/testfailure.output
diff --git a/test/integration/test-ubuntu-bug-365611-long-package-names b/test/integration/test-ubuntu-bug-365611-long-package-names
new file mode 100755
index 0000000..53e3ea8
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-365611-long-package-names
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+setupaptarchive
+
+aptget install $(for i in $(seq 0 1000); do echo -n 'a'; done) 2> longpackagename.log > /dev/null || true
+testfileequal 'longpackagename.log' "E: Unable to locate package $(for i in $(seq 0 1000); do echo -n 'a'; done)"
+
+# … and the opposite of long:
+aptget install "" -s >longpackagename.log 2>&1 || true
+testfileequal 'longpackagename.log' "$(aptget install -s)"
diff --git a/test/integration/test-ubuntu-bug-614993 b/test/integration/test-ubuntu-bug-614993
new file mode 100755
index 0000000..542e551
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-614993
@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "amd64"
+setupaptarchive
+
+# test success
+UPGRADE="Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ libdrm-intel1 libdrm-nouveau1 libdrm-radeon1 libdrm2 libmtdev1
+ libutouch-grail1 libx11-xcb1 libxcb-aux0 libxcb-dri2-0 libxfont1
+ xserver-common xserver-xorg-core xserver-xorg-input-all
+ xserver-xorg-input-evdev xserver-xorg-input-mouse
+ xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
+ xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm
+ xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
+ xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-i128
+ xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga
+ xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-nv
+ xserver-xorg-video-openchrome xserver-xorg-video-r128
+ xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3
+ xserver-xorg-video-s3virge xserver-xorg-video-savage
+ xserver-xorg-video-siliconmotion xserver-xorg-video-sis
+ xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
+ xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-vmware
+ xserver-xorg-video-voodoo
+Suggested packages:
+ xfonts-scalable gpointing-device-settings touchfreeze firmware-linux
+Recommended packages:
+ xauth intel-gpu-tools
+The following packages will be REMOVED:
+ xserver-xorg-video-v4l
+The following NEW packages will be installed:
+ libmtdev1 libutouch-grail1 libx11-xcb1 libxcb-aux0 libxcb-dri2-0
+The following packages will be upgraded:
+ libdrm-intel1 libdrm-nouveau1 libdrm-radeon1 libdrm2 libxfont1
+ xserver-common xserver-xorg xserver-xorg-core xserver-xorg-input-all
+ xserver-xorg-input-evdev xserver-xorg-input-mouse
+ xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
+ xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm
+ xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips
+ xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-i128
+ xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga
+ xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-nv
+ xserver-xorg-video-openchrome xserver-xorg-video-r128
+ xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3
+ xserver-xorg-video-s3virge xserver-xorg-video-savage
+ xserver-xorg-video-siliconmotion xserver-xorg-video-sis
+ xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
+ xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-vmware
+ xserver-xorg-video-voodoo
+44 upgraded, 5 newly installed, 1 to remove and 0 not upgraded.
+Need to get 0 B/5561 kB of archives.
+After this operation, 3027 kB disk space will be freed.
+E: Trivial Only specified but this is not a trivial operation."
+testfailureequal "$UPGRADE" aptget install xserver-xorg --trivial-only
+
diff --git a/test/integration/test-ubuntu-bug-761175-remove-purge b/test/integration/test-ubuntu-bug-761175-remove-purge
new file mode 100755
index 0000000..6ae1a04
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-761175-remove-purge
@@ -0,0 +1,88 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+buildcompizpkg() {
+ setupsimplenativepackage "compiz-core-$1" "$2" "$3" "$4"
+ BUILDDIR="incoming/compiz-core-$1-$3"
+ mkdir -p ${BUILDDIR}/debian/compiz-core/etc
+ echo 'foo=bar;' > ${BUILDDIR}/compiz.conf
+ echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
+ buildpackage "$BUILDDIR" "$4" 'main' "$2"
+ rm -rf "$BUILDDIR"
+}
+buildcompizpkg 'native' 'all' '1.0' 'stable'
+buildcompizpkg 'all' 'native' '1.0' 'stable'
+buildcompizpkg 'native' 'native' '2.0' 'unstable'
+buildcompizpkg 'all' 'all' '2.0' 'unstable'
+
+setupaptarchive
+
+runtests() {
+ local PKG="$1"
+ local RELEASE="${2}"
+ shift 2
+ testdpkgnotinstalled compiz-core-${PKG}
+ testsuccess aptget install compiz-core-${PKG} -t "${RELEASE}" "$@"
+ testdpkginstalled compiz-core-${PKG}
+
+ testsuccess aptget remove compiz-core-${PKG} -y "$@" -o Debug::pkgDpkgPm=1
+ testfailure grep -- '--force-remove-essential' rootdir/tmp/testsuccess.output
+ testsuccess aptget remove compiz-core-${PKG} -y "$@"
+ testdpkgnotinstalled compiz-core-${PKG}
+ testdpkgstatus 'rc' '1' "compiz-core-${PKG}"
+
+ if [ -z "$1" ]; then
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ compiz-core-${PKG}*
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Purg compiz-core-${PKG}" aptget purge compiz-core-${PKG} -s "$@"
+ else
+ # check that the rc-version isn't passed to the external resolver if its only in dpkg/status
+ export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/dump-${PKG}.edsp"
+ testfailure aptget purge compiz-core-${PKG} -y "$@" -s --solver dump
+ testsuccessequal '2' grep -c "^Package: compiz-core-${PKG}\$" "$APT_EDSP_DUMP_FILENAME"
+ mv rootdir/etc/apt/sources.list.d/apt-test-stable-deb.list rootdir/etc/apt/sources.list.d/apt-test-stable-deb.disabled
+ testfailure aptget purge compiz-core-${PKG} -y "$@" -s --solver dump
+ testsuccessequal '1' grep -c "^Package: compiz-core-${PKG}\$" "$APT_EDSP_DUMP_FILENAME"
+ mv rootdir/etc/apt/sources.list.d/apt-test-stable-deb.disabled rootdir/etc/apt/sources.list.d/apt-test-stable-deb.list
+
+ testsuccessequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Execute external solver...
+The following packages will be REMOVED:
+ compiz-core-${PKG}*
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Purg compiz-core-${PKG}" aptget purge compiz-core-${PKG} -s "$@"
+ fi
+ testsuccess aptget purge compiz-core-${PKG} -y "$@" -o Debug::pkgDpkgPm=1
+ testfailure grep -- '--force-remove-essential' rootdir/tmp/testsuccess.output
+ testsuccess aptget purge compiz-core-${PKG} -y "$@"
+ echo -n '' > rootdir/var/lib/dpkg/available # dpkg -l < 1.16.2 reads the available file by default, where the package can be found
+ testequalor2 "dpkg-query: no packages found matching compiz-core-${PKG}" "No packages found matching compiz-core-${PKG}." dpkg -l compiz-core-${PKG}
+}
+runtestround() {
+ runtests 'native' 'unstable' "$@"
+ runtests 'all' 'unstable' "$@"
+ runtests 'native' 'stable' "$@"
+ runtests 'all' 'stable' "$@"
+}
+testround() {
+ msgmsg 'Test in multi arch environment' "$@"
+ configarchitecture 'amd64' 'i386'
+ runtestround "$@"
+
+ msgmsg 'Test in single arch environment' "$@"
+ configarchitecture 'amd64'
+ runtestround "$@"
+}
+testround
+testround --solver apt
diff --git a/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only
new file mode 100755
index 0000000..80e41f2
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-784473-InRelease-one-message-only
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'i386'
+
+insertpackage 'unstable' 'apt' 'i386' '0.8.11'
+
+export APT_DONT_SIGN='Release.gpg'
+setupaptarchive --no-update
+
+find aptarchive/ -name 'InRelease' -exec cp {} {}.old \;
+
+for RELEASE in $(find aptarchive/ -name 'InRelease'); do
+ (echo 'Origin: Marvin
+Label: Marvin
+Suite: experimental
+Codename: experimental
+MD5Sum:
+ 65fd410587b6978de2277f2912523f09 9360 Packages
+ d27b294ed172a1fa9dd5a53949914c5d 4076 Packages.bz2
+ 2182897e0a2a0c09e760beaae117a015 2023 Packages.diff/Index
+ 1b895931853981ad8204d2439821b999 4144 Packages.gz'; echo; cat ${RELEASE}.old;) > ${RELEASE}
+done
+
+testfailure aptget update
+testsuccess grep '^E:.*Clearsigned file .*NOSPLIT.*' rootdir/tmp/testfailure.output
+
+testsuccessequal "Package files:
+Pinned packages:" aptcache policy
+
+insertinstalledpackage 'foo' 'all' '1'
+
+ROOTDIR="$(readlink -f .)"
+testsuccessequal "Package files:
+ 100 ${ROOTDIR}/rootdir/var/lib/dpkg/status
+ release a=now
+Pinned packages:" aptcache policy
diff --git a/test/integration/test-ubuntu-bug-802901-multiarch-early-remove b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
new file mode 100755
index 0000000..d9587d9
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-802901-multiarch-early-remove
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libgl1-mesa-glx' 'amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+insertpackage 'unstable' 'libgl1-mesa-glx' 'i386,amd64' '2.0' 'Multi-Arch: same
+Provides: libgl1
+Conflicts: libgl1'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following NEW packages will be installed:
+ libgl1-mesa-glx:i386
+0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libgl1-mesa-glx:i386 (2.0 unstable [i386])
+Conf libgl1-mesa-glx:i386 (2.0 unstable [i386])' aptget install libgl1-mesa-glx:i386 -s
diff --git a/test/integration/test-ubuntu-bug-806274-install-suggests b/test/integration/test-ubuntu-bug-806274-install-suggests
new file mode 100755
index 0000000..b73a6f7
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-806274-install-suggests
@@ -0,0 +1,81 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+
+insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: foo
+Recommends: bar
+Suggests: baz'
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertpackage 'unstable' 'bar' 'i386' '1.0'
+insertpackage 'unstable' 'baz' 'i386' '1.0'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar foo
+Suggested packages:
+ baz
+The following NEW packages will be installed:
+ apt bar foo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst bar (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])' aptget install apt -s --install-recommends --no-install-suggests
+
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ bar baz foo
+The following NEW packages will be installed:
+ apt bar baz foo
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst bar (1.0 unstable [i386])
+Inst baz (1.0 unstable [i386])
+Conf bar (1.0 unstable [i386])
+Conf baz (1.0 unstable [i386])' aptget install apt -s --install-recommends --install-suggests
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ foo
+Suggested packages:
+ baz
+Recommended packages:
+ bar
+The following NEW packages will be installed:
+ apt foo
+0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])' aptget install apt -s --no-install-recommends --no-install-suggests
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ baz foo
+Recommended packages:
+ bar
+The following NEW packages will be installed:
+ apt baz foo
+0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
+Inst foo (1.0 unstable [i386])
+Conf foo (1.0 unstable [i386])
+Inst apt (0.8.15 unstable [i386])
+Conf apt (0.8.15 unstable [i386])
+Inst baz (1.0 unstable [i386])
+Conf baz (1.0 unstable [i386])' aptget install apt -s --no-install-recommends --install-suggests
diff --git a/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first b/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first
new file mode 100755
index 0000000..beb7c08
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-835625-multiarch-lockstep-installed-first
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertinstalledpackage 'libsame' 'i386' '1'
+insertinstalledpackage 'apt' 'i386' '1' 'Depends: libsame (= 1)'
+
+insertpackage 'unstable' 'libsame' 'i386,amd64' '2' 'Multi-Arch: same'
+insertpackage 'unstable' 'apt' 'i386' '2' 'Depends: libsame (= 2)'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ apt:i386 libsame:i386
+The following NEW packages will be installed:
+ libsame
+The following packages will be upgraded:
+ apt:i386 libsame:i386
+2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libsame:i386 [1] (2 unstable [i386]) [apt:i386 ]
+Inst libsame (2 unstable [amd64]) [apt:i386 ]
+Conf libsame:i386 (2 unstable [i386]) [apt:i386 ]
+Inst apt:i386 [1] (2 unstable [i386])
+Conf apt:i386 (2 unstable [i386])
+Conf libsame (2 unstable [amd64])' 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ apt:i386 libsame:i386
+The following NEW packages will be installed:
+ libsame
+The following packages will be upgraded:
+ apt:i386 libsame:i386
+2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst apt:i386 [1] (2 unstable [i386]) []
+Inst libsame:i386 [1] (2 unstable [i386])
+Inst libsame (2 unstable [amd64])
+Conf libsame:i386 (2 unstable [i386])
+Conf libsame (2 unstable [amd64])
+Conf apt:i386 (2 unstable [i386])' aptget install libsame:amd64 -s
diff --git a/test/integration/test-ubuntu-bug-859188-multiarch-reinstall b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall
new file mode 100755
index 0000000..5fdb98d
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall
@@ -0,0 +1,27 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386' 'armel'
+
+buildsimplenativepackage 'libsame' 'amd64,i386,armel' '1.0' 'unstable' 'Multi-Arch: same'
+
+setupaptarchive
+
+testsuccess aptget install libsame libsame:i386
+
+REINSTALL='Reading package lists...
+Building dependency tree...
+Reading state information...
+0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded.
+Inst libsame [1.0] (1.0 unstable [amd64])
+Inst libsame:i386 [1.0] (1.0 unstable [i386])
+Conf libsame (1.0 unstable [amd64])
+Conf libsame:i386 (1.0 unstable [i386])'
+
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:amd64 -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:i386 -s
+testsuccessequal "$REINSTALL" aptget install --reinstall libsame:amd64 libsame:i386 -s
diff --git a/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering b/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering
new file mode 100755
index 0000000..bd5be9e
--- /dev/null
+++ b/test/integration/test-ubuntu-bug-985852-pre-depends-or-group-ordering
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+insertinstalledpackage 'custom' 'amd64' '1.0' 'Pre-Depends: grub-pc | grub'
+insertinstalledpackage 'grub' 'amd64' '1.0'
+insertpackage 'unstable' 'custom' 'amd64' '2.0' 'Pre-Depends: grub-pc | grub'
+
+setupaptarchive
+
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ custom
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Inst custom [1.0] (2.0 unstable [amd64])
+Conf custom (2.0 unstable [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-unpack-different-version-unpacked b/test/integration/test-unpack-different-version-unpacked
new file mode 100755
index 0000000..e7da64c
--- /dev/null
+++ b/test/integration/test-unpack-different-version-unpacked
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'libqtcore4' 'i386,amd64' '2' 'Multi-Arch: same'
+setupaptarchive
+
+cleanstatus() {
+ rm -f rootdir/var/lib/dpkg/status
+ rm rootdir/var/cache/apt/*.bin
+}
+
+#FIXME: the reported version is wrong, it should be 1, not 2
+insertinstalledpackage 'libqtcore4' 'i386,amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
+2 not fully installed or removed.
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+2 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+2 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same' '' 'install ok unpacked'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'amd64' '2' 'Multi-Arch: same'
+insertinstalledpackage 'libqtcore4' 'i386' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4:i386
+The following packages will be upgraded:
+ libqtcore4:i386
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4:i386 [1] (2 unstable [i386])
+Conf libqtcore4:i386 (2 unstable [i386])' aptget install -s -f
+
+cleanstatus
+insertinstalledpackage 'libqtcore4' 'i386' '2' 'Multi-Arch: same'
+insertinstalledpackage 'libqtcore4' 'amd64' '1' 'Multi-Arch: same' '' 'install ok unpacked'
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Correcting dependencies... Done
+The following additional packages will be installed:
+ libqtcore4
+The following packages will be upgraded:
+ libqtcore4
+1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+1 not fully installed or removed.
+Inst libqtcore4 [1] (2 unstable [amd64])
+Conf libqtcore4 (2 unstable [amd64])' aptget install -s -f
diff --git a/test/integration/test-uri-encode-filename-field b/test/integration/test-uri-encode-filename-field
new file mode 100755
index 0000000..233332d
--- /dev/null
+++ b/test/integration/test-uri-encode-filename-field
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'foo' 'all' '0+0~0'
+setupaptarchive --no-update
+
+runtest() {
+ rm -rf rootdir/var/lib/apt/lists
+ testsuccess apt update
+
+ cd downloaded
+ testsuccess apt download foo
+ testsuccess rm 'foo_0+0~0_all.deb'
+ testsuccess apt install foo
+ testsuccess apt source foo
+ testsuccess rm 'foo_0+0~0.dsc' 'foo_0+0~0.tar.xz'
+ testsuccess rm -r 'foo-0+0~0'
+
+ mv '../aptarchive/pool/foo_0+0~0_all.deb' '../aptarchive/pool/foo_0%3a0+0~0_all.deb'
+ mv '../aptarchive/pool/foo_0+0~0.dsc' '../aptarchive/pool/foo_0%3a0+0~0.dsc'
+ testsuccess apt purge foo -y
+ testfailure apt download foo
+ testfailure apt install foo
+ testfailure apt source foo --dsc-only
+
+ sed -i -e 's#_0+0~0_#_0%3a0+0~0_#' ../rootdir/var/lib/apt/lists/*Packages
+ sed -i -e 's#_0+0~0.d#_0%3a0+0~0.d#' ../rootdir/var/lib/apt/lists/*Sources
+ testsuccess apt download foo
+ testsuccess rm 'foo_0+0~0_all.deb'
+ testsuccess apt install foo
+ testsuccess apt source foo
+ testsuccess rm 'foo_0%3a0+0~0.dsc' 'foo_0+0~0.tar.xz'
+ testsuccess rm -r 'foo-0+0~0'
+
+ cd "$TMPWORKINGDIRECTORY" >/dev/null
+ mv 'aptarchive/pool/foo_0%3a0+0~0_all.deb' 'aptarchive/pool/foo_0+0~0_all.deb'
+ mv 'aptarchive/pool/foo_0%3a0+0~0.dsc' 'aptarchive/pool/foo_0+0~0.dsc'
+}
+
+runtest 'file'
+changetowebserver
+runtest 'http'
diff --git a/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages b/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages
new file mode 100755
index 0000000..09953e9
--- /dev/null
+++ b/test/integration/test-very-tight-loop-configure-with-unpacking-new-packages
@@ -0,0 +1,63 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+# the difference between version 3 and 4 is the new package 'ure' which
+# we have to unpack before we start configuring parts of the loop
+insertinstalledpackage 'libreoffice' 'amd64' '3' 'Depends: libreoffice-core (= 3)'
+insertinstalledpackage 'libreoffice-core' 'amd64' '3' 'Depends: libreoffice-common (>= 3)'
+insertinstalledpackage 'libreoffice-common' 'all' '3' 'Depends: libreoffice-style
+Breaks: libreoffice-core (>= 3+), libreoffice-core (<= 3~), libreoffice-style-galaxy (>= 3+), libreoffice-style-galaxy (<= 3~)'
+insertinstalledpackage 'libreoffice-style-galaxy' 'amd64' '3' 'Depends: libreoffice-core
+Provides: libreoffice-style'
+
+insertpackage 'sid' 'libreoffice' 'amd64' '4' 'Depends: libreoffice-core (= 4)'
+insertpackage 'sid' 'libreoffice-core' 'amd64' '4' 'Depends: libreoffice-common (>= 4)
+Breaks: libreoffice-common (<< 4), libreoffice-style-galaxy (<< 4)'
+insertpackage 'sid' 'libreoffice-common' 'all' '4' 'Depends: libreoffice-style, ure
+Breaks: libreoffice-core (>= 4+), libreoffice-core (<= 4~), libreoffice-style-galaxy (>= 4+), libreoffice-style-galaxy (<= 4~)'
+insertpackage 'sid' 'libreoffice-style-galaxy' 'amd64' '4' 'Depends: libreoffice-core
+Provides: libreoffice-style'
+insertpackage 'sid' 'ure' 'amd64' '4'
+
+setupaptarchive
+
+testequalor2 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ ure
+The following packages will be upgraded:
+ libreoffice libreoffice-common libreoffice-core libreoffice-style-galaxy
+4 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libreoffice [3] (4 sid [amd64]) []
+Inst libreoffice-style-galaxy [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-core [3] (4 sid [amd64]) [libreoffice-core:amd64 on libreoffice-common:amd64] [libreoffice-common:amd64 on libreoffice-core:amd64] [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-common [3] (4 sid [all]) []
+Inst ure (4 sid [amd64])
+Conf libreoffice (4 sid [amd64])
+Conf libreoffice-style-galaxy (4 sid [amd64])
+Conf libreoffice-core (4 sid [amd64])
+Conf libreoffice-common (4 sid [all])
+Conf ure (4 sid [amd64])' 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following NEW packages will be installed:
+ ure
+The following packages will be upgraded:
+ libreoffice libreoffice-common libreoffice-core libreoffice-style-galaxy
+4 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
+Inst libreoffice [3] (4 sid [amd64]) []
+Inst libreoffice-style-galaxy [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-core [3] (4 sid [amd64]) [libreoffice-common:amd64 on libreoffice-core:amd64] [libreoffice-common:amd64 on libreoffice-style-galaxy:amd64] [libreoffice-core:amd64 on libreoffice-common:amd64] [libreoffice-common:amd64 ]
+Inst libreoffice-common [3] (4 sid [all]) []
+Inst ure (4 sid [amd64])
+Conf libreoffice (4 sid [amd64])
+Conf libreoffice-style-galaxy (4 sid [amd64])
+Conf libreoffice-core (4 sid [amd64])
+Conf libreoffice-common (4 sid [all])
+Conf ure (4 sid [amd64])' aptget dist-upgrade -s
diff --git a/test/integration/test-xorg-break-providers b/test/integration/test-xorg-break-providers
new file mode 100755
index 0000000..59b564a
--- /dev/null
+++ b/test/integration/test-xorg-break-providers
@@ -0,0 +1,45 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture "i386"
+setupaptarchive
+
+# the new xserver-xorg-core breaks xserver-xorg-video-6
+# which both -intel (installed) and -vesa (not installed)
+# provided in their old version.
+# The test ensures that only -intel will be upgraded
+# (together with -core of course) and -vesa not touched.
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+The following additional packages will be installed:
+ xserver-xorg-video-intel
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget install xserver-xorg-core --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget upgrade --trivial-only
+
+testfailureequal 'Reading package lists...
+Building dependency tree...
+Calculating upgrade...
+The following packages will be upgraded:
+ xserver-xorg-core xserver-xorg-video-intel
+2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+Need to get 0 B/2992 kB of archives.
+After this operation, 24.6 kB of additional disk space will be used.
+E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only
diff --git a/test/interactive-helper/CMakeLists.txt b/test/interactive-helper/CMakeLists.txt
new file mode 100644
index 0000000..8e87643
--- /dev/null
+++ b/test/interactive-helper/CMakeLists.txt
@@ -0,0 +1,31 @@
+if(USE_SYSTEM_APTPKG)
+ find_library(aptpkg NAMES apt-pkg NO_PACKAGE_ROOT_PATH REQUIRED)
+ set(APTPKG_LIB "${aptpkg}")
+ # it isn't easy to link against -private, but that is by design
+ set(APTPRIVATE_LIB "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/libapt-private.so.0.0")
+ set(APTPRIVATE_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}")
+else()
+ set(APTPKG_LIB "apt-pkg")
+ set(APTPRIVATE_LIB "apt-private")
+ set(APTPRIVATE_INCLUDE_DIRS "")
+endif()
+
+add_executable(mthdcat mthdcat.cc)
+target_link_libraries(mthdcat ${APTPKG_LIB})
+add_executable(testdeb testdeb.cc)
+target_link_libraries(testdeb ${APTPKG_LIB})
+add_executable(extract-control extract-control.cc)
+target_link_libraries(extract-control ${APTPKG_LIB})
+add_executable(aptwebserver aptwebserver.cc)
+target_link_libraries(aptwebserver ${APTPKG_LIB} ${CMAKE_THREAD_LIBS_INIT})
+add_executable(aptdropprivs aptdropprivs.cc)
+target_link_libraries(aptdropprivs ${APTPKG_LIB})
+add_executable(test_fileutl test_fileutl.cc)
+target_link_libraries(test_fileutl ${APTPKG_LIB})
+add_executable(createdeb-cve-2020-27350 createdeb-cve-2020-27350.cc)
+add_executable(longest-dependency-chain longest-dependency-chain.cc)
+target_link_libraries(longest-dependency-chain ${APTPKG_LIB} ${APTPRIVATE_LIB})
+target_include_directories(longest-dependency-chain PRIVATE ${APTPRIVATE_INCLUDE_DIRS})
+
+add_library(noprofile SHARED libnoprofile.c)
+target_link_libraries(noprofile ${CMAKE_DL_LIBS})
diff --git a/test/interactive-helper/aptdropprivs.cc b/test/interactive-helper/aptdropprivs.cc
new file mode 100644
index 0000000..1cc04f3
--- /dev/null
+++ b/test/interactive-helper/aptdropprivs.cc
@@ -0,0 +1,27 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <unistd.h>
+
+int main(int const argc, const char * argv[])
+{
+ CommandLine::Args Args[] = {
+ {'c',"config-file",0,CommandLine::ConfigFile},
+ {'o',"option",0,CommandLine::ArbItem},
+ {0, "user", "APT::Sandbox::User", CommandLine::HasArg},
+ {0,0,0,0}
+ };
+
+ CommandLine CmdL(Args, _config);
+ if(CmdL.Parse(argc,argv) == false || DropPrivileges() == false)
+ {
+ _error->DumpErrors(std::cerr, GlobalError::DEBUG);
+ return 42;
+ }
+
+ return execv(CmdL.FileList[0], const_cast<char**>(CmdL.FileList));
+}
diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
new file mode 100644
index 0000000..a305811
--- /dev/null
+++ b/test/interactive-helper/aptwebserver.cc
@@ -0,0 +1,1091 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include "teestream.h"
+
+#include <cerrno>
+#include <csignal>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <dirent.h>
+#include <netinet/in.h>
+#include <regex.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <array>
+#include <algorithm>
+#include <fstream>
+#include <iostream>
+#include <list>
+#include <sstream>
+#include <string>
+#include <thread>
+#include <unordered_map>
+#include <vector>
+
+static std::string HTMLEncode(std::string encode) /*{{{*/
+{
+ constexpr std::array<std::array<char const *,2>,6> htmlencode = {{
+ {{ "&", "&amp;" }},
+ {{ "<", "&lt;" }},
+ {{ ">", "&gt;" }},
+ {{ "\"", "&quot;" }},
+ {{ "'", "&#x27;" }},
+ {{ "/", "&#x2F;" }},
+ }};
+ for (auto &&h: htmlencode)
+ encode = SubstVar(encode, h[0], h[1]);
+ return encode;
+}
+ /*}}}*/
+static std::string httpcodeToStr(int const httpcode) /*{{{*/
+{
+ switch (httpcode)
+ {
+ // Informational 1xx
+ case 100: return _config->Find("aptwebserver::httpcode::100", "100 Continue");
+ case 101: return _config->Find("aptwebserver::httpcode::101", "101 Switching Protocols");
+ // Successful 2xx
+ case 200: return _config->Find("aptwebserver::httpcode::200", "200 OK");
+ case 201: return _config->Find("aptwebserver::httpcode::201", "201 Created");
+ case 202: return _config->Find("aptwebserver::httpcode::202", "202 Accepted");
+ case 203: return _config->Find("aptwebserver::httpcode::203", "203 Non-Authoritative Information");
+ case 204: return _config->Find("aptwebserver::httpcode::204", "204 No Content");
+ case 205: return _config->Find("aptwebserver::httpcode::205", "205 Reset Content");
+ case 206: return _config->Find("aptwebserver::httpcode::206", "206 Partial Content");
+ // Redirections 3xx
+ case 300: return _config->Find("aptwebserver::httpcode::300", "300 Multiple Choices");
+ case 301: return _config->Find("aptwebserver::httpcode::301", "301 Moved Permanently");
+ case 302: return _config->Find("aptwebserver::httpcode::302", "302 Found");
+ case 303: return _config->Find("aptwebserver::httpcode::303", "303 See Other");
+ case 304: return _config->Find("aptwebserver::httpcode::304", "304 Not Modified");
+ case 305: return _config->Find("aptwebserver::httpcode::305", "305 Use Proxy");
+ case 307: return _config->Find("aptwebserver::httpcode::307", "307 Temporary Redirect");
+ case 308: return _config->Find("aptwebserver::httpcode::308", "308 Permanent Redirect");
+ // Client errors 4xx
+ case 400: return _config->Find("aptwebserver::httpcode::400", "400 Bad Request");
+ case 401: return _config->Find("aptwebserver::httpcode::401", "401 Unauthorized");
+ case 402: return _config->Find("aptwebserver::httpcode::402", "402 Payment Required");
+ case 403: return _config->Find("aptwebserver::httpcode::403", "403 Forbidden");
+ case 404: return _config->Find("aptwebserver::httpcode::404", "404 Not Found");
+ case 405: return _config->Find("aptwebserver::httpcode::405", "405 Method Not Allowed");
+ case 406: return _config->Find("aptwebserver::httpcode::406", "406 Not Acceptable");
+ case 407: return _config->Find("aptwebserver::httpcode::407", "407 Proxy Authentication Required");
+ case 408: return _config->Find("aptwebserver::httpcode::408", "408 Request Time-out");
+ case 409: return _config->Find("aptwebserver::httpcode::409", "409 Conflict");
+ case 410: return _config->Find("aptwebserver::httpcode::410", "410 Gone");
+ case 411: return _config->Find("aptwebserver::httpcode::411", "411 Length Required");
+ case 412: return _config->Find("aptwebserver::httpcode::412", "412 Precondition Failed");
+ case 413: return _config->Find("aptwebserver::httpcode::413", "413 Request Entity Too Large");
+ case 414: return _config->Find("aptwebserver::httpcode::414", "414 Request-URI Too Large");
+ case 415: return _config->Find("aptwebserver::httpcode::415", "415 Unsupported Media Type");
+ case 416: return _config->Find("aptwebserver::httpcode::416", "416 Requested range not satisfiable");
+ case 417: return _config->Find("aptwebserver::httpcode::417", "417 Expectation Failed");
+ case 418: return _config->Find("aptwebserver::httpcode::418", "418 I'm a teapot");
+ // Server error 5xx
+ case 500: return _config->Find("aptwebserver::httpcode::500", "500 Internal Server Error");
+ case 501: return _config->Find("aptwebserver::httpcode::501", "501 Not Implemented");
+ case 502: return _config->Find("aptwebserver::httpcode::502", "502 Bad Gateway");
+ case 503: return _config->Find("aptwebserver::httpcode::503", "503 Service Unavailable");
+ case 504: return _config->Find("aptwebserver::httpcode::504", "504 Gateway Time-out");
+ case 505: return _config->Find("aptwebserver::httpcode::505", "505 HTTP Version not supported");
+ }
+ std::string codeconf, code;
+ strprintf(codeconf, "aptwebserver::httpcode::%i", httpcode);
+ strprintf(code, "%i Unknown HTTP code", httpcode);
+ return _config->Find(codeconf, code);
+}
+ /*}}}*/
+static bool chunkedTransferEncoding(std::list<std::string> const &headers)/*{{{*/
+{
+ if (std::find(headers.begin(), headers.end(), "Transfer-Encoding: chunked") != headers.end())
+ return true;
+ if (_config->FindB("aptwebserver::chunked-transfer-encoding", false) == true)
+ return true;
+ return false;
+}
+ /*}}}*/
+static bool contentTypeSet(std::list<std::string> const &headers) /*{{{*/
+{
+ return std::any_of(headers.begin(), headers.end(), [](std::string const &h) { return APT::String::Startswith(h, "Content-Type:"); });
+}
+ /*}}}*/
+// contentTypeFromExtension /*{{{*/
+static std::string contentTypeFromExtension(std::string const &ext)
+{
+ auto t = _config->Find(std::string("aptwebserver::content-type::by-extension::").append(ext));
+ if (APT::String::Startswith(t, "text/"))
+ return t.append("; charset=utf-8");
+ return t;
+}
+ /*}}}*/
+static void addFileHeaders(std::list<std::string> &headers, FileFd &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == false)
+ {
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << data.FileSize();
+ headers.push_back(contentlength.str());
+ }
+ if (_config->FindB("aptwebserver::support::last-modified", true) == true)
+ {
+ std::string lastmodified("Last-Modified: ");
+ lastmodified.append(TimeRFC1123(data.ModificationTime(), false));
+ headers.push_back(lastmodified);
+ }
+ if (_config->FindB("aptwebserver::content-type::guess", true) &&
+ data.FileSize() != 0 &&
+ contentTypeSet(headers) == false)
+ {
+ std::string const name = data.Name();
+ std::string ext = flExtension(name);
+ if (name.empty() == false && ext.empty() == false && name != ext)
+ {
+ std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower);
+ auto const type = contentTypeFromExtension(ext);
+ if (type.empty() == false)
+ headers.push_back(std::string("Content-Type: ").append(type));
+ }
+ }
+}
+ /*}}}*/
+static void addDataHeaders(std::list<std::string> &headers, std::string &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == false)
+ {
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << data.size();
+ headers.push_back(contentlength.str());
+ }
+}
+ /*}}}*/
+static bool sendHead(std::ostream &log, int const client, int const httpcode, std::list<std::string> &headers)/*{{{*/
+{
+ std::string response("HTTP/1.1 ");
+ response.append(httpcodeToStr(httpcode));
+ headers.push_front(response);
+ _config->Set("APTWebserver::Last-Status-Code", httpcode);
+
+ std::stringstream buffer;
+ auto const empties = _config->FindVector("aptwebserver::empty-response-header");
+ for (auto const &e: empties)
+ buffer << e << ":" << std::endl;
+ _config->Dump(buffer, "aptwebserver::response-header", "%t: %v%n", false);
+ std::vector<std::string> addheaders = VectorizeString(buffer.str(), '\n');
+ for (std::vector<std::string>::const_iterator h = addheaders.begin(); h != addheaders.end(); ++h)
+ headers.push_back(*h);
+
+ std::string date("Date: ");
+ date.append(TimeRFC1123(time(NULL), false));
+ headers.push_back(date);
+
+ if (chunkedTransferEncoding(headers) == true)
+ headers.push_back("Transfer-Encoding: chunked");
+
+ log << ">>> RESPONSE to " << client << " >>>" << std::endl;
+ bool Success = true;
+ for (std::list<std::string>::const_iterator h = headers.begin();
+ Success == true && h != headers.end(); ++h)
+ {
+ Success &= FileFd::Write(client, h->c_str(), h->size());
+ if (Success == true)
+ Success &= FileFd::Write(client, "\r\n", 2);
+ log << *h << std::endl;
+ }
+ if (Success == true)
+ Success &= FileFd::Write(client, "\r\n", 2);
+ log << "<<<<<<<<<<<<<<<<" << std::endl;
+ return Success;
+}
+ /*}}}*/
+static bool sendFile(int const client, std::list<std::string> const &headers, FileFd &data)/*{{{*/
+{
+ bool Success = true;
+ bool const chunked = chunkedTransferEncoding(headers);
+ char buffer[500];
+ unsigned long long actual = 0;
+ while ((Success &= data.Read(buffer, sizeof(buffer), &actual)) == true)
+ {
+ if (actual == 0)
+ break;
+
+ if (chunked == true)
+ {
+ std::string size;
+ strprintf(size, "%llX\r\n", actual);
+ Success &= FileFd::Write(client, size.c_str(), size.size());
+ Success &= FileFd::Write(client, buffer, actual);
+ Success &= FileFd::Write(client, "\r\n", strlen("\r\n"));
+ }
+ else
+ Success &= FileFd::Write(client, buffer, actual);
+ }
+ if (chunked == true)
+ {
+ char const * const finish = "0\r\n\r\n";
+ Success &= FileFd::Write(client, finish, strlen(finish));
+ }
+ if (Success == false)
+ std::cerr << "SENDFILE:" << (chunked ? " CHUNKED" : "") << " READ/WRITE ERROR to " << client << std::endl;
+ return Success;
+}
+ /*}}}*/
+static bool sendData(int const client, std::list<std::string> const &headers, std::string const &data)/*{{{*/
+{
+ if (chunkedTransferEncoding(headers) == true)
+ {
+ unsigned long long const ullsize = data.length();
+ std::string size;
+ strprintf(size, "%llX\r\n", ullsize);
+ char const * const finish = "\r\n0\r\n\r\n";
+ if (FileFd::Write(client, size.c_str(), size.length()) == false ||
+ FileFd::Write(client, data.c_str(), ullsize) == false ||
+ FileFd::Write(client, finish, strlen(finish)) == false)
+ {
+ std::cerr << "SENDDATA: CHUNK WRITE ERROR to " << client << std::endl;
+ return false;
+ }
+ }
+ else if (FileFd::Write(client, data.c_str(), data.size()) == false)
+ {
+ std::cerr << "SENDDATA: WRITE ERROR to " << client << std::endl;
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
+static void sendError(std::ostream &log, int const client, int const httpcode, std::string const &request,/*{{{*/
+ bool const content, std::string const &error, std::list<std::string> &headers)
+{
+ auto const quotedCode = HTMLEncode(httpcodeToStr(httpcode));
+ std::string response("<!doctype html><html><head><title>");
+ response.append(quotedCode).append("</title><meta charset=\"utf-8\" /></head>");
+ response.append("<body><h1>").append(quotedCode).append("</h1>");
+ if (httpcode != 200)
+ response.append("<p><em>Error</em>: ");
+ else
+ response.append("<p><em>Success</em>: ");
+ if (error.empty() == false)
+ response.append(HTMLEncode(error));
+ else
+ response.append(quotedCode);
+ if (httpcode != 200)
+ response.append("</p>This error is a result of the request: <pre>");
+ else
+ response.append("The successfully executed operation was requested by: <pre>");
+ response.append(HTMLEncode(request)).append("</pre></body></html>");
+ if (httpcode != 200)
+ {
+ if (_config->FindB("aptwebserver::closeOnError", false) == true)
+ headers.push_back("Connection: close");
+ }
+ addDataHeaders(headers, response);
+
+ if (contentTypeSet(headers) == false)
+ headers.push_back("Content-Type: text/html; charset=utf-8");
+
+ sendHead(log, client, httpcode, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+static void sendSuccess(std::ostream &log, int const client, std::string const &request,
+ bool const content, std::string const &error, std::list<std::string> &headers)
+{
+ sendError(log, client, 200, request, content, error, headers);
+}
+ /*}}}*/
+static void sendRedirect(std::ostream &log, int const client, int const httpcode,/*{{{*/
+ std::string const &uri, std::string const &request, bool content)
+{
+ std::list<std::string> headers;
+ auto const quotedCode = HTMLEncode(httpcodeToStr(httpcode));
+ std::string response("<!doctype html><html><head><title>");
+ response.append(quotedCode).append("</title><meta charset=\"utf-8\" /></head>");
+ response.append("<body><h1>").append(quotedCode).append("</h1");
+ response.append("<p>You should be redirected to <em>").append(HTMLEncode(uri)).append("</em></p>");
+ response.append("This page is a result of the request: <pre>");
+ response.append(HTMLEncode(request)).append("</pre></body></html>");
+ addDataHeaders(headers, response);
+ std::string location("Location: ");
+ if (strncmp(uri.c_str(), "http://", 7) != 0 && strncmp(uri.c_str(), "https://", 8) != 0)
+ {
+ std::string const host = LookupTag(request, "Host");
+ unsigned int const httpsport = _config->FindI("aptwebserver::port::https", 4433);
+ std::string hosthttpsport;
+ strprintf(hosthttpsport, ":%u", httpsport);
+ if (host.find(hosthttpsport) != std::string::npos)
+ location.append("https://");
+ else
+ location.append("http://");
+ location.append(host).append("/");
+ if (strncmp("/home/", uri.c_str(), strlen("/home/")) == 0 && uri.find("/public_html/") != std::string::npos)
+ {
+ std::string homeuri = SubstVar(uri, "/home/", "~");
+ homeuri = SubstVar(homeuri, "/public_html/", "/");
+ location.append(homeuri);
+ }
+ else
+ location.append(uri);
+ }
+ else
+ location.append(uri);
+ headers.push_back(location);
+
+ if (contentTypeSet(headers) == false)
+ headers.push_back("Content-Type: text/html; charset=utf-8");
+
+ sendHead(log, client, httpcode, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+ /*}}}*/
+static int filter_hidden_files(const struct dirent *a) /*{{{*/
+{
+ if (a->d_name[0] == '.')
+ return 0;
+#ifdef _DIRENT_HAVE_D_TYPE
+ // if we have the d_type check that only files and dirs will be included
+ if (a->d_type != DT_UNKNOWN &&
+ a->d_type != DT_REG &&
+ a->d_type != DT_LNK && // this includes links to regular files
+ a->d_type != DT_DIR)
+ return 0;
+#endif
+ return 1;
+}
+static int grouped_alpha_case_sort(const struct dirent **a, const struct dirent **b) {
+#ifdef _DIRENT_HAVE_D_TYPE
+ if ((*a)->d_type == DT_DIR && (*b)->d_type == DT_DIR);
+ else if ((*a)->d_type == DT_DIR && (*b)->d_type == DT_REG)
+ return -1;
+ else if ((*b)->d_type == DT_DIR && (*a)->d_type == DT_REG)
+ return 1;
+ else
+#endif
+ {
+ struct stat f_prop; //File's property
+ stat((*a)->d_name, &f_prop);
+ int const amode = f_prop.st_mode;
+ stat((*b)->d_name, &f_prop);
+ int const bmode = f_prop.st_mode;
+ if (S_ISDIR(amode) && S_ISDIR(bmode));
+ else if (S_ISDIR(amode))
+ return -1;
+ else if (S_ISDIR(bmode))
+ return 1;
+ }
+ return strcasecmp((*a)->d_name, (*b)->d_name);
+}
+ /*}}}*/
+static void sendDirectoryListing(std::ostream &log, int const client, std::string const &dir,/*{{{*/
+ std::string const &request, bool content, std::list<std::string> &headers)
+{
+ struct dirent **namelist;
+ int const counter = scandir(dir.c_str(), &namelist, filter_hidden_files, grouped_alpha_case_sort);
+ if (counter == -1)
+ {
+ sendError(log, client, 500, request, content, "scandir failed", headers);
+ return;
+ }
+
+ std::ostringstream listing;
+ std::string const quotedDir = HTMLEncode(dir);
+ listing << "<!doctype html><html><head><title>Index of " << quotedDir << "</title><meta charset=\"utf-8\" />"
+ << "<style type=\"text/css\"><!-- td {padding: 0.02em 0.5em 0.02em 0.5em;}"
+ << "tr:nth-child(even){background-color:#dfdfdf;}"
+ << "h1, td:nth-child(3){text-align:center;}"
+ << "table {margin-left:auto;margin-right:auto;} --></style>"
+ << "</head>" << std::endl
+ << "<body><h1>Index of " << quotedDir << "</h1>" << std::endl
+ << "<table><tr><th>#</th><th>Name</th><th>Size</th><th>Last-Modified</th></tr>" << std::endl;
+ if (dir != "./")
+ listing << "<tr><td>d</td><td><a href=\"..\">Parent Directory</a></td><td>-</td><td>-</td></tr>";
+ for (int i = 0; i < counter; ++i) {
+ struct stat fs;
+ std::string filename(dir);
+ filename.append("/").append(namelist[i]->d_name);
+ stat(filename.c_str(), &fs);
+ std::string const quotedHref = QuoteString(namelist[i]->d_name, "\"\\/#?");
+ std::string const quotedName = HTMLEncode(namelist[i]->d_name);
+ bool const isDir = S_ISDIR(fs.st_mode);
+ listing << "<tr><td>" << (isDir ? 'd' : 'f') << "</td>"
+ << "<td><a href=\"./" << quotedHref << (isDir ? "/" : "") <<"\">" << quotedName << "</a></td>"
+ << "<td>" << (isDir ? "-" : SizeToStr(fs.st_size).append("B")) << "</td>"
+ << "<td>" << TimeRFC1123(fs.st_mtime, true) << "</td></tr>\n";
+ }
+ listing << "</table></body></html>" << std::endl;
+
+ if (contentTypeSet(headers) == false)
+ headers.push_back("Content-Type: text/html; charset=utf-8");
+
+ std::string response(listing.str());
+ addDataHeaders(headers, response);
+ sendHead(log, client, 200, headers);
+ if (content == true)
+ sendData(client, headers, response);
+}
+ /*}}}*/
+static bool parseFirstLine(std::ostream &log, int const client, std::string const &request,/*{{{*/
+ std::string &filename, std::string &params, bool &sendContent,
+ bool &closeConnection, std::list<std::string> &headers)
+{
+ if (strncmp(request.c_str(), "HEAD ", 5) == 0)
+ sendContent = false;
+ if (strncmp(request.c_str(), "GET ", 4) != 0)
+ {
+ sendError(log, client, 501, request, true, "", headers);
+ return false;
+ }
+
+ size_t const lineend = request.find('\n');
+ size_t filestart = request.find(' ');
+ for (; request[filestart] == ' '; ++filestart);
+ size_t fileend = request.rfind(' ', lineend);
+ if (lineend == std::string::npos || filestart == std::string::npos ||
+ fileend == std::string::npos || filestart == fileend)
+ {
+ sendError(log, client, 500, request, sendContent, "Filename can't be extracted", headers);
+ return false;
+ }
+
+ size_t httpstart = fileend;
+ for (; request[httpstart] == ' '; ++httpstart);
+ if (strncmp(request.c_str() + httpstart, "HTTP/1.1\r", 9) == 0)
+ closeConnection = strcasecmp(LookupTag(request, "Connection", "Keep-Alive").c_str(), "Keep-Alive") != 0;
+ else if (strncmp(request.c_str() + httpstart, "HTTP/1.0\r", 9) == 0)
+ closeConnection = strcasecmp(LookupTag(request, "Connection", "Keep-Alive").c_str(), "close") == 0;
+ else
+ {
+ sendError(log, client, 500, request, sendContent, "Not an HTTP/1.{0,1} request", headers);
+ return false;
+ }
+
+ filename = request.substr(filestart, fileend - filestart);
+ if (filename.find(' ') != std::string::npos)
+ {
+ sendError(log, client, 500, request, sendContent, "Filename contains an unencoded space", headers);
+ return false;
+ }
+
+ std::string host = LookupTag(request, "Host", "");
+ if (host.empty() == true)
+ {
+ // RFC 2616 §14.23 requires Host
+ sendError(log, client, 400, request, sendContent, "Host header is required", headers);
+ return false;
+ }
+ host = "http://" + host;
+
+ // Proxies require absolute uris, so this is a simple proxy-fake option
+ std::string const absolute = _config->Find("aptwebserver::request::absolute", "uri,path");
+ if (strncmp(host.c_str(), filename.c_str(), host.length()) == 0 && APT::String::Startswith(filename, "/_config/") == false)
+ {
+ if (absolute.find("uri") == std::string::npos)
+ {
+ sendError(log, client, 400, request, sendContent, "Request is absoluteURI, but configured to not accept that", headers);
+ return false;
+ }
+
+ // strip the host from the request to make it an absolute path
+ filename.erase(0, host.length());
+
+ std::string const authConf = _config->Find("aptwebserver::proxy-authorization", "");
+ std::string auth = LookupTag(request, "Proxy-Authorization", "");
+ if (authConf.empty() != auth.empty())
+ {
+ if (auth.empty())
+ sendError(log, client, 407, request, sendContent, "Proxy requires authentication", headers);
+ else
+ sendError(log, client, 407, request, sendContent, "Client wants to authenticate to proxy, but proxy doesn't need it", headers);
+ return false;
+ }
+ if (authConf.empty() == false)
+ {
+ char const * const basic = "Basic ";
+ if (strncmp(auth.c_str(), basic, strlen(basic)) == 0)
+ {
+ auth.erase(0, strlen(basic));
+ if (auth != authConf)
+ {
+ sendError(log, client, 407, request, sendContent, "Proxy-Authentication doesn't match", headers);
+ return false;
+ }
+ }
+ else
+ {
+ std::list<std::string> headers;
+ headers.push_back("Proxy-Authenticate: Basic");
+ sendError(log, client, 407, request, sendContent, "Unsupported Proxy-Authentication Scheme", headers);
+ return false;
+ }
+ }
+ }
+ else if (absolute.find("path") == std::string::npos && APT::String::Startswith(filename, "/_config/") == false)
+ {
+ sendError(log, client, 400, request, sendContent, "Request is absolutePath, but configured to not accept that", headers);
+ return false;
+ }
+
+ if (APT::String::Startswith(filename, "/_config/") == false)
+ {
+ std::string const authConf = _config->Find("aptwebserver::authorization", "");
+ std::string auth = LookupTag(request, "Authorization", "");
+ if (authConf.empty() != auth.empty())
+ {
+ if (auth.empty())
+ sendError(log, client, 401, request, sendContent, "Server requires authentication", headers);
+ else
+ sendError(log, client, 401, request, sendContent, "Client wants to authenticate to server, but server doesn't need it", headers);
+ return false;
+ }
+ if (authConf.empty() == false)
+ {
+ char const * const basic = "Basic ";
+ if (strncmp(auth.c_str(), basic, strlen(basic)) == 0)
+ {
+ auth.erase(0, strlen(basic));
+ if (auth != authConf)
+ {
+ sendError(log, client, 401, request, sendContent, "Authentication doesn't match", headers);
+ return false;
+ }
+ }
+ else
+ {
+ headers.push_back("WWW-Authenticate: Basic");
+ sendError(log, client, 401, request, sendContent, "Unsupported Authentication Scheme", headers);
+ return false;
+ }
+ }
+ }
+
+ size_t paramspos = filename.find('?');
+ if (paramspos != std::string::npos)
+ {
+ params = filename.substr(paramspos + 1);
+ filename.erase(paramspos);
+ }
+ else if (APT::String::Startswith(filename, "/_config/"))
+ {
+ filename.erase(0, 1);
+ return true;
+ }
+
+ filename = DeQuoteString(filename);
+
+ // this is not a secure server, but at least prevent the obvious …
+ if (filename.empty() == true || filename[0] != '/' ||
+ strncmp(filename.c_str(), "//", 2) == 0 ||
+ filename.find_first_of("\r\n\t\f\v") != std::string::npos ||
+ filename.find("/../") != std::string::npos)
+ {
+ std::list<std::string> headers;
+ sendError(log, client, 400, request, sendContent, "Filename contains illegal character (sequence)", headers);
+ return false;
+ }
+
+ // nuke the first character which is a / as we assured above
+ filename.erase(0, 1);
+ if (filename.empty() == true)
+ filename = "./";
+ // support ~user/ uris to refer to /home/user/public_html/ as a kind-of special directory
+ else if (filename[0] == '~')
+ {
+ // /home/user is actually not entirely correct, but good enough for now
+ size_t dashpos = filename.find('/');
+ if (dashpos != std::string::npos)
+ {
+ std::string home = filename.substr(1, filename.find('/') - 1);
+ std::string pubhtml = filename.substr(filename.find('/') + 1);
+ filename = "/home/" + home + "/public_html/" + pubhtml;
+ }
+ else
+ filename = "/home/" + filename.substr(1) + "/public_html/";
+ }
+
+ // if no filename is given, but a valid directory see if we can use an index or
+ // have to resort to a autogenerated directory listing later on
+ if (DirectoryExists(filename) == true)
+ {
+ std::string const directoryIndex = _config->Find("aptwebserver::directoryindex");
+ if (directoryIndex.empty() == false && directoryIndex == flNotDir(directoryIndex) &&
+ RealFileExists(filename + directoryIndex) == true)
+ filename += directoryIndex;
+ }
+
+ return true;
+}
+ /*}}}*/
+static bool handleOnTheFlyReconfiguration(std::ostream &log, int const client,/*{{{*/
+ std::string const &request, std::vector<std::string> const &EncodedParts, std::list<std::string> &headers)
+{
+ size_t const pcount = EncodedParts.size();
+ std::vector<std::string> parts(pcount);
+ for (size_t i = 0; i < pcount; ++i)
+ parts[i] = DeQuoteString(EncodedParts[i]);
+ if (pcount == 4 && parts[1] == "set")
+ {
+ _config->Set(parts[2], parts[3]);
+ sendSuccess(log, client, request, true, "Option '" + parts[2] + "' was set to '" + parts[3] + "'!", headers);
+ return true;
+ }
+ else if (pcount == 4 && parts[1] == "find")
+ {
+ std::string response = _config->Find(parts[2], parts[3]);
+ addDataHeaders(headers, response);
+ if (contentTypeSet(headers) == false)
+ headers.push_back("Content-Type: text/plain; charset=utf-8");
+ sendHead(log, client, 200, headers);
+ sendData(client, headers, response);
+ return true;
+ }
+ else if (pcount == 3 && parts[1] == "find")
+ {
+ if (_config->Exists(parts[2]) == true)
+ {
+ std::string response = _config->Find(parts[2]);
+ addDataHeaders(headers, response);
+ if (contentTypeSet(headers) == false)
+ headers.push_back("Content-Type: text/plain; charset=utf-8");
+ sendHead(log, client, 200, headers);
+ sendData(client, headers, response);
+ return true;
+ }
+ sendError(log, client, 404, request, true, "Requested Configuration option doesn't exist", headers);
+ return false;
+ }
+ else if (pcount == 3 && parts[1] == "clear")
+ {
+ _config->Clear(parts[2]);
+ sendSuccess(log, client, request, true, "Option '" + parts[2] + "' was cleared.", headers);
+ return true;
+ }
+
+ sendError(log, client, 400, request, true, "Unknown on-the-fly configuration request", headers);
+ return false;
+}
+ /*}}}*/
+static void * handleClient(int const client, size_t const id) /*{{{*/
+{
+ auto logfilepath = _config->FindFile("aptwebserver::logfiles");
+ if (logfilepath.empty() == false)
+ strprintf(logfilepath, "%s.client-%lu.log", logfilepath.c_str(), id);
+ else
+ logfilepath = "/dev/null";
+ std::ofstream logfile(logfilepath);
+ basic_teeostream<char> log(std::clog, logfile);
+
+ log << "ACCEPT client " << client << std::endl;
+ bool closeConnection = false;
+ while (closeConnection == false)
+ {
+ std::vector<std::string> messages;
+ if (ReadMessages(client, messages) == false)
+ break;
+
+ std::list<std::string> headers;
+ for (std::vector<std::string>::const_iterator m = messages.begin();
+ m != messages.end() && closeConnection == false; ++m) {
+ // if we announced a closing in previous response, do the close now
+ if (std::find(headers.begin(), headers.end(), std::string("Connection: close")) != headers.end())
+ {
+ closeConnection = true;
+ break;
+ }
+ headers.clear();
+
+ log << ">>> REQUEST from " << client << " >>>" << std::endl << *m
+ << std::endl << "<<<<<<<<<<<<<<<<" << std::endl;
+ std::string filename;
+ std::string params;
+ bool sendContent = true;
+ if (parseFirstLine(log, client, *m, filename, params, sendContent, closeConnection, headers) == false)
+ continue;
+
+ // special webserver command request
+ if (filename.length() > 1 && filename[0] == '_')
+ {
+ auto const parts = VectorizeString(filename, '/');
+ if (parts[0] == "_config")
+ {
+ handleOnTheFlyReconfiguration(log, client, *m, parts, headers);
+ continue;
+ }
+ }
+
+ // string replacements in the requested filename
+ ::Configuration::Item const *Replaces = _config->Tree("aptwebserver::redirect::replace");
+ if (Replaces != NULL)
+ {
+ std::string redirect = "/" + filename;
+ for (::Configuration::Item *I = Replaces->Child; I != NULL; I = I->Next)
+ redirect = SubstVar(redirect, I->Tag, I->Value);
+ if (redirect.empty() == false && redirect[0] == '/')
+ redirect.erase(0,1);
+ if (redirect != filename)
+ {
+ sendRedirect(log, client, _config->FindI("aptwebserver::redirect::httpcode", 301), redirect, *m, sendContent);
+ continue;
+ }
+ }
+
+ ::Configuration::Item const *Overwrite = _config->Tree("aptwebserver::overwrite");
+ if (Overwrite != NULL)
+ {
+ for (::Configuration::Item *I = Overwrite->Child; I != NULL; I = I->Next)
+ {
+ regex_t *pattern = new regex_t;
+ int const res = regcomp(pattern, I->Tag.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
+ if (res != 0)
+ {
+ char error[300];
+ regerror(res, pattern, error, sizeof(error));
+ sendError(log, client, 500, *m, sendContent, error, headers);
+ continue;
+ }
+ if (regexec(pattern, filename.c_str(), 0, 0, 0) == 0)
+ {
+ filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", flNotDir(filename));
+ if (filename.find("/") == std::string::npos)
+ {
+ auto directory = _config->Find("aptwebserver::overwrite::" + I->Tag + "::directory", flNotFile(filename));
+ filename = flCombine(directory, filename);
+ }
+ if (filename.empty() == false && filename[0] == '/')
+ filename.erase(0,1);
+ if (filename.empty())
+ filename = "./";
+ regfree(pattern);
+ break;
+ }
+ regfree(pattern);
+ }
+ }
+
+ // automatic retry can be tested with this
+ {
+ int failrequests = _config->FindI("aptwebserver::failrequest::" + filename, 0);
+ if (failrequests != 0)
+ {
+ --failrequests;
+ _config->Set(("aptwebserver::failrequest::" + filename).c_str(), failrequests);
+ sendError(log, client, _config->FindI("aptwebserver::failrequest", 400), *m, sendContent, "Server is configured to fail this file.", headers);
+ continue;
+ }
+ }
+
+ // deal with the request
+ unsigned int const httpsport = _config->FindI("aptwebserver::port::https", 4433);
+ std::string hosthttpsport;
+ strprintf(hosthttpsport, ":%u", httpsport);
+ if (_config->FindB("aptwebserver::support::http", true) == false &&
+ LookupTag(*m, "Host").find(hosthttpsport) == std::string::npos)
+ {
+ sendError(log, client, 400, *m, sendContent, "HTTP disabled, all requests must be HTTPS", headers);
+ continue;
+ }
+ else if (RealFileExists(filename) == true)
+ {
+ FileFd data(filename, FileFd::ReadOnly);
+ std::string condition = LookupTag(*m, "If-Modified-Since", "");
+ if (_config->FindB("aptwebserver::support::modified-since", true) == true && condition.empty() == false)
+ {
+ time_t cache;
+ if (RFC1123StrToTime(condition, cache) == true &&
+ cache >= data.ModificationTime())
+ {
+ sendHead(log, client, 304, headers);
+ continue;
+ }
+ }
+
+ if (_config->FindB("aptwebserver::support::range", true) == true)
+ condition = LookupTag(*m, "Range", "");
+ else
+ condition.clear();
+ if (condition.empty() == false && strncmp(condition.c_str(), "bytes=", 6) == 0)
+ {
+ std::string ranges = ',' + _config->Find("aptwebserver::response-header::Accept-Ranges") + ',';
+ ranges.erase(std::remove(ranges.begin(), ranges.end(), ' '), ranges.end());
+ if (ranges.find(",bytes,") == std::string::npos)
+ {
+ // we handle it as an error here because we are a test server - a real one should just ignore it
+ sendError(log, client, 400, *m, sendContent, "Client does range requests we don't support", headers);
+ continue;
+ }
+
+ time_t cache;
+ std::string ifrange;
+ if (_config->FindB("aptwebserver::support::if-range", true) == true)
+ ifrange = LookupTag(*m, "If-Range", "");
+ bool validrange = (ifrange.empty() == true ||
+ (RFC1123StrToTime(ifrange, cache) == true &&
+ cache == data.ModificationTime()));
+
+ // FIXME: support multiple byte-ranges (APT clients do not do this)
+ if (condition.find(',') == std::string::npos)
+ {
+ size_t start = 6;
+ unsigned long long filestart = strtoull(condition.c_str() + start, NULL, 10);
+ // FIXME: no support for last-byte-pos being not the end of the file (APT clients do not do this)
+ size_t dash = condition.find('-') + 1;
+ unsigned long long fileend = strtoull(condition.c_str() + dash, NULL, 10);
+ unsigned long long filesize = data.FileSize();
+ if ((fileend == 0 || (fileend == filesize && fileend >= filestart)) &&
+ validrange == true)
+ {
+ if (filesize > filestart)
+ {
+ data.Skip(filestart);
+ // make sure to send content-range before conent-length
+ // as regression test for LP: #1445239
+ std::ostringstream contentrange;
+ contentrange << "Content-Range: bytes " << filestart << "-"
+ << filesize - 1 << "/" << filesize;
+ headers.push_back(contentrange.str());
+ std::ostringstream contentlength;
+ contentlength << "Content-Length: " << (filesize - filestart);
+ headers.push_back(contentlength.str());
+ sendHead(log, client, 206, headers);
+ if (sendContent == true)
+ sendFile(client, headers, data);
+ continue;
+ }
+ else
+ {
+ if (_config->FindB("aptwebserver::support::content-range", true) == true)
+ {
+ std::ostringstream contentrange;
+ contentrange << "Content-Range: bytes */" << filesize;
+ headers.push_back(contentrange.str());
+ }
+ sendError(log, client, 416, *m, sendContent, "", headers);
+ continue;
+ }
+ }
+ }
+ }
+
+ addFileHeaders(headers, data);
+ sendHead(log, client, 200, headers);
+ if (sendContent == true)
+ sendFile(client, headers, data);
+ }
+ else if (DirectoryExists(filename) == true)
+ {
+ if (filename[filename.length()-1] == '/')
+ sendDirectoryListing(log, client, filename, *m, sendContent, headers);
+ else
+ sendRedirect(log, client, 301, filename.append("/"), *m, sendContent);
+ }
+ else
+ sendError(log, client, 404, *m, sendContent, "", headers);
+ }
+
+ // if we announced a closing in the last response, do the close now
+ if (std::find(headers.begin(), headers.end(), std::string("Connection: close")) != headers.end())
+ closeConnection = true;
+
+ if (_error->PendingError() == true)
+ break;
+ _error->DumpErrors(std::cerr);
+ }
+ _error->DumpErrors(std::cerr);
+ close(client);
+ log << "CLOSE client " << client << std::endl;
+ return NULL;
+}
+ /*}}}*/
+static void loadMimeTypesFile(std::string const &filename) /*{{{*/
+{
+ if (FileExists(filename) == false)
+ return;
+
+ std::string line;
+ FileFd mimetypes(filename, FileFd::ReadOnly);
+ while (mimetypes.ReadLine(line))
+ {
+ if (line.empty() || line[0] == '#' || line.find_first_not_of(" \t\r") == std::string::npos)
+ continue;
+ std::transform(line.begin(), line.end(), line.begin(), [](char const c) { return c == ' ' ? '\t' : c; });
+ auto l = VectorizeString(line, '\t');
+ l.erase(std::remove_if(l.begin(), l.end(), [](std::string const &f) { return f.empty(); }), l.end());
+ if (l.size() < 2)
+ continue;
+ for (size_t i = 1; i < l.size(); ++i)
+ if (l[i].empty() == false)
+ _config->CndSet(std::string("aptwebserver::content-type::by-extension::").append(l[i]).c_str(), l[0]);
+ }
+}
+ /*}}}*/
+
+int main(int const argc, const char * argv[])
+{
+ CommandLine::Args Args[] = {
+ {'p', "port", "aptwebserver::port", CommandLine::HasArg},
+ {0, "request-absolute", "aptwebserver::request::absolute", CommandLine::HasArg},
+ {0, "authorization", "aptwebserver::authorization", CommandLine::HasArg},
+ {0, "proxy-authorization", "aptwebserver::proxy-authorization", CommandLine::HasArg},
+ {0, "logfiles", "aptwebserver::logfiles", CommandLine::HasArg},
+ {'c',"config-file",0,CommandLine::ConfigFile},
+ {'o',"option",0,CommandLine::ArbItem},
+ {0,0,0,0}
+ };
+
+ CommandLine CmdL(Args, _config);
+ if(CmdL.Parse(argc,argv) == false)
+ {
+ _error->DumpErrors();
+ exit(1);
+ }
+
+ if (_config->FindB("aptwebserver::content-type::mime.types", true))
+ {
+ if (_config->FindB("aptwebserver::content-type::mime.types::apt", true))
+ loadMimeTypesFile("/etc/apt/mime.types");
+
+ if (_config->FindB("aptwebserver::content-type::mime.types::home", true))
+ {
+ auto const home = getenv("HOME");
+ if (home != nullptr)
+ loadMimeTypesFile(flCombine(home, ".mime.types"));
+ }
+
+ if (_config->FindB("aptwebserver::content-type::mime.types::etc", true))
+ loadMimeTypesFile("/etc/mime.types");
+ }
+
+ // create socket, bind and listen to it {{{
+ // ignore SIGPIPE, this can happen on write() if the socket closes connection
+ signal(SIGPIPE, SIG_IGN);
+ // ignore worker processes exiting, as we don't want to cause them to stay
+ // around as zombies because we're busy.
+ signal(SIGCHLD, SIG_IGN);
+
+ int sock = socket(AF_INET6, SOCK_STREAM, 0);
+ if(sock < 0)
+ {
+ _error->Errno("aptwerbserver", "Couldn't create socket");
+ _error->DumpErrors(std::cerr);
+ return 1;
+ }
+
+ int port = _config->FindI("aptwebserver::port", 8080);
+
+ // ensure that we accept all connections: v4 or v6
+ int const iponly = 0;
+ setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &iponly, sizeof(iponly));
+ // to not linger on an address
+ int const enable = 1;
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(enable));
+
+ struct sockaddr_in6 locAddr;
+ memset(&locAddr, 0, sizeof(locAddr));
+ locAddr.sin6_family = AF_INET6;
+ locAddr.sin6_port = htons(port);
+ locAddr.sin6_addr = in6addr_any;
+
+ if (bind(sock, (struct sockaddr*) &locAddr, sizeof(locAddr)) < 0)
+ {
+ _error->Errno("aptwerbserver", "Couldn't bind");
+ _error->DumpErrors(std::cerr);
+ return 2;
+ }
+
+ if (port == 0)
+ {
+ struct sockaddr_in6 addr;
+ socklen_t addrlen = sizeof(sockaddr_in6);
+ if (getsockname(sock, (struct sockaddr*) &addr, &addrlen) != 0)
+ _error->Errno("getsockname", "Could not get chosen port number");
+ else
+ port = ntohs(addr.sin6_port);
+ }
+ std::string const portfilename = _config->Find("aptwebserver::portfile", "");
+ if (portfilename.empty() == false)
+ {
+ FileFd portfile(portfilename, FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ std::string portcontent;
+ strprintf(portcontent, "%d", port);
+ portfile.Write(portcontent.c_str(), portcontent.size());
+ portfile.Sync();
+ }
+ _config->Set("aptwebserver::port::http", port);
+
+ FileFd pidfile;
+ if (_config->FindB("aptwebserver::fork", false) == true)
+ {
+ std::string const pidfilename = _config->Find("aptwebserver::pidfile", "aptwebserver.pid");
+ int const pidfilefd = GetLock(pidfilename);
+ if (pidfilefd < 0 || pidfile.OpenDescriptor(pidfilefd, FileFd::WriteOnly) == false)
+ {
+ _error->Errno("aptwebserver", "Couldn't acquire lock on pidfile '%s'", pidfilename.c_str());
+ _error->DumpErrors(std::cerr);
+ return 3;
+ }
+
+ pid_t child = fork();
+ if (child < 0)
+ {
+ _error->Errno("aptwebserver", "Forking failed");
+ _error->DumpErrors(std::cerr);
+ return 4;
+ }
+ else if (child != 0)
+ {
+ // successfully forked: ready to serve!
+ std::string pidcontent;
+ strprintf(pidcontent, "%d", child);
+ pidfile.Write(pidcontent.c_str(), pidcontent.size());
+ pidfile.Sync();
+ if (_error->PendingError() == true)
+ {
+ _error->DumpErrors(std::cerr);
+ return 5;
+ }
+ std::cout << "Successfully forked as " << child << std::endl;
+ return 0;
+ }
+ }
+
+ std::clog << "Serving ANY file on port: " << port << std::endl;
+
+ int const workers = _config->FindI("aptwebserver::workers", SOMAXCONN);
+ std::cerr << "WORKERS: " << workers << std::endl;
+ listen(sock, workers);
+ /*}}}*/
+
+ _config->CndSet("aptwebserver::response-header::Server", "APT webserver");
+ _config->CndSet("aptwebserver::response-header::Accept-Ranges", "bytes");
+ _config->CndSet("aptwebserver::directoryindex", "index.html");
+ APT::Configuration::getCompressors();
+
+ size_t id = 0;
+ while (true)
+ {
+ int client = accept(sock, NULL, NULL);
+ if (client == -1)
+ {
+ if (errno == EINTR)
+ continue;
+ _error->Errno("accept", "Couldn't accept client on socket %d", sock);
+ _error->DumpErrors(std::cerr);
+ return 6;
+ }
+
+ std::thread t(handleClient, client, ++id);
+ t.detach();
+ }
+ pidfile.Close();
+
+ return 0;
+}
diff --git a/test/interactive-helper/createdeb-cve-2020-27350.cc b/test/interactive-helper/createdeb-cve-2020-27350.cc
new file mode 100644
index 0000000..84d1cfa
--- /dev/null
+++ b/test/interactive-helper/createdeb-cve-2020-27350.cc
@@ -0,0 +1,369 @@
+#include <config.h>
+
+#include <cerrno>
+#include <cstdint>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+struct Header
+{
+ char Name[16];
+ char MTime[12];
+ char UID[6];
+ char GID[6];
+ char Mode[8];
+ char Size[10];
+ char Magic[2];
+};
+
+struct TarHeader
+{
+ char Name[100];
+ char Mode[8];
+ char UserID[8];
+ char GroupID[8];
+ char Size[12];
+ char MTime[12];
+ char Checksum[8];
+ char LinkFlag;
+ char LinkName[100];
+ char MagicNumber[8];
+ char UserName[32];
+ char GroupName[32];
+ char Major[8];
+ char Minor[8];
+};
+
+// Call `write` and check the result.
+static void write_chk(int fd, const void *buf, size_t count)
+{
+ const ssize_t wr = write(fd, buf, count);
+ if (wr < 0)
+ {
+ const int err = errno;
+ fprintf(stderr, "Write failed: %s\n", strerror(err));
+ exit(EXIT_FAILURE);
+ }
+ if ((size_t)wr != count)
+ {
+ fprintf(stderr, "Incomplete write.\n");
+ exit(EXIT_FAILURE);
+ }
+}
+
+// Triggers a negative integer overflow at https://git.launchpad.net/ubuntu/+source/apt/tree/apt-pkg/contrib/arfile.cc?h=applied/ubuntu/focal-updates&id=4c264e60b524855b211751e1632ba48526f6b44d#n116:
+//
+// Memb->Size -= Len;
+//
+// Due to the integer overflow, the value of Memb->Size is 0xFFFFFFFFFFFFFFFF.
+// This leads to an out-of-memory error at https://git.launchpad.net/ubuntu/+source/python-apt/tree/python/arfile.cc?h=applied/ubuntu/focal-updates&id=0f7cc93acdb51d943114f1cd79002288c4ca4d24#n602:
+//
+// char* value = new char[member->Size];
+//
+// The out-of-memory error causes aptd to crash.
+static void createdeb_crash(const int fd)
+{
+ // Magic number
+ static const char *magic = "!<arch>\n";
+ write_chk(fd, magic, strlen(magic));
+
+ struct Header h;
+ memset(&h, 0, sizeof(h));
+
+ memcpy(h.Name, "control.tar ", sizeof(h.Name));
+ write_chk(fd, &h, sizeof(h));
+
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "data.tar ", sizeof(h.Name));
+ write_chk(fd, &h, sizeof(h));
+
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "#1/13 ", sizeof(h.Name));
+ strcpy(h.Size, "12");
+ write_chk(fd, &h, sizeof(h));
+ write_chk(fd, "debian-binary", 13);
+}
+
+// Triggers an infinite loop in `ARArchive::LoadHeaders()`.
+// The bug is due to the use of `strtoul` at https://git.launchpad.net/ubuntu/+source/apt/tree/apt-pkg/contrib/strutl.cc?h=applied/ubuntu/focal-updates&id=4c264e60b524855b211751e1632ba48526f6b44d#n1169:
+//
+// Res = strtoul(S,&End,Base);
+//
+// The problem is that `strtoul` accepts negative numbers. We exploit that here by setting the size string to "-60".
+static void createdeb_loop(const int fd)
+{
+ // Magic number
+ static const char *magic = "!<arch>\n";
+ write_chk(fd, magic, strlen(magic));
+
+ struct Header h;
+ memset(&h, 0, sizeof(h));
+
+ memcpy(h.Name, "#1/20 ", sizeof(h.Name));
+ strcpy(h.Size, "-60");
+ write_chk(fd, &h, sizeof(h));
+
+ char buf[20];
+ memset(buf, 0, sizeof(buf));
+ write_chk(fd, buf, sizeof(buf));
+}
+
+// Leaks a file descriptor in `debfile_new()`:
+//
+// https://git.launchpad.net/python-apt/tree/python/arfile.cc?h=2.0.0#n588
+//
+// If the .deb file is invalid then the function returns without deleting
+// `self`, which means that the file descriptor isn't closed.
+static void createdeb_leakfd(const int fd)
+{
+ // Magic number
+ static const char *magic = "!<arch>\n";
+ write_chk(fd, magic, strlen(magic));
+
+ struct Header h;
+ memset(&h, 0, sizeof(h));
+
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "data.tar ", sizeof(h.Name));
+ write_chk(fd, &h, sizeof(h));
+}
+
+static void set_checksum(unsigned char block[512])
+{
+ struct TarHeader *tar = (struct TarHeader *)&block[0];
+ memset(tar->Checksum, ' ', sizeof(tar->Checksum));
+ uint32_t sum = 0;
+ for (int i = 0; i < 512; i++)
+ {
+ sum += block[i];
+ }
+ snprintf(tar->Checksum, sizeof(tar->Checksum), "%o", sum);
+}
+static void base256_encode(char *Str, unsigned long long Num, unsigned int Len)
+{
+ Str += Len;
+ while (Len-- > 0) {
+ *--Str = static_cast<char>(Num & 0xff);
+ Num >>= 8;
+ }
+
+ *Str |= 0x80; // mark as base256
+}
+
+// Create a deb with a control.tar that contains a too large file or link name (GNU extension)
+static void createdeb_bigtarfilelength(const int fd, int flag, unsigned long long size = 64llu * 1024 * 1024 + 1)
+{
+ // Magic number
+ static const char *magic = "!<arch>\n";
+ write_chk(fd, magic, strlen(magic));
+
+ struct Header h;
+ memset(&h, ' ', sizeof(h));
+ memcpy(h.Name, "debian-binary/ ", sizeof(h.Name));
+ h.MTime[0] = '0';
+ h.UID[0] = '0';
+ h.GID[0] = '0';
+ memcpy(h.Mode, "644", 3);
+ h.Size[0] = '0';
+ memcpy(h.Magic, "`\n", 2);
+
+ write_chk(fd, &h, sizeof(h));
+
+ memset(&h, ' ', sizeof(h));
+ memcpy(h.Name, "data.tar/ ", sizeof(h.Name));
+ h.MTime[0] = '0';
+ h.UID[0] = '0';
+ h.GID[0] = '0';
+ memcpy(h.Mode, "644", 3);
+ h.Size[0] = '0';
+ memcpy(h.Magic, "`\n", 2);
+
+ write_chk(fd, &h, sizeof(h));
+
+ memset(&h, ' ', sizeof(h));
+ memcpy(h.Name, "control.tar/ ", sizeof(h.Name));
+ h.MTime[0] = '0';
+ h.UID[0] = '0';
+ h.GID[0] = '0';
+ memcpy(h.Mode, "644", 3);
+ memcpy(h.Size, "512", 3);
+ memcpy(h.Magic, "`\n", 2);
+
+ write_chk(fd, &h, sizeof(h));
+ union
+ {
+ struct TarHeader t;
+ unsigned char buf[512];
+ } t;
+ for (unsigned int i = 0; i < sizeof(t.buf); i++)
+ t.buf[i] = '7';
+ memcpy(t.t.Name, "control\0 ", 16);
+ memcpy(t.t.UserName, "userName", 8);
+ memcpy(t.t.GroupName, "thisIsAGroupNamethisIsAGroupName", 32);
+ memcpy(t.t.UserID, "0", 2);
+ memcpy(t.t.GroupID, "0", 2);
+ memcpy(t.t.MTime, "0", 2);
+ memcpy(t.t.MagicNumber, "0", 2);
+ memcpy(t.t.Major, "0", 2);
+ memcpy(t.t.Minor, "0", 2);
+ t.t.LinkFlag = flag;
+ base256_encode(t.t.Size, size, sizeof(t.t.Size));
+ memset(t.t.Checksum, ' ', sizeof(t.t.Checksum));
+
+ unsigned long sum = 0;
+ for (unsigned int i = 0; i < sizeof(t.buf); i++)
+ sum += t.buf[i];
+
+ int written = sprintf(t.t.Checksum, "%lo", sum);
+ for (unsigned int i = written; i < sizeof(t.t.Checksum); i++)
+ t.t.Checksum[i] = ' ';
+
+ write_chk(fd, t.buf, sizeof(t.buf));
+}
+
+static void createtar(const int fd)
+{
+ union
+ {
+ struct TarHeader t;
+ char buf[512];
+ } t;
+ for (size_t i = 0; i < sizeof(t.buf); i++)
+ t.buf[i] = '7';
+ memcpy(t.t.Name, "unterminatedName", 16);
+ memcpy(t.t.UserName, "userName", 8);
+ memcpy(t.t.GroupName, "thisIsAGroupNamethisIsAGroupName", 32);
+ memcpy(t.t.UserID, "0", 2);
+ memcpy(t.t.GroupID, "0", 2);
+ memcpy(t.t.MTime, "0", 2);
+ memcpy(t.t.MagicNumber, "0", 2);
+ memcpy(t.t.Major, "0", 2);
+ memcpy(t.t.Minor, "0", 2);
+ t.t.LinkFlag = 'X'; // I AM BROKEN
+ memcpy(t.t.Size, "000000000000", sizeof(t.t.Size));
+ memset(t.t.Checksum, ' ', sizeof(t.t.Checksum));
+
+ unsigned long sum = 0;
+ for (size_t i = 0; i < sizeof(t.buf); i++)
+ sum += t.buf[i];
+
+ int written = sprintf(t.t.Checksum, "%lo", sum);
+ for (size_t i = written; i < sizeof(t.t.Checksum); i++)
+ t.t.Checksum[i] = ' ';
+ write_chk(fd, t.buf, sizeof(t.buf));
+}
+
+static void createdeb_test(const int fd)
+{
+ // Magic number
+ static const char *magic = "!<arch>\n";
+ write_chk(fd, magic, strlen(magic));
+
+ struct Header h;
+
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "data.tar ", sizeof(h.Name));
+ write_chk(fd, &h, sizeof(h));
+
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "debian-binary ", sizeof(h.Name));
+ strcpy(h.Size, "4");
+ write_chk(fd, &h, sizeof(h));
+ static const char *debian_binary = "2.0\n";
+ write_chk(fd, debian_binary, strlen(debian_binary));
+
+ static const char *control =
+ "Architecture: all\n"
+ "Package: kevsh\n\n";
+ memset(&h, 0, sizeof(h));
+ memcpy(h.Name, "control.tar ", sizeof(h.Name));
+ snprintf(h.Size, sizeof(h.Size), "%ld", (size_t)512 + 512);
+ write_chk(fd, &h, sizeof(h));
+
+ unsigned char block[512];
+ memset(block, 0, sizeof(block));
+ struct TarHeader *tar = (struct TarHeader *)&block[0];
+ strcpy(tar->Name, "control");
+ strcpy(tar->Mode, "644");
+ snprintf(tar->Size, sizeof(tar->Size), "%lo", strlen(control));
+ set_checksum(block);
+ write_chk(fd, block, sizeof(block));
+
+ memset(block, 0, sizeof(block));
+ strcpy((char *)block, control);
+ write_chk(fd, block, sizeof(block));
+}
+
+int main(int argc, char *argv[])
+{
+ if (argc != 3)
+ {
+ const char *progname = argc > 0 ? argv[0] : "a.out";
+ fprintf(
+ stderr,
+ "usage: %s <mode> <filename>\n"
+ "modes: loop, segv, leakfd\n",
+ progname);
+ return EXIT_FAILURE;
+ }
+
+ const char *mode = argv[1];
+ const char *filename = argv[2];
+
+ const int fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 00644);
+ if (fd < 0)
+ {
+ const int err = errno;
+ fprintf(stderr, "Could not open %s: %s\n", filename, strerror(err));
+ return EXIT_FAILURE;
+ }
+
+ if (strcmp(mode, "crash") == 0)
+ {
+ createdeb_crash(fd);
+ }
+ else if (strcmp(mode, "loop") == 0)
+ {
+ createdeb_loop(fd);
+ }
+ else if (strcmp(mode, "leakfd") == 0)
+ {
+ createdeb_leakfd(fd);
+ }
+ else if (strcmp(mode, "long-name") == 0)
+ {
+ createdeb_bigtarfilelength(fd, 'L');
+ }
+ else if (strcmp(mode, "long-link") == 0)
+ {
+ createdeb_bigtarfilelength(fd, 'K');
+ }
+ else if (strcmp(mode, "long-control") == 0)
+ {
+ createdeb_bigtarfilelength(fd, '0');
+ }
+ else if (strcmp(mode, "too-long-control") == 0)
+ {
+ createdeb_bigtarfilelength(fd, '0', 128llu * 1024 * 1024 * 1024 + 1);
+ }
+ else if (strcmp(mode, "github-111") == 0)
+ {
+ createtar(fd);
+ }
+ else if (strcmp(mode, "test") == 0)
+ {
+ createdeb_test(fd);
+ }
+ else
+ {
+ fprintf(stderr, "Mode not recognized: %s\n", mode);
+ }
+
+ close(fd);
+ return EXIT_SUCCESS;
+}
diff --git a/test/interactive-helper/extract-control.cc b/test/interactive-helper/extract-control.cc
new file mode 100644
index 0000000..a19e038
--- /dev/null
+++ b/test/interactive-helper/extract-control.cc
@@ -0,0 +1,45 @@
+#include <config.h>
+
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <iostream>
+#include <string>
+#include <unistd.h>
+
+using namespace std;
+
+static bool ExtractMember(const char *File,const char *Member)
+{
+ FileFd Fd(File,FileFd::ReadOnly);
+ debDebFile Deb(Fd);
+ if(_error->PendingError() == true)
+ return false;
+
+ debDebFile::MemControlExtract Extract(Member);
+ if (Extract.Read(Deb) == false)
+ return false;
+
+ if (Extract.Control == 0)
+ return true;
+
+ return write(STDOUT_FILENO,Extract.Control,Extract.Length) != -1;
+}
+
+int main(int argc, const char *argv[])
+{
+ if (argc < 2)
+ {
+ cerr << "Need two arguments, a .deb and the control member" << endl;
+ return 100;
+ }
+
+ if (ExtractMember(argv[1],argv[2]) == false)
+ {
+ _error->DumpErrors();
+ return 100;
+ }
+
+ return 0;
+}
diff --git a/test/interactive-helper/libnoprofile.c b/test/interactive-helper/libnoprofile.c
new file mode 100644
index 0000000..b26ec2a
--- /dev/null
+++ b/test/interactive-helper/libnoprofile.c
@@ -0,0 +1,45 @@
+#define _GNU_SOURCE
+#undef _FORTIFY_SOURCE
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <unistd.h>
+#include <stdio.h>
+
+int vprintf(const char *format, va_list ap) {
+ if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
+ return 0;
+
+ static int (*func_fprintf)(const char *format, va_list ap) = NULL;
+ if (func_fprintf == NULL)
+ func_fprintf = (int (*)(const char *format, va_list ap))dlsym(RTLD_NEXT, "vprintf");
+
+ return func_fprintf(format, ap);
+}
+int printf(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ int res = vprintf(format, ap);
+ va_end(ap);
+ return res;
+}
+
+int vfprintf(FILE *stream, const char *format, va_list ap) {
+ if (strncmp(format, "profiling:", strlen("profiling:")) == 0)
+ return 0;
+
+ static int (*func_vfprintf)(FILE * stream, const char *format, va_list ap) = NULL;
+ if (func_vfprintf == NULL)
+ func_vfprintf = (int (*)(FILE * stream, const char *format, va_list ap))dlsym(RTLD_NEXT, "vfprintf");
+
+ return func_vfprintf(stream, format, ap);
+}
+
+int fprintf(FILE *stream, const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+ int res = vfprintf(stream, format, ap);
+ va_end(ap);
+ return res;
+}
diff --git a/test/interactive-helper/longest-dependency-chain.cc b/test/interactive-helper/longest-dependency-chain.cc
new file mode 100644
index 0000000..3da722a
--- /dev/null
+++ b/test/interactive-helper/longest-dependency-chain.cc
@@ -0,0 +1,72 @@
+#include <config.h>
+
+#include <apt-pkg/cachefile.h>
+#include <apt-pkg/pkgsystem.h>
+#include <apt-private/private-cmndline.h>
+
+#include <iostream>
+
+static bool ShowHelp(CommandLine &) /*{{{*/
+{
+ std::cout <<
+ "Usage: longest-dependecy-chain [options]\n"
+ "\n"
+ "Tries to find the longest dependency chain available in the data\n"
+ "assuming an empty status file, no conflicts, all or-group members\n"
+ "are followed and discovery order matters. In other words:\n"
+ "The found length might very well be too short and not realistic.\n"
+ "It is also not implemented very intelligently, so it runs forever.\n";
+ return true;
+}
+ /*}}}*/
+static std::vector<aptDispatchWithHelp> GetCommands() /*{{{*/
+{
+ return {
+ {nullptr, nullptr, nullptr}
+ };
+}
+ /*}}}*/
+static size_t findLongestInstallChain(pkgDepCache &Cache, pkgCache::PkgIterator const &Pkg, std::vector<bool> &installed)/*{{{*/
+{
+ if (installed[Pkg->ID])
+ return 0;
+ installed[Pkg->ID] = true;
+
+ auto const Ver = Cache.GetCandidateVersion(Pkg);
+ if (Ver.end())
+ return 0;
+
+ size_t maxdepth = 0;
+ for (auto D = Ver.DependsList(); not D.end(); ++D)
+ if (D->Type == pkgCache::Dep::Depends ||
+ D->Type == pkgCache::Dep::PreDepends ||
+ D->Type == pkgCache::Dep::Recommends ||
+ D->Type == pkgCache::Dep::Suggests)
+ maxdepth = std::max(maxdepth, findLongestInstallChain(Cache, D.TargetPkg(), installed));
+ return maxdepth + 1;
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ CommandLine CmdL;
+ auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_SORTPKG, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
+ _config->Set("dir::state::status", "/dev/null");
+
+ pkgCacheFile CacheFile;
+ CacheFile.InhibitActionGroups(true);
+ pkgDepCache * const Cache = CacheFile.GetDepCache();
+ if (unlikely(Cache == nullptr))
+ return DispatchCommandLine(CmdL, Cmds);
+
+ size_t maxdepth = 0;
+ for (auto P = Cache->PkgBegin(); not P.end(); ++P)
+ {
+ std::vector<bool> installed(Cache->Head().PackageCount, false);
+ auto const depth = findLongestInstallChain(*Cache, P, installed);
+ std::cout << depth << ' ' << P.FullName() << '\n';
+ maxdepth = std::max(maxdepth, depth);
+ }
+
+ return 0;
+}
+ /*}}}*/
diff --git a/test/interactive-helper/mthdcat.cc b/test/interactive-helper/mthdcat.cc
new file mode 100644
index 0000000..2961b20
--- /dev/null
+++ b/test/interactive-helper/mthdcat.cc
@@ -0,0 +1,22 @@
+/* Usage, mthdcat < cmds | methods/mthd
+ All this does is cat a file into the method without closing the FD when
+ the file ends */
+
+#include <config.h>
+
+#include <unistd.h>
+
+int main()
+{
+ char Buffer[4096];
+
+ while (1)
+ {
+ int Res = read(STDIN_FILENO,Buffer,sizeof(Buffer));
+ if (Res <= 0)
+ while (1) sleep(100);
+ if (write(STDOUT_FILENO,Buffer,Res) != Res)
+ break;
+ }
+ return 0;
+}
diff --git a/test/interactive-helper/networkless-install-fixes/README b/test/interactive-helper/networkless-install-fixes/README
new file mode 100644
index 0000000..e7ee2b0
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/README
@@ -0,0 +1,5 @@
+
+Those tests aim at making the networkless install timeout
+quicker, see
+https://wiki.ubuntu.com/NetworklessInstallationFixes
+for details
diff --git a/test/interactive-helper/networkless-install-fixes/sources.test.list b/test/interactive-helper/networkless-install-fixes/sources.test.list
new file mode 100644
index 0000000..380e180
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/sources.test.list
@@ -0,0 +1,25 @@
+
+# archive.ubuntu.com
+deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
+deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
+
+deb http://archive.ubuntu.com/ubuntu/ hardy universe
+deb-src http://archive.ubuntu.com/ubuntu/ hardy universe
+
+deb http://archive.ubuntu.com/ubuntu/ hardy-updates universe
+deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates universe
+
+# security.ubuntu.com
+deb http://security.ubuntu.com/ubuntu/ hardy-security main restricted
+deb-src http://security.ubuntu.com/ubuntu/ hardy-security main restricted
+
+deb http://security.ubuntu.com/ubuntu/ hardy-security universe
+deb-src http://security.ubuntu.com/ubuntu/ hardy-security universe
+
+
+# archive.canonical.com
+deb http://archive.canonical.com/ubuntu/ hardy-partner universe
+deb-src http://archive.canonical.com/ubuntu/ hardy-partner universe
diff --git a/test/interactive-helper/networkless-install-fixes/test.sh b/test/interactive-helper/networkless-install-fixes/test.sh
new file mode 100755
index 0000000..809d467
--- /dev/null
+++ b/test/interactive-helper/networkless-install-fixes/test.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+OPTS="-o Dir::Etc::sourcelist=./sources.test.list -o Acquire::http::timeout=20"
+
+# setup
+unset http_proxy
+iptables --flush
+
+echo "No network at all"
+ifdown eth0
+time apt-get update $OPTS 2>&1 |grep system
+ifup eth0
+echo ""
+
+echo "no working DNS (port 53 DROP)"
+iptables -A OUTPUT -p udp --dport 53 -j DROP
+time apt-get update $OPTS 2>&1 |grep system
+iptables --flush
+echo ""
+
+echo "DNS but no access to archive.ubuntu.com (port 80 DROP)"
+iptables -A OUTPUT -p tcp --dport 80 -j DROP
+time apt-get update $OPTS 2>&1 |grep system
+iptables --flush
+echo ""
diff --git a/test/interactive-helper/rpmver.cc b/test/interactive-helper/rpmver.cc
new file mode 100644
index 0000000..c1a0d79
--- /dev/null
+++ b/test/interactive-helper/rpmver.cc
@@ -0,0 +1,118 @@
+#include <config.h>
+
+#include <apt-pkg/debversion.h>
+#include <cctype>
+#include <cstdio>
+#include <cstdlib>
+#include <rpm/misc.h>
+#include <rpm/rpmio.h>
+
+#define xisdigit(x) isdigit(x)
+#define xisalpha(x) isalpha(x)
+#define xisalnum(x) (isdigit(x) || isalpha(x))
+
+using namespace std;
+
+int rpmvercmp(const char * a, const char * b)
+{
+ char * str1, * str2;
+ char * one, * two;
+ int isnum;
+
+ /* easy comparison to see if versions are identical */
+ if (!strcmp(a, b)) return 0;
+
+ str1 = (char *)alloca(strlen(a) + 1);
+ str2 = (char *)alloca(strlen(b) + 1);
+
+ strcpy(str1, a);
+ strcpy(str2, b);
+
+ one = str1;
+ two = str2;
+
+ /* loop through each version segment of str1 and str2 and compare them */
+ while (*one && *two) {
+ while (*one && !xisalnum(*one)) one++;
+ while (*two && !xisalnum(*two)) two++;
+
+ str1 = one;
+ str2 = two;
+
+ /* grab first completely alpha or completely numeric segment */
+ /* leave one and two pointing to the start of the alpha or numeric */
+ /* segment and walk str1 and str2 to end of segment */
+ if (xisdigit(*str1)) {
+ while (*str1 && xisdigit(*str1)) str1++;
+ while (*str2 && xisdigit(*str2)) str2++;
+ isnum = 1;
+ } else {
+ while (*str1 && xisalpha(*str1)) str1++;
+ while (*str2 && xisalpha(*str2)) str2++;
+ isnum = 0;
+ }
+
+ /* save character at the end of the alpha or numeric segment */
+ /* so that they can be restored after the comparison */
+ char oldch1 = *str1;
+ *str1 = '\0';
+ char oldch2 = *str2;
+ *str2 = '\0';
+
+ /* take care of the case where the two version segments are */
+ /* different types: one numeric, the other alpha (i.e. empty) */
+ if (one == str1) return -1; /* arbitrary */
+ if (two == str2) return 1;
+
+ if (isnum) {
+ /* this used to be done by converting the digit segments */
+ /* to ints using atoi() - it's changed because long */
+ /* digit segments can overflow an int - this should fix that. */
+
+ /* throw away any leading zeros - it's a number, right? */
+ while (*one == '0') one++;
+ while (*two == '0') two++;
+
+ /* whichever number has more digits wins */
+ if (strlen(one) > strlen(two)) return 1;
+ if (strlen(two) > strlen(one)) return -1;
+ }
+
+ /* strcmp will return which one is greater - even if the two */
+ /* segments are alpha or if they are numeric. don't return */
+ /* if they are equal because there might be more segments to */
+ /* compare */
+ int rc = strcmp(one, two);
+ if (rc) return rc;
+
+ /* restore character that was replaced by null above */
+ *str1 = oldch1;
+ one = str1;
+ *str2 = oldch2;
+ two = str2;
+ }
+
+ /* this catches the case where all numeric and alpha segments have */
+ /* compared identically but the segment sepparating characters were */
+ /* different */
+ if ((!*one) && (!*two)) return 0;
+
+ /* whichever version still has characters left over wins */
+ if (!*one) return -1; else return 1;
+}
+
+int main(int argc,const char *argv[])
+{
+ printf("%i\n",strcmp(argv[1],argv[2]));
+
+ printf("'%s' <> '%s': ",argv[1],argv[2]);
+ printf("rpm: %i deb: %i\n",rpmvercmp(argv[1],argv[2]),
+ debVS.CmpFragment(argv[1],argv[1]+strlen(argv[1]),
+ argv[2],argv[2]+strlen(argv[2])));
+
+ printf("'%s' <> '%s': ",argv[2],argv[1]);
+ printf("rpm: %i deb: %i\n",rpmvercmp(argv[2],argv[1]),
+ debVS.CmpFragment(argv[2],argv[2]+strlen(argv[2]),
+ argv[1],argv[1]+strlen(argv[1])));
+ return 0;
+}
diff --git a/test/interactive-helper/teestream.h b/test/interactive-helper/teestream.h
new file mode 100644
index 0000000..058717a
--- /dev/null
+++ b/test/interactive-helper/teestream.h
@@ -0,0 +1,62 @@
+#ifndef APT_HELPER_TEESTREAM_H
+#define APT_HELPER_TEESTREAM_H
+
+/* 'basic' implementation of a streambuf which passes the output
+ to two 'real' streambufs emulating '| tee' on the shell
+
+ The main use is streaming debug output to std::clog as well as
+ a logfile easily, so don't expect that to be a bulletproof
+ implementation. */
+
+#include <apt-pkg/macros.h>
+#include <iostream>
+
+template <typename CharT, typename Traits = std::char_traits<CharT>
+> class basic_teebuf: public std::basic_streambuf<CharT, Traits>
+{
+public:
+ basic_teebuf(std::basic_streambuf<CharT, Traits> * const sb1,
+ std::basic_streambuf<CharT, Traits> * const sb2)
+ : s1(sb1), s2(sb2) {}
+protected:
+ virtual std::streamsize xsputn(const CharT* s, std::streamsize c) APT_OVERRIDE
+ {
+ return s2->sputn(s, s1->sputn(s, c));
+ }
+ // overflow is the fallback of sputc which is non-virtual
+ typedef typename Traits::int_type int_type;
+ virtual int_type overflow(int_type ch = Traits::eof()) APT_OVERRIDE
+ {
+ auto const eof = Traits::eof();
+ if (Traits::eq_int_type(ch, Traits::eof()) == true)
+ return eof;
+
+ auto const r1 = s1->sputc(Traits::to_char_type(ch));
+ auto const r2 = s2->sputc(Traits::to_char_type(ch));
+ return Traits::eq_int_type(r1, eof) ? r1: r2;
+ }
+ virtual void imbue(const std::locale& loc) APT_OVERRIDE
+ {
+ s1->pubimbue(loc);
+ s2->pubimbue(loc);
+ }
+ virtual int sync() APT_OVERRIDE
+ {
+ auto const r1 = s1->pubsync();
+ auto const r2 = s2->pubsync();
+ return r1 == 0 ? r2 : r1;
+ }
+private:
+ std::basic_streambuf<CharT, Traits> * const s1;
+ std::basic_streambuf<CharT, Traits> * const s2;
+};
+template <typename CharT, typename Traits = std::char_traits<CharT>
+> class basic_teeostream: public std::basic_ostream<CharT, Traits>
+{
+public:
+ basic_teeostream(std::basic_ostream<CharT, Traits> &o1, std::basic_ostream<CharT, Traits> &o2) :
+ std::basic_ostream<CharT, Traits>(&tbuf), tbuf(o1.rdbuf(), o2.rdbuf()) {}
+private:
+ basic_teebuf<CharT, Traits> tbuf;
+};
+#endif
diff --git a/test/interactive-helper/test_fileutl.cc b/test/interactive-helper/test_fileutl.cc
new file mode 100644
index 0000000..edc699e
--- /dev/null
+++ b/test/interactive-helper/test_fileutl.cc
@@ -0,0 +1,46 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <cstdlib>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <iostream>
+#include <string>
+
+static void callsystem(std::string const &call)
+{
+ auto ret = system(call.c_str());
+ if (WIFEXITED(ret) == false || WEXITSTATUS(ret) != 0)
+ _error->Error("Calling %s failed!", call.c_str());
+}
+
+int main(int, char ** argv)
+{
+ auto const pid = getpid();
+ std::string ls;
+ strprintf(ls, "ls -l /proc/%d/fd", pid);
+ callsystem(ls);
+ FileFd t;
+ t.Open(argv[1], FileFd::ReadOnly, FileFd::Extension);
+ callsystem(ls);
+ char buf[1024];
+ unsigned long long act;
+ while (t.Read(buf, sizeof(buf), &act))
+ if (act == 0)
+ break;
+ callsystem(ls);
+ t.Seek(5);
+ callsystem(ls);
+ t.Close();
+ callsystem(ls);
+ auto const ret = _error->PendingError();
+ _error->DumpErrors();
+ return ret;
+}
diff --git a/test/interactive-helper/test_udevcdrom.cc b/test/interactive-helper/test_udevcdrom.cc
new file mode 100644
index 0000000..9ccdfdb
--- /dev/null
+++ b/test/interactive-helper/test_udevcdrom.cc
@@ -0,0 +1,23 @@
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+
+#include <cassert>
+#include <cstddef>
+#include <iostream>
+#include <string>
+#include <vector>
+
+int main()
+{
+ pkgUdevCdromDevices c;
+ assert(c.Dlopen());
+
+ std::vector<CdromDevice> l;
+ l = c.Scan();
+ assert(l.empty() == false);
+ for (size_t i = 0; i < l.size(); ++i)
+ std::cerr << l[i].DeviceName << " "
+ << l[i].Mounted << " "
+ << l[i].MountPath << std::endl;
+}
diff --git a/test/interactive-helper/testdeb.cc b/test/interactive-helper/testdeb.cc
new file mode 100644
index 0000000..0bb24a5
--- /dev/null
+++ b/test/interactive-helper/testdeb.cc
@@ -0,0 +1,51 @@
+#include <config.h>
+
+#include <apt-pkg/arfile.h>
+#include <apt-pkg/debfile.h>
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/extracttar.h>
+#include <apt-pkg/fileutl.h>
+
+#include <iostream>
+#include <string>
+
+class NullStream : public pkgDirStream
+{
+ public:
+ virtual bool DoItem(Item &/*Itm*/, int &/*Fd*/) APT_OVERRIDE {return true;};
+};
+
+static bool Test(const char *File)
+{
+ FileFd Fd(File,FileFd::ReadOnly);
+ debDebFile Deb(Fd);
+
+ if (_error->PendingError() == true)
+ return false;
+
+ // Get the archive member and positition the file
+ const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz");
+ if (Member == 0)
+ return false;
+
+ // Extract it.
+ ExtractTar Tar(Deb.GetFile(),Member->Size, "gzip");
+ NullStream Dir;
+ if (Tar.Go(Dir) == false)
+ return false;
+
+ return true;
+}
+
+int main(int argc, const char *argv[])
+{
+ if (argc != 2) {
+ std::cout << "One parameter expected - given " << argc << std::endl;
+ return 100;
+ }
+
+ Test(argv[1]);
+ _error->DumpErrors();
+ return 0;
+}
diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
new file mode 100644
index 0000000..6bbe409
--- /dev/null
+++ b/test/libapt/CMakeLists.txt
@@ -0,0 +1,53 @@
+if (WITH_TESTS)
+ set(PROJECT_TEST_LIBRARIES apt-private)
+ find_path(GTEST_SRCPATH src/gtest.cc
+ /usr/src/googletest/googletest
+ /usr/src/googletest
+ /usr/src/gtest
+ )
+ find_package(GTest)
+ set(GTEST_DEPENDENCIES)
+
+ if(NOT GTEST_FOUND AND EXISTS ${GTEST_SRCPATH})
+ include(ExternalProject)
+ ExternalProject_Add(gtest PREFIX ./gtest
+ SOURCE_DIR ${GTEST_SRCPATH}
+ INSTALL_COMMAND true)
+
+ link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
+ link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build/lib)
+
+ set(GTEST_LIBRARIES "-lgtest")
+ set(GTEST_DEPENDENCIES "gtest")
+ set(GTEST_FOUND TRUE)
+ find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_SRCPATH}/include)
+
+ message(STATUS "Found GTest at ${GTEST_SRCPATH}, headers at ${GTEST_INCLUDE_DIRS}")
+ endif()
+
+ if (NOT GTEST_FOUND)
+ message(FATAL_ERROR "Could not find GTest")
+ endif()
+
+
+ # gtest produces some warnings with the set of warnings we activate,
+ # so disable the offending warnings while compiling tests for now
+ add_optional_compile_options(Wno-undef)
+ add_optional_compile_options(Wno-ctor-dtor-privacy)
+ # Do not force override for gtest, gtest is missing override specifiers
+ add_optional_compile_options(Wno-suggest-override)
+
+ # Definition of the C++ files used to build the test binary - note that this
+ # is expanded at CMake time, so you have to rerun cmake if you add or remove
+ # a file (you can just run cmake . in the build directory)
+ file(GLOB files gtest_runner.cc *-helpers.cc *_test.cc)
+ add_executable(lib${PROJECT_NAME}_test ${files})
+ target_include_directories(lib${PROJECT_NAME}_test PRIVATE ${GTEST_INCLUDE_DIRS})
+ target_link_libraries(lib${PROJECT_NAME}_test ${GTEST_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${PROJECT_TEST_LIBRARIES})
+ if (GTEST_DEPENDENCIES)
+ add_dependencies(lib${PROJECT_NAME}_test ${GTEST_DEPENDENCIES})
+ endif()
+ add_test(NAME ${PROJECT_NAME}Tests
+ COMMAND lib${PROJECT_NAME}_test
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
diff --git a/test/libapt/acqprogress_test.cc b/test/libapt/acqprogress_test.cc
new file mode 100644
index 0000000..d4596c8
--- /dev/null
+++ b/test/libapt/acqprogress_test.cc
@@ -0,0 +1,178 @@
+#include <config.h>
+#include <apt-pkg/acquire-item.h>
+#include <apt-pkg/acquire.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/hashes.h>
+#include <apt-private/acqprogress.h>
+#include <gtest/gtest.h>
+#include <sstream>
+#include <string>
+
+class TestItem: public pkgAcquire::Item
+{
+public:
+ explicit TestItem(pkgAcquire * const Acq) : pkgAcquire::Item(Acq) {}
+
+ virtual std::string DescURI() const APT_OVERRIDE { return ""; }
+ virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
+
+};
+
+TEST(AcqProgress, IMSHit)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc hit;
+ hit.URI = "http://example.org/file";
+ hit.Description = "Example File from example.org";
+ hit.ShortDesc = "Example File";
+ TestItem hitO(&Acq);
+ hit.Owner = &hitO;
+
+ EXPECT_EQ("", out.str());
+ Stat.IMSHit(hit);
+ EXPECT_EQ("Hit:1 Example File from example.org\n", out.str());
+ Stat.IMSHit(hit);
+ EXPECT_EQ("Hit:1 Example File from example.org\n"
+ "Hit:1 Example File from example.org\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Hit:1 Example File from example.org\n"
+ "Hit:1 Example File from example.org\n", out.str());
+}
+TEST(AcqProgress, FetchNoFileSize)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org\n", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org\n"
+ "Get:1 Example File from example.org\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Get:1 Example File from example.org\n"
+ "Get:1 Example File from example.org\n", out.str());
+}
+TEST(AcqProgress, FetchFileSize)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n", out.str());
+ fetchO.FileSize = 42;
+ Stat.Fetch(fetch);
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
+ "Get:1 Example File from example.org [42 B]\n", out.str());
+ Stat.Stop();
+ EXPECT_EQ("Get:1 Example File from example.org [100 B]\n"
+ "Get:1 Example File from example.org [42 B]\n", out.str());
+}
+TEST(AcqProgress, Fail)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ Stat.Start();
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetchO.Status = pkgAcquire::Item::StatIdle;
+ fetch.Owner = &fetchO;
+
+ EXPECT_EQ("", out.str());
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n", out.str());
+ fetchO.Status = pkgAcquire::Item::StatDone;
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n", out.str());
+ fetchO.Status = pkgAcquire::Item::StatError;
+ fetchO.ErrorText = "An error test!";
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+ _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
+ fetchO.Status = pkgAcquire::Item::StatDone;
+ Stat.Fail(fetch);
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n"
+ "Ign:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+ _config->Set("Acquire::Progress::Ignore::ShowErrorText", true);
+ Stat.Stop();
+ EXPECT_EQ("Ign:1 Example File from example.org\n"
+ "Ign:1 Example File from example.org\n"
+ "Err:1 Example File from example.org\n"
+ " An error test!\n"
+ "Ign:1 Example File from example.org\n"
+ " An error test!\n", out.str());
+}
+TEST(AcqProgress, Pulse)
+{
+ std::ostringstream out;
+ unsigned int width = 80;
+ AcqTextStatus Stat(out, width, 0);
+ _config->Set("APT::Sandbox::User", ""); // ensure we aren't sandboxing
+
+ pkgAcquire Acq(&Stat);
+ pkgAcquire::ItemDesc fetch;
+ fetch.URI = "http://example.org/file";
+ fetch.Description = "Example File from example.org";
+ fetch.ShortDesc = "Example File";
+ TestItem fetchO(&Acq);
+ fetchO.FileSize = 100;
+ fetchO.Status = pkgAcquire::Item::StatFetching;
+ fetch.Owner = &fetchO;
+
+ // make screen smaller and bigger again while running
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]", out.str());
+ width = 8;
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]"
+ "\r "
+ "\r0% [Work", out.str());
+ width = 80;
+ EXPECT_TRUE(Stat.Pulse(&Acq));
+ EXPECT_EQ("\r0% [Working]"
+ "\r "
+ "\r0% [Work"
+ "\r0% [Working]", out.str());
+}
diff --git a/test/libapt/apt-proxy-script b/test/libapt/apt-proxy-script
new file mode 100755
index 0000000..41cfdc3
--- /dev/null
+++ b/test/libapt/apt-proxy-script
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if [ $1 = "http://www.debian.org:90/temp/test" ]; then
+ echo "http://example.com"
+fi
+if [ $1 = "http://www.debian.org:91/temp/test" ]; then
+ echo "This works" >&2
+ echo "http://example.com/foo"
+fi
diff --git a/test/libapt/authconf_test.cc b/test/libapt/authconf_test.cc
new file mode 100644
index 0000000..3a7b149
--- /dev/null
+++ b/test/libapt/authconf_test.cc
@@ -0,0 +1,261 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/netrc.h>
+#include <apt-pkg/strutl.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(NetRCTest, Parsing)
+{
+ FileFd fd;
+ URI U("https://file.not/open");
+ EXPECT_FALSE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+ EXPECT_EQ("file.not", U.Host);
+ EXPECT_EQ("/open", U.Path);
+
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+machine example.netter login bar password foo
+machine example.net login foo password bar
+
+machine example.org:90 login apt password apt
+machine example.org:8080
+login
+example password foobar
+
+machine example.org
+login anonymous
+password pass
+
+machine example.com/foo login user1 unknown token password pass1
+machine example.com/bar password pass2 login user2
+ unknown token
+machine example.com/user login user
+machine example.netter login unused password firstentry
+machine socks5h://example.last/debian login debian password rules)apt");
+ U = URI("https://example.net/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("bar", U.Password);
+ EXPECT_EQ("example.net", U.Host);
+ EXPECT_EQ("/foo", U.Path);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://user:pass@example.net/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user", U.User);
+ EXPECT_EQ("pass", U.Password);
+ EXPECT_EQ("example.net", U.Host);
+ EXPECT_EQ("/foo", U.Path);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.org:90/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("apt", U.User);
+ EXPECT_EQ("apt", U.Password);
+ EXPECT_EQ("example.org", U.Host);
+ EXPECT_EQ(90u, U.Port);
+ EXPECT_EQ("/foo", U.Path);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.org:8080/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("example", U.User);
+ EXPECT_EQ("foobar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.net:42/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.org/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("anonymous", U.User);
+ EXPECT_EQ("pass", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/apt");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user1", U.User);
+ EXPECT_EQ("pass1", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/fooo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user1", U.User);
+ EXPECT_EQ("pass1", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/fo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/bar");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user2", U.User);
+ EXPECT_EQ("pass2", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.com/user");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user", U.User);
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("socks5h://example.last/debian");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("debian", U.User);
+ EXPECT_EQ("rules", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("socks5h://example.debian/");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("socks5h://user:pass@example.debian/");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("user", U.User);
+ EXPECT_EQ("pass", U.Password);
+}
+TEST(NetRCTest, BadFileNoMachine)
+{
+ FileFd fd;
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+foo example.org login foo1 password bar
+machin example.org login foo2 password bar
+machine2 example.org login foo3 password bar
+)apt");
+
+ URI U("https://example.org/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+}
+TEST(NetRCTest, BadFileEndsMachine)
+{
+ FileFd fd;
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+machine example.org login foo1 password bar
+machine)apt");
+
+ URI U("https://example.org/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo1", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.net/foo");
+ EXPECT_FALSE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://foo:bar@example.net/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("bar", U.Password);
+}
+TEST(NetRCTest, BadFileEndsLogin)
+{
+ FileFd fd;
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+machine example.org login foo1 password bar
+machine example.net login)apt");
+
+ URI U("https://example.org/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo1", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.net/foo");
+ EXPECT_FALSE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://foo:bar@example.net/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("bar", U.Password);
+}
+TEST(NetRCTest, BadFileEndsPassword)
+{
+ FileFd fd;
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+machine example.org login foo1 password bar
+machine example.net password)apt");
+
+ URI U("https://example.org/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo1", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://example.net/foo");
+ EXPECT_FALSE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://foo:bar@example.net/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("bar", U.Password);
+}
+
+TEST(NetRCTest, MatchesOnlyHTTPS)
+{
+ FileFd fd;
+ openTemporaryFile("doublesignedfile", fd, R"apt(
+machine https.example login foo1 password bar
+machine http://http.example login foo1 password bar
+)apt");
+
+ URI U("https://https.example/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo1", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ _error->PushToStack();
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("http://https.example/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+ EXPECT_FALSE(_error->empty());
+ EXPECT_TRUE(U.Password.empty());
+ _error->RevertToStack();
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("http://http.example/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_EQ("foo1", U.User);
+ EXPECT_EQ("bar", U.Password);
+
+ EXPECT_TRUE(fd.Seek(0));
+ U = URI("https://http.example/foo");
+ EXPECT_TRUE(MaybeAddAuth(fd, U));
+ EXPECT_TRUE(U.User.empty());
+ EXPECT_TRUE(U.Password.empty());
+
+}
diff --git a/test/libapt/cachefilter_test.cc b/test/libapt/cachefilter_test.cc
new file mode 100644
index 0000000..08812e0
--- /dev/null
+++ b/test/libapt/cachefilter_test.cc
@@ -0,0 +1,119 @@
+#include <config.h>
+
+#include <apt-pkg/cachefilter.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(CacheFilterTest, ArchitectureSpecification)
+{
+ {
+ SCOPED_TRACE("Pattern is *");
+ // * should be treated like any
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("*");
+ EXPECT_TRUE(ams("sparc"));
+ EXPECT_TRUE(ams("amd64"));
+ EXPECT_TRUE(ams("kfreebsd-amd64"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-i386");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-i386");
+ EXPECT_TRUE(ams("i386"));
+ EXPECT_FALSE(ams("amd64"));
+ EXPECT_TRUE(ams("linux-i386"));
+ EXPECT_FALSE(ams("linux-amd64"));
+ EXPECT_TRUE(ams("kfreebsd-i386"));
+ EXPECT_TRUE(ams("musl-linux-i386"));
+ }
+ {
+ SCOPED_TRACE("Pattern is linux-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("linux-any");
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_FALSE(ams("kfreebsd-armhf"));
+ EXPECT_TRUE(ams("musl-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/tupletable"))
+ {
+ SCOPED_TRACE("Pattern is gnu-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnu-any-any"); //really?
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("kfreebsd-armhf"));
+ EXPECT_FALSE(ams("musl-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/triplettable"))
+ {
+ SCOPED_TRACE("Pattern is gnueabi-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnueabi-any-any"); //really?
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_FALSE(ams("armhf"));
+ EXPECT_FALSE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("musleabihf-linux-armhf"));
+ }
+ if (FileExists(DPKG_DATADIR "/triplettable"))
+ {
+ SCOPED_TRACE("Pattern is gnueabihf-any-any");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("gnueabihf-any-any"); //really?
+ EXPECT_FALSE(ams("linux-armel"));
+ EXPECT_FALSE(ams("armel"));
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("musleabihf-linux-armhf"));
+ }
+
+ // Weird ones - armhf's tuple is actually eabihf-gnu-linux-arm
+ // armel's tuple is actually eabi-gnu-linux-arm
+ // x32's tuple is actually x32-gnu-linux-amd64
+ {
+ SCOPED_TRACE("Architecture is armhf");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("armhf", false);
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_FALSE(ams("armel"));
+ EXPECT_TRUE(ams("linux-any"));
+ EXPECT_FALSE(ams("kfreebsd-any"));
+ EXPECT_TRUE(ams("any-arm"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_FALSE(ams("kfreebsd-armhf"));
+ EXPECT_FALSE(ams("musl-linux-armhf"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-arm");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-arm");
+ EXPECT_TRUE(ams("armhf"));
+ EXPECT_TRUE(ams("armel"));
+ EXPECT_TRUE(ams("linux-armhf"));
+ EXPECT_TRUE(ams("linux-armel"));
+ EXPECT_TRUE(ams("musl-linux-armhf"));
+ EXPECT_TRUE(ams("uclibc-linux-armel"));
+
+ EXPECT_FALSE(ams("arm64"));
+ EXPECT_FALSE(ams("linux-arm64"));
+ EXPECT_FALSE(ams("kfreebsd-arm64"));
+ EXPECT_FALSE(ams("musl-linux-arm64"));
+ }
+ {
+ SCOPED_TRACE("Pattern is any-amd64");
+ APT::CacheFilter::PackageArchitectureMatchesSpecification ams("any-amd64");
+ EXPECT_TRUE(ams("amd64"));
+ EXPECT_TRUE(ams("x32"));
+ EXPECT_TRUE(ams("linux-amd64"));
+ EXPECT_TRUE(ams("linux-x32"));
+ EXPECT_TRUE(ams("kfreebsd-amd64"));
+ EXPECT_TRUE(ams("musl-linux-amd64"));
+ EXPECT_TRUE(ams("uclibc-linux-amd64"));
+
+ EXPECT_FALSE(ams("i386"));
+ EXPECT_FALSE(ams("linux-i386"));
+ EXPECT_FALSE(ams("kfreebsd-i386"));
+ EXPECT_FALSE(ams("musl-linux-i386"));
+ EXPECT_FALSE(ams("uclibc-linux-i386"));
+ }
+}
diff --git a/test/libapt/cdrom_test.cc b/test/libapt/cdrom_test.cc
new file mode 100644
index 0000000..364971e
--- /dev/null
+++ b/test/libapt/cdrom_test.cc
@@ -0,0 +1,109 @@
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/cdromutl.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+
+#include <cstring>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+class Cdrom : public pkgCdrom {
+public:
+ std::vector<std::string> ReduceSourcelist(std::string CD,std::vector<std::string> List) {
+ pkgCdrom::ReduceSourcelist(CD, List);
+ return List;
+ }
+};
+
+TEST(CDROMTest,ReduceSourcelist)
+{
+ Cdrom cd;
+ std::vector<std::string> List;
+ std::string CD("/media/cdrom/");
+
+ std::vector<std::string> R = cd.ReduceSourcelist(CD, List);
+ EXPECT_TRUE(R.empty());
+
+ List.push_back(" wheezy main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1u, R.size());
+ EXPECT_EQ(" wheezy main", R[0]);
+
+ List.push_back(" wheezy main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1u, R.size());
+ EXPECT_EQ(" wheezy main", R[0]);
+
+ List.push_back(" wheezy contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(1u, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+
+ List.push_back(" wheezy-update contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2u, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib", R[1]);
+
+ List.push_back(" wheezy-update contrib");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2u, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib", R[1]);
+
+ List.push_back(" wheezy-update non-free");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2u, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib non-free", R[1]);
+
+ List.push_back(" wheezy-update main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2u, R.size());
+ EXPECT_EQ(" wheezy contrib main", R[0]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[1]);
+
+ List.push_back(" wheezy non-free");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(2u, R.size());
+ EXPECT_EQ(" wheezy contrib main non-free", R[0]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[1]);
+
+ List.push_back(" sid main");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(3u, R.size());
+ EXPECT_EQ(" sid main", R[0]);
+ EXPECT_EQ(" wheezy contrib main non-free", R[1]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[2]);
+
+ List.push_back(" sid main-reduce");
+ R = cd.ReduceSourcelist(CD, List);
+ ASSERT_EQ(3u, R.size());
+ EXPECT_EQ(" sid main main-reduce", R[0]);
+ EXPECT_EQ(" wheezy contrib main non-free", R[1]);
+ EXPECT_EQ(" wheezy-update contrib main non-free", R[2]);
+}
+TEST(CDROMTest, FindMountPointForDevice)
+{
+ auto const file = createTemporaryFile("mountpoints",
+ "rootfs / rootfs rw 0 0\n"
+ "sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0\n"
+ "sysfs0 /sys0 sysfs rw,nosuid,nodev,noexec,relatime 0 0\n"
+ "/dev/disk/by-uuid/fadcbc52-6284-4874-aaaa-dcee1f05fe21 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0\n"
+ "/dev/sda1 /boot/efi vfat rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro,rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=utf8,shortname=lower,quiet,utf8,errors=remount-ro 0 0\n"
+ "tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0\n");
+ _config->Set("Dir::state::Mountpoints", file.Name());
+
+ EXPECT_EQ("/", FindMountPointForDevice("rootfs"));
+ EXPECT_EQ("/", FindMountPointForDevice("/dev/disk/by-uuid/fadcbc52-6284-4874-aaaa-dcee1f05fe21"));
+ EXPECT_EQ("/sys", FindMountPointForDevice("sysfs"));
+ EXPECT_EQ("/sys0", FindMountPointForDevice("sysfs0"));
+ EXPECT_EQ("/boot/efi", FindMountPointForDevice("/dev/sda1"));
+ EXPECT_EQ("/tmp", FindMountPointForDevice("tmpfs"));
+}
diff --git a/test/libapt/cdromfindpackages_test.cc b/test/libapt/cdromfindpackages_test.cc
new file mode 100644
index 0000000..9e13c1d
--- /dev/null
+++ b/test/libapt/cdromfindpackages_test.cc
@@ -0,0 +1,125 @@
+#include <config.h>
+
+#include <apt-pkg/cdrom.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <cstddef>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+class Cdrom : public pkgCdrom {
+ public:
+ bool FindPackages(std::string const &CD,
+ std::vector<std::string> &List,
+ std::vector<std::string> &SList,
+ std::vector<std::string> &SigList,
+ std::vector<std::string> &TransList,
+ std::string &InfoDir) {
+ std::string const startdir = SafeGetCWD();
+ EXPECT_FALSE(startdir.empty());
+ EXPECT_TRUE(InfoDir.empty());
+ bool const result = pkgCdrom::FindPackages(CD, List, SList, SigList, TransList, InfoDir, NULL, 0);
+ EXPECT_FALSE(InfoDir.empty());
+ std::sort(List.begin(), List.end());
+ std::sort(SList.begin(), SList.end());
+ std::sort(SigList.begin(), SigList.end());
+ std::sort(TransList.begin(), TransList.end());
+ EXPECT_EQ(0, chdir(startdir.c_str()));
+ return result;
+ }
+
+ using pkgCdrom::DropRepeats;
+};
+
+TEST(CDROMTest,FindPackages)
+{
+ std::string path;
+ createTemporaryDirectory("findpackage", path);
+
+ createDirectory(path, ".disk");
+ createDirectory(path, "pool");
+ createDirectory(path, "dists/stable/main/binary-i386");
+ createDirectory(path, "dists/stable/main/source");
+ createDirectory(path, "dists/stable/contrib/binary-amd64");
+ createDirectory(path, "dists/stable/non-free/binary-all");
+ createDirectory(path, "dists/unstable/main/binary-i386");
+ createDirectory(path, "dists/unstable/main/i18n");
+ createDirectory(path, "dists/unstable/main/source");
+ createDirectory(path, "dists/broken/non-free/source");
+ createFile(path, "dists/broken/.aptignr");
+ createFile(path, "dists/stable/main/binary-i386/Packages");
+ createFile(path, "dists/stable/main/binary-i386/Packages.bz2");
+ createFile(path, "dists/stable/main/source/Sources.xz");
+ createFile(path, "dists/stable/contrib/binary-amd64/Packages");
+ createFile(path, "dists/stable/contrib/binary-amd64/Packages.gz");
+ createFile(path, "dists/stable/non-free/binary-all/Packages");
+ createFile(path, "dists/unstable/main/binary-i386/Packages.xz");
+ createFile(path, "dists/unstable/main/binary-i386/Packages.lzma");
+ createFile(path, "dists/unstable/main/i18n/Translation-en");
+ createFile(path, "dists/unstable/main/i18n/Translation-de.bz2");
+ createFile(path, "dists/unstable/main/source/Sources.xz");
+ createFile(path, "dists/broken/non-free/source/Sources.gz");
+ createFile(path, "dists/stable/Release.gpg");
+ createFile(path, "dists/stable/Release");
+ createFile(path, "dists/unstable/InRelease");
+ createFile(path, "dists/broken/Release.gpg");
+ createLink(path, "dists/unstable", "dists/sid");
+
+ Cdrom cd;
+ std::vector<std::string> Packages, Sources, Signatur, Translation;
+ std::string InfoDir;
+ EXPECT_TRUE(cd.FindPackages(path, Packages, Sources, Signatur, Translation, InfoDir));
+ EXPECT_EQ(5u, Packages.size());
+ EXPECT_EQ(path + "/dists/sid/main/binary-i386/", Packages[0]);
+ EXPECT_EQ(path + "/dists/stable/contrib/binary-amd64/", Packages[1]);
+ EXPECT_EQ(path + "/dists/stable/main/binary-i386/", Packages[2]);
+ EXPECT_EQ(path + "/dists/stable/non-free/binary-all/", Packages[3]);
+ EXPECT_EQ(path + "/dists/unstable/main/binary-i386/", Packages[4]);
+ EXPECT_EQ(3u, Sources.size());
+ EXPECT_EQ(path + "/dists/sid/main/source/", Sources[0]);
+ EXPECT_EQ(path + "/dists/stable/main/source/", Sources[1]);
+ EXPECT_EQ(path + "/dists/unstable/main/source/", Sources[2]);
+ EXPECT_EQ(3u, Signatur.size());
+ EXPECT_EQ(path + "/dists/sid/", Signatur[0]);
+ EXPECT_EQ(path + "/dists/stable/", Signatur[1]);
+ EXPECT_EQ(path + "/dists/unstable/", Signatur[2]);
+ EXPECT_EQ(4u, Translation.size());
+ EXPECT_EQ(path + "/dists/sid/main/i18n/Translation-de", Translation[0]);
+ EXPECT_EQ(path + "/dists/sid/main/i18n/Translation-en", Translation[1]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-de", Translation[2]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-en", Translation[3]);
+ EXPECT_EQ(path + "/.disk/", InfoDir);
+
+ cd.DropRepeats(Packages, "Packages");
+ cd.DropRepeats(Sources, "Sources");
+ _error->PushToStack();
+ cd.DropRepeats(Signatur, "InRelease");
+ cd.DropRepeats(Signatur, "Release.gpg");
+ _error->RevertToStack();
+ _error->DumpErrors();
+ cd.DropRepeats(Translation, "");
+
+ EXPECT_EQ(4u, Packages.size());
+ EXPECT_EQ(path + "/dists/stable/contrib/binary-amd64/", Packages[0]);
+ EXPECT_EQ(path + "/dists/stable/main/binary-i386/", Packages[1]);
+ EXPECT_EQ(path + "/dists/stable/non-free/binary-all/", Packages[2]);
+ EXPECT_EQ(path + "/dists/unstable/main/binary-i386/", Packages[3]);
+ EXPECT_EQ(2u, Sources.size());
+ EXPECT_EQ(path + "/dists/stable/main/source/", Sources[0]);
+ EXPECT_EQ(path + "/dists/unstable/main/source/", Sources[1]);
+ EXPECT_EQ(2u, Signatur.size());
+ EXPECT_EQ(path + "/dists/stable/", Signatur[0]);
+ EXPECT_EQ(path + "/dists/unstable/", Signatur[1]);
+ EXPECT_EQ(2u, Translation.size());
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-de", Translation[0]);
+ EXPECT_EQ(path + "/dists/unstable/main/i18n/Translation-en", Translation[1]);
+
+ removeDirectory(path);
+}
diff --git a/test/libapt/commandline_test.cc b/test/libapt/commandline_test.cc
new file mode 100644
index 0000000..cde80b4
--- /dev/null
+++ b/test/libapt/commandline_test.cc
@@ -0,0 +1,238 @@
+#include <config.h>
+
+#include <apt-pkg/cmndline.h>
+#include <apt-pkg/configuration.h>
+#include <apt-private/private-cmndline.h>
+
+#include <gtest/gtest.h>
+
+class CLT: public CommandLine {
+ public:
+ std::string static AsString(const char * const * const argv,
+ unsigned int const argc) {
+ std::string const static conf = "Commandline::AsString";
+ _config->Clear(conf);
+ SaveInConfig(argc, argv);
+ return _config->Find(conf);
+ }
+};
+
+TEST(CommandLineTest,SaveInConfig)
+{
+#define APT_EXPECT_CMD(x, ...) { const char * const argv[] = { __VA_ARGS__ }; EXPECT_EQ(x, CLT::AsString(argv, sizeof(argv)/sizeof(argv[0]))); }
+ APT_EXPECT_CMD("apt-get install -sf",
+ "apt-get", "install", "-sf");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test=Test",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=Test");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test'",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=Das ist ein Test");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test'",
+ "apt-cache", "-s", "apt", "-so", "Debug::test=\"Das ist ein Test\"");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test' foo",
+ "apt-cache", "-s", "apt", "-so", "\"Debug::test=Das ist ein Test\"", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='Das ist ein Test' foo",
+ "apt-cache", "-s", "apt", "-so", "\'Debug::test=Das ist ein Test\'", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt -so Debug::test='That is crazy!' foo",
+ "apt-cache", "-s", "apt", "-so", "\'Debug::test=That \ris\n crazy!\'", "foo");
+ APT_EXPECT_CMD("apt-cache -s apt --hallo test=1.0",
+ "apt-cache", "-s", "apt", "--hallo", "test=1.0");
+#undef APT_EXPECT_CMD
+}
+TEST(CommandLineTest,Parsing)
+{
+ CommandLine::Args Args[] = {
+ { 't', 0, "Test::Worked", 0 },
+ { 'T', "testing", "Test::Worked", CommandLine::HasArg },
+ { 'z', "zero", "Test::Zero", 0 },
+ { 'o', "option", 0, CommandLine::ArbItem },
+ {0,0,0,0}
+ };
+ ::Configuration c;
+ CommandLine CmdL(Args, &c);
+
+ char const * argv[] = { "test", "--zero", "-t" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_TRUE(c.FindB("Test::Zero", false));
+
+ c.Clear("Test");
+ EXPECT_FALSE(c.FindB("Test::Worked", false));
+ EXPECT_FALSE(c.FindB("Test::Zero", false));
+
+ c.Set("Test::Zero", true);
+ EXPECT_TRUE(c.FindB("Test::Zero", false));
+
+ char const * argv2[] = { "test", "--no-zero", "-t" };
+ CmdL.Parse(3 , argv2);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_FALSE(c.FindB("Test::Zero", false));
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0u, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T=yes" };
+ CmdL.Parse(2 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0u, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-T=", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(1u, CmdL.FileSize());
+ }
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0u, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing=yes" };
+ CmdL.Parse(2 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(0u, CmdL.FileSize());
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "--testing=", "yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ EXPECT_EQ(1u, CmdL.FileSize());
+ }
+
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=yes" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.FindB("Test::Worked", false));
+ EXPECT_EQ("yes", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=" };
+ CmdL.Parse(3 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+ {
+ char const * argv[] = { "test", "-o", "test::worked=", "yes" };
+ CmdL.Parse(4 , argv);
+ EXPECT_TRUE(c.Exists("Test::Worked"));
+ EXPECT_EQ("no", c.Find("Test::Worked", "no"));
+ }
+ c.Clear("Test");
+}
+
+TEST(CommandLineTest, BoolParsing)
+{
+ CommandLine::Args Args[] = {
+ { 't', 0, "Test::Worked", 0 },
+ {0,0,0,0}
+ };
+ ::Configuration c;
+ CommandLine CmdL(Args, &c);
+
+ // the commandline parser used to use strtol() on the argument
+ // to check if the argument is a boolean expression - that
+ // stopped after the "0". this test ensures that we always check
+ // that the entire string was consumed by strtol
+ {
+ char const * argv[] = { "show", "-t", "0ad" };
+ bool res = CmdL.Parse(sizeof(argv)/sizeof(char*), argv);
+ EXPECT_TRUE(res);
+ ASSERT_EQ(std::string(CmdL.FileList[0]), "0ad");
+ }
+
+ {
+ char const * argv[] = { "show", "-t", "0", "ad" };
+ bool res = CmdL.Parse(sizeof(argv)/sizeof(char*), argv);
+ EXPECT_TRUE(res);
+ ASSERT_EQ(std::string(CmdL.FileList[0]), "ad");
+ }
+
+}
+
+static bool DoVoid(CommandLine &) { return false; }
+
+TEST(CommandLineTest,GetCommand)
+{
+ CommandLine::Dispatch Cmds[] = { {"install",&DoVoid}, {"remove", &DoVoid}, {0,0} };
+ {
+ char const * argv[] = { "apt-get", "-t", "unstable", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_TRUE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(2u, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "-t", "unstable", "remove", "--", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(3u, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "-t", "unstable", "--", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("remove", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(3u, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "foo");
+ }
+ {
+ char const * argv[] = {"apt-get", "install", "-t", "unstable", "--", "remove", "-d", "foo" };
+ char const * com = CommandLine::GetCommand(Cmds, sizeof(argv)/sizeof(argv[0]), argv);
+ EXPECT_STREQ("install", com);
+ std::vector<CommandLine::Args> Args = getCommandArgs(APT_CMD::APT_GET, com);
+ ::Configuration c;
+ CommandLine CmdL(Args.data(), &c);
+ ASSERT_TRUE(CmdL.Parse(sizeof(argv)/sizeof(argv[0]), argv));
+ EXPECT_EQ(c.Find("APT::Default-Release"), "unstable");
+ EXPECT_FALSE(c.FindB("APT::Get::Download-Only"));
+ ASSERT_EQ(4u, CmdL.FileSize());
+ EXPECT_EQ(std::string(CmdL.FileList[0]), "install");
+ EXPECT_EQ(std::string(CmdL.FileList[1]), "remove");
+ EXPECT_EQ(std::string(CmdL.FileList[2]), "-d");
+ EXPECT_EQ(std::string(CmdL.FileList[3]), "foo");
+ }
+}
diff --git a/test/libapt/compareversion_test.cc b/test/libapt/compareversion_test.cc
new file mode 100644
index 0000000..0fe32cf
--- /dev/null
+++ b/test/libapt/compareversion_test.cc
@@ -0,0 +1,182 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* ######################################################################
+
+ Version Test - Simple program to run through a file and comare versions.
+
+ Each version is compared and the result is checked against an expected
+ result in the file. The format of the file is
+ a b Res
+ Where Res is -1, 1, 0. dpkg -D=1 --compare-versions a "<" b can be
+ used to determine what Res should be. # at the start of the line
+ is a comment and blank lines are skipped
+
+ The runner will also call dpkg --compare-versions to check if APT and
+ dpkg have (still) the same idea.
+
+ ##################################################################### */
+ /*}}}*/
+#include <config.h>
+
+#include <apt-pkg/debversion.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <cstdlib>
+#include <fstream>
+#include <string>
+#include <sys/wait.h>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+using namespace std;
+
+static bool callDPKG(const char * const val, const char * const ref, char const * const op) {
+ pid_t Process = ExecFork();
+ if (Process == 0)
+ {
+ const char * args[] = {
+ "dpkg",
+ "--compare-versions",
+ val,
+ op,
+ ref,
+ nullptr
+ };
+ execvp(args[0], (char**) args);
+ exit(1);
+ }
+ int Ret;
+ waitpid(Process, &Ret, 0);
+ EXPECT_TRUE(WIFEXITED(Ret));
+ return WEXITSTATUS(Ret) == 0;
+}
+
+
+#define EXPECT_VERSION_PART(A, compare, B) \
+{ \
+ int Res = debVS.CmpVersion(A, B); \
+ Res = (Res < 0) ? -1 : ( (Res > 0) ? 1 : Res); \
+ EXPECT_EQ(compare, Res) << "APT: A: »" << A << "« B: »" << B << "«"; \
+ EXPECT_PRED3(callDPKG, A, B, ((compare == 1) ? ">>" : ( (compare == 0) ? "=" : "<<"))); \
+}
+#define EXPECT_VERSION(A, compare, B) \
+ EXPECT_VERSION_PART(A, compare, B); \
+ EXPECT_VERSION_PART(B, compare * -1, A)
+
+// History-Remark: The versions used to be specified in a versions.lst file
+
+enum CompareVersionType { LESS = -1, GREATER = 1, EQUAL = 0 };
+
+TEST(CompareVersionTest,Basic)
+{
+ EXPECT_VERSION("7.6p2-4", GREATER, "7.6-0");
+ EXPECT_VERSION("1.0.3-3", GREATER, "1.0-1");
+ EXPECT_VERSION("1.3", GREATER, "1.2.2-2");
+ EXPECT_VERSION("1.3", GREATER, "1.2.2");
+
+ /* disabled as dpkg doesn't like them… (versions have to start with a number)
+ EXPECT_VERSION("-", LESS, ".");
+ EXPECT_VERSION("p", LESS, "-");
+ EXPECT_VERSION("a", LESS, "-");
+ EXPECT_VERSION("z", LESS, "-");
+ EXPECT_VERSION("a", LESS, ".");
+ EXPECT_VERSION("z", LESS, ".");
+ // */
+
+ /* disabled as dpkg doesn't like them… (versions have to start with a number)
+ EXPECT_VERSION("III-alpha9.8", LESS, "III-alpha9.8-1.5");
+ // */
+
+ // Test some properties of text strings
+ EXPECT_VERSION("0-pre", EQUAL, "0-pre");
+ EXPECT_VERSION("0-pre", LESS, "0-pree");
+
+ EXPECT_VERSION("1.1.6r2-2", GREATER, "1.1.6r-1");
+ EXPECT_VERSION("2.6b2-1", GREATER, "2.6b-2");
+
+ EXPECT_VERSION("98.1p5-1", LESS, "98.1-pre2-b6-2");
+ EXPECT_VERSION("0.4a6-2", GREATER, "0.4-1");
+
+ EXPECT_VERSION("1:3.0.5-2", LESS, "1:3.0.5.1");
+}
+TEST(CompareVersionTest,Epochs)
+{
+ EXPECT_VERSION("1:0.4", GREATER, "10.3");
+ EXPECT_VERSION("1:1.25-4", LESS, "1:1.25-8");
+ EXPECT_VERSION("0:1.18.36", EQUAL, "1.18.36");
+
+ EXPECT_VERSION("1.18.36", GREATER, "1.18.35");
+ EXPECT_VERSION("0:1.18.36", GREATER, "1.18.35");
+}
+TEST(CompareVersionTest,Strangeness)
+{
+ // Funky, but allowed, characters in upstream version
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, "10:0.5.1-22");
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, "9:1.18.36:5.5-1");
+ EXPECT_VERSION("9:1.18.36:5.4-20", LESS, " 9:1.18.37:4.3-22");
+ EXPECT_VERSION("1.18.36-0.17.35-18", GREATER, "1.18.36-19");
+
+ // Junk
+ EXPECT_VERSION("1:1.2.13-3", LESS, "1:1.2.13-3.1");
+ EXPECT_VERSION("2.0.7pre1-4", LESS, "2.0.7r-1");
+
+ // if a version includes a dash, it should be the debrev dash - policy says so…
+ EXPECT_VERSION("0:0-0-0", GREATER, "0-0");
+
+ // do we like strange versions? Yes we like strange versions…
+ EXPECT_VERSION("0", EQUAL, "0");
+ EXPECT_VERSION("0", EQUAL, "00");
+}
+TEST(CompareVersionTest,DebianBug)
+{
+ // #205960
+ EXPECT_VERSION("3.0~rc1-1", LESS, "3.0-1");
+ // #573592 - debian policy 5.6.12
+ EXPECT_VERSION("1.0", EQUAL, "1.0-0");
+ EXPECT_VERSION("0.2", LESS, "1.0-0");
+ EXPECT_VERSION("1.0", LESS, "1.0-0+b1");
+ EXPECT_VERSION("1.0", GREATER, "1.0-0~");
+}
+TEST(CompareVersionTest,CuptTests)
+{
+ // "steal" the testcases from (old perl) cupt
+ EXPECT_VERSION("1.2.3", EQUAL, "1.2.3"); // identical
+ EXPECT_VERSION("4.4.3-2", EQUAL, "4.4.3-2"); // identical
+ EXPECT_VERSION("1:2ab:5", EQUAL, "1:2ab:5"); // this is correct...
+ EXPECT_VERSION("7:1-a:b-5", EQUAL, "7:1-a:b-5"); // and this
+ EXPECT_VERSION("57:1.2.3abYZ+~-4-5", EQUAL, "57:1.2.3abYZ+~-4-5"); // and those too
+ EXPECT_VERSION("1.2.3", EQUAL, "0:1.2.3"); // zero epoch
+ EXPECT_VERSION("1.2.3", EQUAL, "1.2.3-0"); // zero revision
+ EXPECT_VERSION("009", EQUAL, "9"); // zeroes…
+ EXPECT_VERSION("009ab5", EQUAL, "9ab5"); // there as well
+ EXPECT_VERSION("1.2.3", LESS, "1.2.3-1"); // added non-zero revision
+ EXPECT_VERSION("1.2.3", LESS, "1.2.4"); // just bigger
+ EXPECT_VERSION("1.2.4", GREATER, "1.2.3"); // order doesn't matter
+ EXPECT_VERSION("1.2.24", GREATER, "1.2.3"); // bigger, eh?
+ EXPECT_VERSION("0.10.0", GREATER, "0.8.7"); // bigger, eh?
+ EXPECT_VERSION("3.2", GREATER, "2.3"); // major number rocks
+ EXPECT_VERSION("1.3.2a", GREATER, "1.3.2"); // letters rock
+ EXPECT_VERSION("0.5.0~git", LESS, "0.5.0~git2"); // numbers rock
+ EXPECT_VERSION("2a", LESS, "21"); // but not in all places
+ EXPECT_VERSION("1.3.2a", LESS, "1.3.2b"); // but there is another letter
+ EXPECT_VERSION("1:1.2.3", GREATER, "1.2.4"); // epoch rocks
+ EXPECT_VERSION("1:1.2.3", LESS, "1:1.2.4"); // bigger anyway
+ EXPECT_VERSION("1.2a+~bCd3", LESS, "1.2a++"); // tilde doesn't rock
+ EXPECT_VERSION("1.2a+~bCd3", GREATER, "1.2a+~"); // but first is longer!
+ EXPECT_VERSION("5:2", GREATER, "304-2"); // epoch rocks
+ EXPECT_VERSION("5:2", LESS, "304:2"); // so big epoch?
+ EXPECT_VERSION("25:2", GREATER, "3:2"); // 25 > 3, obviously
+ EXPECT_VERSION("1:2:123", LESS, "1:12:3"); // 12 > 2
+ EXPECT_VERSION("1.2-5", LESS, "1.2-3-5"); // 1.2 < 1.2-3
+ EXPECT_VERSION("5.10.0", GREATER, "5.005"); // preceding zeroes don't matters
+ EXPECT_VERSION("3a9.8", LESS, "3.10.2"); // letters are before all letter symbols
+ EXPECT_VERSION("3a9.8", GREATER, "3~10"); // but after the tilde
+ EXPECT_VERSION("1.4+OOo3.0.0~", LESS, "1.4+OOo3.0.0-4"); // another tilde check
+ EXPECT_VERSION("2.4.7-1", LESS, "2.4.7-z"); // revision comparing
+ EXPECT_VERSION("1.002-1+b2", GREATER, "1.00"); // whatever...
+ /* disabled as dpkg doesn't like them… (versions with illegal char)
+ EXPECT_VERSION("2.2.4-47978_Debian_lenny", EQUAL, "2.2.4-47978_Debian_lenny"); // and underscore...
+ // */
+}
diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc
new file mode 100644
index 0000000..4d297a9
--- /dev/null
+++ b/test/libapt/configuration_test.cc
@@ -0,0 +1,232 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(ConfigurationTest,Lists)
+{
+ Configuration Cnf;
+
+ Cnf.Set("APT::Keep-Fds::",28);
+ Cnf.Set("APT::Keep-Fds::",17);
+ Cnf.Set("APT::Keep-Fds::2",47);
+ Cnf.Set("APT::Keep-Fds::","broken");
+ std::vector<std::string> fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(4u, fds.size());
+ EXPECT_EQ("28", fds[0]);
+ EXPECT_EQ("17", fds[1]);
+ EXPECT_EQ("47", fds[2]);
+ EXPECT_EQ("broken", fds[3]);
+
+ EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
+ EXPECT_EQ("47", Cnf.Find("APT::Keep-Fds::2"));
+ EXPECT_EQ(47, Cnf.FindI("APT::Keep-Fds::2"));
+ EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::3"));
+ EXPECT_EQ("", Cnf.Find("APT::Keep-Fds::3"));
+ EXPECT_EQ(56, Cnf.FindI("APT::Keep-Fds::3", 56));
+ EXPECT_EQ("not-set", Cnf.Find("APT::Keep-Fds::3", "not-set"));
+
+ Cnf.Clear("APT::Keep-Fds::2");
+ EXPECT_TRUE(Cnf.Exists("APT::Keep-Fds::2"));
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(4u, fds.size());
+ EXPECT_EQ("28", fds[0]);
+ EXPECT_EQ("17", fds[1]);
+ EXPECT_EQ("", fds[2]);
+ EXPECT_EQ("broken", fds[3]);
+
+ Cnf.Clear("APT::Keep-Fds",28);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(3u, fds.size());
+ EXPECT_EQ("17", fds[0]);
+ EXPECT_EQ("", fds[1]);
+ EXPECT_EQ("broken", fds[2]);
+
+ Cnf.Clear("APT::Keep-Fds","");
+ EXPECT_FALSE(Cnf.Exists("APT::Keep-Fds::2"));
+
+ Cnf.Clear("APT::Keep-Fds",17);
+ Cnf.Clear("APT::Keep-Fds","broken");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ EXPECT_TRUE(fds.empty());
+
+ Cnf.Set("APT::Keep-Fds::",21);
+ Cnf.Set("APT::Keep-Fds::",42);
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ ASSERT_EQ(2u, fds.size());
+ EXPECT_EQ("21", fds[0]);
+ EXPECT_EQ("42", fds[1]);
+
+ Cnf.Clear("APT::Keep-Fds");
+ fds = Cnf.FindVector("APT::Keep-Fds");
+ EXPECT_TRUE(fds.empty());
+}
+TEST(ConfigurationTest,Integers)
+{
+ Configuration Cnf;
+
+ Cnf.CndSet("APT::Version", 42);
+ Cnf.CndSet("APT::Version", "66");
+ EXPECT_EQ("42", Cnf.Find("APT::Version"));
+ EXPECT_EQ(42, Cnf.FindI("APT::Version"));
+ EXPECT_EQ("42", Cnf.Find("APT::Version", "33"));
+ EXPECT_EQ(42, Cnf.FindI("APT::Version", 33));
+ EXPECT_EQ("33", Cnf.Find("APT2::Version", "33"));
+ EXPECT_EQ(33, Cnf.FindI("APT2::Version", 33));
+}
+TEST(ConfigurationTest,DirsAndFiles)
+{
+ Configuration Cnf;
+
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("Dir", "/srv/sid");
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ Cnf.Set("Dir::State", "var/lib/apt");
+ Cnf.Set("Dir::Aptitude::State", "var/lib/aptitude");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+
+ Cnf.Set("RootDir", "/");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "//./////.////");
+ EXPECT_EQ("/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "/rootdir");
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+ Cnf.Set("RootDir", "/rootdir/");
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/apt", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/srv/sid/var/lib/aptitude", Cnf.FindFile("Dir::Aptitude::State"));
+
+ Cnf.Set("Dir::State", "/dev/null");
+ Cnf.Set("Dir::State::lists", "lists/");
+ EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State"));
+ EXPECT_EQ("/rootdir/dev/null", Cnf.FindDir("Dir::State::lists"));
+}
+TEST(ConfigurationTest,DevNullInPaths)
+{
+ Configuration Cnf;
+ EXPECT_EQ("", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State", "/dev/null");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+ Cnf.Set("Dir", "/");
+ Cnf.Set("Dir::State::status", "status");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State", "");
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/status", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir", "/dev/null");
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/dev/null", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir", "/rootdir");
+ EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/rootdir/status", Cnf.FindFile("Dir::State::status"));
+ Cnf.Set("Dir::State::status", "/foo/status");
+ EXPECT_EQ("/rootdir", Cnf.FindFile("Dir"));
+ EXPECT_EQ("", Cnf.FindFile("Dir::State"));
+ EXPECT_EQ("/foo/status", Cnf.FindFile("Dir::State::status"));
+}
+TEST(ConfigurationTest,Vector)
+{
+ Configuration Cnf;
+
+ std::vector<std::string> vec = Cnf.FindVector("Test::Vector", "");
+ EXPECT_EQ(0u, vec.size());
+ vec = Cnf.FindVector("Test::Vector", "foo");
+ ASSERT_EQ(1u, vec.size());
+ EXPECT_EQ("foo", vec[0]);
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ EXPECT_EQ(2u, vec.size());
+ EXPECT_EQ("foo", vec[0]);
+ EXPECT_EQ("bar", vec[1]);
+ Cnf.Set("Test::Vector::", "baz");
+ Cnf.Set("Test::Vector::", "bob");
+ Cnf.Set("Test::Vector::", "dob");
+ vec = Cnf.FindVector("Test::Vector");
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("baz", vec[0]);
+ EXPECT_EQ("bob", vec[1]);
+ EXPECT_EQ("dob", vec[2]);
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("baz", vec[0]);
+ EXPECT_EQ("bob", vec[1]);
+ EXPECT_EQ("dob", vec[2]);
+ Cnf.Set("Test::Vector", "abel,bravo");
+ vec = Cnf.FindVector("Test::Vector", "foo,bar");
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("abel", vec[0]);
+ EXPECT_EQ("bravo", vec[1]);
+}
+TEST(ConfigurationTest,Merge)
+{
+ Configuration Cnf;
+ Cnf.Set("Binary::apt::option::foo", "bar");
+ Cnf.Set("Binary::apt::option::empty", "");
+ Cnf.Set("option::foo", "foo");
+
+ Cnf.MoveSubTree("Binary::apt", "Binary::apt2");
+ EXPECT_FALSE(Cnf.Exists("Binary::apt::option"));
+ EXPECT_TRUE(Cnf.Exists("option"));
+ EXPECT_EQ("foo", Cnf.Find("option::foo"));
+ EXPECT_EQ("bar", Cnf.Find("Binary::apt2::option::foo"));
+
+ EXPECT_FALSE(Cnf.Exists("option::empty"));
+ EXPECT_TRUE(Cnf.Exists("Binary::apt2::option::empty"));
+ Cnf.Set("option::empty", "not");
+
+ Cnf.MoveSubTree("Binary::apt2", NULL);
+ EXPECT_FALSE(Cnf.Exists("Binary::apt2::option"));
+ EXPECT_TRUE(Cnf.Exists("option"));
+ EXPECT_EQ("bar", Cnf.Find("option::foo"));
+ EXPECT_EQ("", Cnf.Find("option::empty"));
+}
+TEST(ConfigurationTest, Parsing)
+{
+ Configuration Cnf;
+ {
+ auto const file = createTemporaryFile("doublesignedfile", R"apt(
+SimpleOption "true";
+/* SimpleOption "false"; */
+Answer::Simple "42";
+# This is a comment
+List::Option { "In"; "One"; "Line"; };
+// this a comment as well
+List::Option2 { "Multi";
+"Line"; # inline comment
+ "Options";
+}; Trailing "true";
+/* Commented::Out "true"; */
+)apt");
+ EXPECT_TRUE(ReadConfigFile(Cnf, file.Name()));
+ }
+ EXPECT_TRUE(Cnf.FindB("SimpleOption"));
+ EXPECT_EQ(42, Cnf.FindI("Answer::Simple"));
+ EXPECT_TRUE(Cnf.Exists("List::Option"));
+ auto const singleline = Cnf.FindVector("List::Option");
+ EXPECT_EQ(3u, singleline.size());
+ EXPECT_EQ("In", singleline[0]);
+ EXPECT_EQ("One", singleline[1]);
+ EXPECT_EQ("Line", singleline[2]);
+ auto const multiline = Cnf.FindVector("List::Option2");
+ EXPECT_EQ(3u, multiline.size());
+ EXPECT_EQ("Multi", multiline[0]);
+ EXPECT_EQ("Line", multiline[1]);
+ EXPECT_EQ("Options", multiline[2]);
+ EXPECT_TRUE(Cnf.FindB("Trailing"));
+ EXPECT_FALSE(Cnf.Exists("Commented::Out"));
+}
diff --git a/test/libapt/extracttar_test.cc b/test/libapt/extracttar_test.cc
new file mode 100644
index 0000000..246aea7
--- /dev/null
+++ b/test/libapt/extracttar_test.cc
@@ -0,0 +1,52 @@
+#include <config.h>
+
+#include <apt-pkg/dirstream.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/extracttar.h>
+#include <cstdlib>
+#include <iostream>
+
+#include "assert.h"
+#include <gtest/gtest.h>
+
+class Stream : public pkgDirStream
+{
+ public:
+ int count;
+ Stream () { count = 0; }
+ bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE { (void)Itm; (void)Fd; count++; return true; }
+ bool Fail(Item &Itm,int Fd) APT_OVERRIDE { (void)Itm; (void)Fd; return true; }
+ bool FinishedFile(Item &Itm,int Fd) APT_OVERRIDE { (void)Itm; (void)Fd; return true; }
+ ~Stream() {}
+};
+
+TEST(ExtractTar, ExtractTar)
+{
+ FileFd tgz;
+ ASSERT_NE(nullptr, GetTempFile("extracttar", false, &tgz));
+ ASSERT_TRUE(tgz.Close());
+ ASSERT_FALSE(tgz.Name().empty());
+ // FIXME: We should do the right thing… but its a test and nobody will ever…
+ // Proposal: The first one who sees this assert fail will have to write a patch.
+ ASSERT_EQ(std::string::npos, tgz.Name().find('\''));
+ EXPECT_EQ(0, system(("tar c /etc/passwd 2>/dev/null | gzip > " + tgz.Name()).c_str()));
+
+ FileFd fd(tgz.Name(), FileFd::ReadOnly);
+ RemoveFile("ExtractTarTest", tgz.Name());
+ ASSERT_TRUE(fd.IsOpen());
+ ExtractTar tar(fd, -1, "gzip");
+
+ // Run multiple times, because we want to check not only that extraction
+ // works, but also that it works multiple times (important for python-apt)
+ for (int i = 0; i < 5; i++) {
+ SCOPED_TRACE(i);
+ Stream stream;
+ fd.Seek(0);
+ tar.Go(stream);
+ if (_error->PendingError()) {
+ _error->DumpErrors();
+ EXPECT_FALSE(true);
+ }
+ EXPECT_EQ(stream.count, 1);
+ }
+}
diff --git a/test/libapt/file-helpers.cc b/test/libapt/file-helpers.cc
new file mode 100644
index 0000000..bb7052b
--- /dev/null
+++ b/test/libapt/file-helpers.cc
@@ -0,0 +1,85 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+
+#include <string>
+
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+void helperCreateTemporaryDirectory(std::string const &id, std::string &dir)
+{
+ std::string const strtempdir = GetTempDir().append("/apt-tests-").append(id).append(".XXXXXX");
+ char * tempdir = strdup(strtempdir.c_str());
+ ASSERT_STREQ(tempdir, mkdtemp(tempdir));
+ dir = tempdir;
+ free(tempdir);
+}
+void helperRemoveDirectory(std::string const &dir)
+{
+ // basic sanity check to avoid removing random directories based on earlier failures
+ if (dir.find("/apt-tests-") == std::string::npos || dir.find_first_of("*?") != std::string::npos)
+ FAIL() << "Directory '" << dir << "' seems invalid. It is therefore not removed!";
+ else
+ ASSERT_EQ(0, system(std::string("rm -rf ").append(dir).c_str()));
+}
+void helperCreateFile(std::string const &dir, std::string const &name)
+{
+ std::string file = dir;
+ file.append("/");
+ file.append(name);
+ int const fd = creat(file.c_str(), 0600);
+ ASSERT_NE(-1, fd);
+ close(fd);
+}
+void helperCreateDirectory(std::string const &dir, std::string const &name)
+{
+ std::string file = dir;
+ file.append("/");
+ file.append(name);
+ ASSERT_TRUE(CreateDirectory(dir, file));
+}
+void helperCreateLink(std::string const &dir, std::string const &targetname, std::string const &linkname)
+{
+ std::string target = dir;
+ target.append("/");
+ target.append(targetname);
+ std::string link = dir;
+ link.append("/");
+ link.append(linkname);
+ ASSERT_EQ(0, symlink(target.c_str(), link.c_str()));
+}
+
+void openTemporaryFile(std::string const &id, FileFd &fd, char const * const content, bool const ImmediateUnlink)
+{
+ EXPECT_NE(nullptr, GetTempFile("apt-" + id, ImmediateUnlink, &fd));
+ EXPECT_TRUE(ImmediateUnlink || not fd.Name().empty());
+ if (content != nullptr)
+ {
+ EXPECT_TRUE(fd.Write(content, strlen(content)));
+ EXPECT_TRUE(fd.Sync());
+ fd.Seek(0);
+ }
+}
+ScopedFileDeleter::ScopedFileDeleter(std::string const &filename) : _filename{filename} {}
+ScopedFileDeleter::ScopedFileDeleter(ScopedFileDeleter &&sfd) = default;
+ScopedFileDeleter& ScopedFileDeleter::operator=(ScopedFileDeleter &&sfd) = default;
+ScopedFileDeleter::~ScopedFileDeleter() {
+ if (not _filename.empty())
+ RemoveFile("ScopedFileDeleter", _filename.c_str());
+}
+[[nodiscard]] ScopedFileDeleter createTemporaryFile(std::string const &id, char const * const content)
+{
+ FileFd fd;
+ openTemporaryFile(id, fd, content, false);
+ EXPECT_TRUE(fd.IsOpen());
+ EXPECT_TRUE(fd.Close());
+ EXPECT_FALSE(fd.Name().empty());
+ return ScopedFileDeleter{fd.Name()};
+}
diff --git a/test/libapt/file-helpers.h b/test/libapt/file-helpers.h
new file mode 100644
index 0000000..4ce0fb2
--- /dev/null
+++ b/test/libapt/file-helpers.h
@@ -0,0 +1,41 @@
+#ifndef APT_TESTS_FILE_HELPERS
+#define APT_TESTS_FILE_HELPERS
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+class FileFd;
+
+#define createTemporaryDirectory(id, dir) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateTemporaryDirectory(id, dir))
+void helperCreateTemporaryDirectory(std::string const &id, std::string &dir);
+#define removeDirectory(dir) \
+ ASSERT_NO_FATAL_FAILURE(helperRemoveDirectory(dir))
+void helperRemoveDirectory(std::string const &dir);
+#define createFile(dir, name) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateFile(dir, name))
+void helperCreateFile(std::string const &dir, std::string const &name);
+#define createDirectory(dir, name) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateDirectory(dir, name))
+void helperCreateDirectory(std::string const &dir, std::string const &name);
+#define createLink(dir, targetname, linkname) \
+ ASSERT_NO_FATAL_FAILURE(helperCreateLink(dir, targetname, linkname))
+void helperCreateLink(std::string const &dir, std::string const &targetname, std::string const &linkname);
+
+class ScopedFileDeleter {
+ std::string _filename;
+public:
+ ScopedFileDeleter(std::string const &filename);
+ ScopedFileDeleter(ScopedFileDeleter const &) = delete;
+ ScopedFileDeleter(ScopedFileDeleter &&);
+ ScopedFileDeleter& operator=(ScopedFileDeleter const &) = delete;
+ ScopedFileDeleter& operator=(ScopedFileDeleter &&);
+ ~ScopedFileDeleter();
+
+ std::string Name() const { return _filename; }
+};
+void openTemporaryFile(std::string const &id, FileFd &fd, char const * const content = nullptr, bool const ImmediateUnlink = true);
+ScopedFileDeleter createTemporaryFile(std::string const &id, char const * const content = nullptr);
+
+#endif
diff --git a/test/libapt/fileutl_test.cc b/test/libapt/fileutl_test.cc
new file mode 100644
index 0000000..da772df
--- /dev/null
+++ b/test/libapt/fileutl_test.cc
@@ -0,0 +1,399 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/strutl.h>
+
+#include <algorithm>
+#include <cstdlib>
+#include <cstring>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+static void TestFileFd(mode_t const a_umask, mode_t const ExpectedFilePermission,
+ unsigned int const filemode, APT::Configuration::Compressor const &compressor)
+{
+ std::string trace;
+ strprintf(trace, "TestFileFd: Compressor: %s umask: %#o permission: %#o mode: %d", compressor.Name.c_str(), a_umask, ExpectedFilePermission, filemode);
+ SCOPED_TRACE(trace);
+
+ auto const file = createTemporaryFile("filefd-test");
+ EXPECT_TRUE(RemoveFile("TestFileFd", file.Name()));
+
+ FileFd f;
+ umask(a_umask);
+ EXPECT_TRUE(f.Open(file.Name(), filemode, compressor));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_EQ(umask(a_umask), a_umask);
+
+ std::string test = "This is a test!\n";
+ EXPECT_TRUE(f.Write(test.c_str(), test.size()));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ EXPECT_TRUE(f.Open(file.Name(), FileFd::ReadOnly, compressor));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_NE(0u, f.FileSize());
+ EXPECT_FALSE(f.Failed());
+ EXPECT_NE(0, f.ModificationTime());
+ EXPECT_FALSE(f.Failed());
+
+ // ensure the memory is as predictably messed up
+#define APT_INIT_READBACK \
+ char readback[20]; \
+ memset(readback, 'D', sizeof(readback)*sizeof(readback[0])); \
+ readback[19] = '\0';
+#define EXPECT_N_STR(expect, actual) \
+ EXPECT_EQ(0, strncmp(expect, actual, strlen(expect)));
+ {
+ APT_INIT_READBACK
+ char const * const expect = "DDDDDDDDDDDDDDDDDDD";
+ EXPECT_STREQ(expect,readback);
+ EXPECT_N_STR(expect, readback);
+ }
+ {
+ APT_INIT_READBACK
+ char const * const expect = "This";
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(strlen(expect), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ char const * const expect = "test!\n";
+ EXPECT_TRUE(f.Skip((test.size() - f.Tell()) - strlen(expect)));
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(test.size(), f.Tell());
+ }
+ // Non-zero backwards seek
+ {
+ APT_INIT_READBACK
+ char const * const expect = "is";
+ EXPECT_EQ(test.size(), f.Tell());
+ EXPECT_TRUE(f.Seek(5));
+ EXPECT_TRUE(f.Read(readback, strlen(expect)));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(7u, f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ EXPECT_TRUE(f.Read(readback, 20, true));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.Eof());
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ EXPECT_TRUE(f.Read(readback, test.size(), true));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ unsigned long long actual;
+ EXPECT_TRUE(f.Read(readback, 20, &actual));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.Eof());
+ EXPECT_EQ(test.size(), actual);
+ EXPECT_N_STR(test.c_str(), readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ f.ReadLine(readback, 20);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_EQ(test, readback);
+ EXPECT_EQ(f.Size(), f.Tell());
+ }
+ {
+ APT_INIT_READBACK
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ char const * const expect = "This";
+ f.ReadLine(readback, strlen(expect) + 1);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_N_STR(expect, readback);
+ EXPECT_EQ(strlen(expect), f.Tell());
+ }
+#undef APT_INIT_READBACK
+ {
+ test.erase(test.length() - 1);
+ EXPECT_TRUE(f.Seek(0));
+ EXPECT_FALSE(f.Eof());
+ std::string line;
+ EXPECT_TRUE(f.ReadLine(line));
+ EXPECT_FALSE(f.Failed());
+ EXPECT_FALSE(f.Eof());
+ EXPECT_EQ(line.length(), test.length());
+ EXPECT_EQ(line.length() + 1, f.Tell());
+ EXPECT_EQ(f.Size(), f.Tell());
+ EXPECT_EQ(line, test);
+ }
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ // regression test for permission bug LP: #1304657
+ struct stat buf;
+ EXPECT_EQ(0, stat(file.Name().c_str(), &buf));
+ EXPECT_EQ(ExpectedFilePermission, buf.st_mode & 0777);
+}
+
+static void TestFileFd(unsigned int const filemode)
+{
+ auto const compressors = APT::Configuration::getCompressors();
+ EXPECT_EQ(8u, compressors.size());
+ bool atLeastOneWasTested = false;
+ for (auto const &c: compressors)
+ {
+ if ((filemode & FileFd::ReadWrite) == FileFd::ReadWrite &&
+ (c.Name.empty() != true && c.Binary.empty() != true))
+ continue;
+ atLeastOneWasTested = true;
+ TestFileFd(0002, 0664, filemode, c);
+ TestFileFd(0022, 0644, filemode, c);
+ TestFileFd(0077, 0600, filemode, c);
+ TestFileFd(0026, 0640, filemode, c);
+ }
+ EXPECT_TRUE(atLeastOneWasTested);
+}
+
+TEST(FileUtlTest, FileFD)
+{
+ // testing the (un)compress via pipe, as the 'real' compressors are usually built in via libraries
+ _config->Set("APT::Compressor::rev::Name", "rev");
+ _config->Set("APT::Compressor::rev::Extension", ".reversed");
+ _config->Set("APT::Compressor::rev::Binary", "rev");
+ _config->Set("APT::Compressor::rev::Cost", 10);
+ auto const compressors = APT::Configuration::getCompressors(false);
+ EXPECT_EQ(8u, compressors.size());
+ EXPECT_TRUE(std::any_of(compressors.begin(), compressors.end(), [](APT::Configuration::Compressor const &c) { return c.Name == "rev"; }));
+
+ std::string const startdir = SafeGetCWD();
+ EXPECT_FALSE(startdir.empty());
+ std::string tempdir;
+ createTemporaryDirectory("filefd", tempdir);
+ EXPECT_EQ(0, chdir(tempdir.c_str()));
+
+ TestFileFd(FileFd::WriteOnly | FileFd::Create);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive);
+ TestFileFd(FileFd::WriteOnly | FileFd::Atomic);
+ TestFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Atomic);
+ // short-hands for ReadWrite with these modes
+ TestFileFd(FileFd::WriteEmpty);
+ TestFileFd(FileFd::WriteAny);
+ TestFileFd(FileFd::WriteTemp);
+ TestFileFd(FileFd::WriteAtomic);
+
+ EXPECT_EQ(0, chdir(startdir.c_str()));
+ removeDirectory(tempdir);
+}
+TEST(FileUtlTest, Glob)
+{
+ std::vector<std::string> files;
+ // normal match
+ files = Glob("*MakeLists.txt");
+ EXPECT_EQ(1u, files.size());
+
+ // not there
+ files = Glob("xxxyyyzzz");
+ EXPECT_TRUE(files.empty());
+ EXPECT_FALSE(_error->PendingError());
+
+ // many matches (number is a bit random)
+ files = Glob("*.cc");
+ EXPECT_LT(10u, files.size());
+}
+TEST(FileUtlTest, GetTempDir)
+{
+ char const * const envtmp = getenv("TMPDIR");
+ std::string old_tmpdir;
+ if (envtmp != NULL)
+ old_tmpdir = envtmp;
+
+ unsetenv("TMPDIR");
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "/not-there-no-really-not", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ // root can access everything, so /usr will be accepted
+ if (geteuid() != 0)
+ {
+ // here but not accessible for non-roots
+ setenv("TMPDIR", "/usr", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+ }
+
+ // files are no good for tmpdirs, too
+ setenv("TMPDIR", "/dev/null", 1);
+ EXPECT_EQ("/tmp", GetTempDir());
+
+ setenv("TMPDIR", "/var/tmp", 1);
+ EXPECT_EQ("/var/tmp", GetTempDir());
+
+ unsetenv("TMPDIR");
+ if (old_tmpdir.empty() == false)
+ setenv("TMPDIR", old_tmpdir.c_str(), 1);
+}
+TEST(FileUtlTest, Popen)
+{
+ FileFd Fd;
+ pid_t Child;
+ char buf[1024];
+ std::string s;
+ unsigned long long n = 0;
+ std::vector<std::string> OpenFds;
+
+ // count Fds to ensure we don't have a resource leak
+ if(FileExists("/proc/self/fd"))
+ OpenFds = Glob("/proc/self/fd/*");
+
+ // output something
+ const char* Args[10] = {"/bin/echo", "meepmeep", NULL};
+ EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::ReadOnly));
+ EXPECT_TRUE(Fd.Read(buf, sizeof(buf)-1, &n));
+ buf[n] = 0;
+ EXPECT_NE(n, 0u);
+ EXPECT_STREQ(buf, "meepmeep\n");
+
+ // wait for the child to exit and cleanup
+ EXPECT_TRUE(ExecWait(Child, "PopenRead"));
+ EXPECT_TRUE(Fd.Close());
+
+ // ensure that after a close all is good again
+ if(FileExists("/proc/self/fd"))
+ {
+ EXPECT_EQ(Glob("/proc/self/fd/*").size(), OpenFds.size());
+ }
+
+ // ReadWrite is not supported
+ _error->PushToStack();
+ EXPECT_FALSE(Popen(Args, Fd, Child, FileFd::ReadWrite));
+ EXPECT_FALSE(Fd.IsOpen());
+ EXPECT_FALSE(Fd.Failed());
+ EXPECT_TRUE(_error->PendingError());
+ _error->RevertToStack();
+
+ // write something
+ Args[0] = "/bin/bash";
+ Args[1] = "-c";
+ Args[2] = "read";
+ Args[3] = NULL;
+ EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::WriteOnly));
+ s = "\n";
+ EXPECT_TRUE(Fd.Write(s.c_str(), s.length()));
+ EXPECT_TRUE(Fd.Close());
+ EXPECT_FALSE(Fd.IsOpen());
+ EXPECT_FALSE(Fd.Failed());
+ EXPECT_TRUE(ExecWait(Child, "PopenWrite"));
+}
+TEST(FileUtlTest, flAbsPath)
+{
+ std::string cwd = SafeGetCWD();
+ int res = chdir("/etc/");
+ EXPECT_EQ(res, 0);
+ std::string p = flAbsPath("passwd");
+ EXPECT_EQ(p, "/etc/passwd");
+
+ res = chdir(cwd.c_str());
+ EXPECT_EQ(res, 0);
+}
+
+static void TestDevNullFileFd(unsigned int const filemode)
+{
+ SCOPED_TRACE(filemode);
+ FileFd f("/dev/null", filemode);
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_TRUE(f.IsOpen());
+
+ std::string test = "This is a test!\n";
+ EXPECT_TRUE(f.Write(test.c_str(), test.size()));
+ EXPECT_TRUE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+
+ f.Close();
+ EXPECT_FALSE(f.IsOpen());
+ EXPECT_FALSE(f.Failed());
+}
+TEST(FileUtlTest, WorkingWithDevNull)
+{
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Empty);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Exclusive);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Atomic);
+ TestDevNullFileFd(FileFd::WriteOnly | FileFd::Create | FileFd::Atomic);
+ // short-hands for ReadWrite with these modes
+ TestDevNullFileFd(FileFd::WriteEmpty);
+ TestDevNullFileFd(FileFd::WriteAny);
+ TestDevNullFileFd(FileFd::WriteTemp);
+ TestDevNullFileFd(FileFd::WriteAtomic);
+}
+constexpr char const * const TESTSTRING = "This is a test";
+static void TestFailingAtomicKeepsFile(char const * const label, std::string const &filename)
+{
+ SCOPED_TRACE(label);
+ EXPECT_TRUE(FileExists(filename));
+ FileFd fd;
+ EXPECT_TRUE(fd.Open(filename, FileFd::ReadOnly));
+ char buffer[50];
+ EXPECT_NE(nullptr, fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(TESTSTRING, buffer);
+}
+TEST(FileUtlTest, FailingAtomic)
+{
+ auto const file = createTemporaryFile("failingatomic", TESTSTRING);
+ TestFailingAtomicKeepsFile("init", file.Name());
+
+ FileFd f;
+ EXPECT_TRUE(f.Open(file.Name(), FileFd::ReadWrite | FileFd::Atomic));
+ f.EraseOnFailure();
+ EXPECT_FALSE(f.Failed());
+ EXPECT_TRUE(f.IsOpen());
+ TestFailingAtomicKeepsFile("before-fail", file.Name());
+ EXPECT_TRUE(f.Write("Bad file write", 10));
+ f.OpFail();
+ EXPECT_TRUE(f.Failed());
+ TestFailingAtomicKeepsFile("after-fail", file.Name());
+ EXPECT_TRUE(f.Close());
+ TestFailingAtomicKeepsFile("closed", file.Name());
+}
diff --git a/test/libapt/getarchitectures_test.cc b/test/libapt/getarchitectures_test.cc
new file mode 100644
index 0000000..4f76722
--- /dev/null
+++ b/test/libapt/getarchitectures_test.cc
@@ -0,0 +1,105 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+TEST(ArchitecturesTest,SimpleLists)
+{
+ _config->Clear();
+ std::vector<std::string> vec;
+
+ _config->Set("APT::Architectures::1", "i386");
+ _config->Set("APT::Architectures::2", "amd64");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+
+ _config->Set("APT::Architecture", "i386");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+
+ _config->Set("APT::Architectures::2", "");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(1u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+
+ _config->Set("APT::Architecture", "armel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("armel", vec[0]);
+ EXPECT_EQ("i386", vec[1]);
+
+ _config->Set("APT::Architectures::2", "armel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("armel", vec[1]);
+
+ _config->Set("APT::Architectures", "armel,armhf");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("armel", vec[0]);
+ EXPECT_EQ("armhf", vec[1]);
+ _config->Clear();
+}
+TEST(ArchitecturesTest,Duplicates)
+{
+ _config->Clear();
+
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "amd64");
+ std::vector<std::string> vec = _config->FindVector("APT::Architectures");
+ ASSERT_EQ(10u, vec.size());
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+ EXPECT_EQ("armel", vec[2]);
+
+ _config->Clear();
+}
+TEST(ArchitecturesTest,VeryForeign)
+{
+ _config->Clear();
+ _config->Set("APT::Architectures::", "i386");
+ _config->Set("APT::Architectures::", "amd64");
+ _config->Set("APT::Architectures::", "armel");
+
+ auto vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+ EXPECT_EQ("armel", vec[2]);
+
+ _config->Set("APT::BarbarianArchitectures::", "mipsel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+ EXPECT_EQ("armel", vec[2]);
+
+ _config->Set("APT::BarbarianArchitectures::", "armel");
+ vec = APT::Configuration::getArchitectures(false);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("i386", vec[0]);
+ EXPECT_EQ("amd64", vec[1]);
+
+ _config->Clear();
+}
diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc
new file mode 100644
index 0000000..7146c5a
--- /dev/null
+++ b/test/libapt/getlanguages_test.cc
@@ -0,0 +1,241 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <algorithm>
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(LanguagesTest,Environment)
+{
+ _config->Clear();
+
+ char const* env[2];
+ env[0] = "de_DE.UTF-8";
+ env[1] = "";
+
+ std::vector<std::string> vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ // Special: Check if the cache is actually in use
+ env[0] = "en_GB.UTF-8";
+ vec = APT::Configuration::getLanguages(false, true, env);
+ ASSERT_EQ(3u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "en_GB.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("en_GB", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+
+ // esperanto
+ env[0] = "eo.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ ASSERT_EQ(2u, vec.size());
+ EXPECT_EQ("eo", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+
+ env[0] = "tr_DE@euro";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("tr_DE", vec[0]);
+ EXPECT_EQ("tr", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "de_NO";
+ env[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(6u, vec.size());
+ EXPECT_EQ("de_NO", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en_GB", vec[2]);
+ EXPECT_EQ("nb_NO", vec[3]);
+ EXPECT_EQ("nb", vec[4]);
+ EXPECT_EQ("en", vec[5]);
+
+ env[0] = "pt_PR.UTF-8";
+ env[1] = "";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("pt_PR", vec[0]);
+ EXPECT_EQ("pt", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "ast_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env); // bogus, but syntactical correct
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("ast_DE", vec[0]);
+ EXPECT_EQ("ast", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ _config->Set("Acquire::Languages", "none");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_TRUE(vec.empty());
+
+ _config->Set("Acquire::Languages", "environment");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ _config->Set("Acquire::Languages", "de");
+ env[0] = "C";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("de", vec[0]);
+
+ _config->Set("Acquire::Languages", "fr");
+ env[0] = "ast_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("fr", vec[0]);
+
+ _config->Set("Acquire::Languages", "environment,en");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+ _config->Set("Acquire::Languages", "");
+
+ _config->Set("Acquire::Languages::1", "environment");
+ _config->Set("Acquire::Languages::2", "en");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ _config->Set("Acquire::Languages::3", "de");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(3u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+
+ _config->Clear();
+}
+
+TEST(LanguagesTest,TranslationFiles)
+{
+ _config->Clear();
+ _config->Set("Acquire::Languages::1", "environment");
+ _config->Set("Acquire::Languages::2", "en");
+ _config->Set("Acquire::Languages::3", "de");
+
+ char const* env[2];
+ env[0] = "de_DE.UTF-8";
+ env[1] = "";
+
+ std::string tempdir;
+ createTemporaryDirectory("languages", tempdir);
+
+#define createTranslation(lang) \
+ createFile(tempdir, std::string("/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-").append(lang));
+
+ createTranslation("tr");
+ createTranslation("pt");
+ createTranslation("se~");
+ createTranslation("st.bak");
+ createTranslation("ast_DE");
+ createTranslation("tlh%5fDE");
+
+ _config->Set("Dir::State::lists", tempdir);
+ std::vector<std::string> vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(8u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+ EXPECT_EQ("en", vec[2]);
+ EXPECT_EQ("none", vec[3]);
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "pt"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "tr"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "ast_DE"));
+ EXPECT_NE(vec.end(), std::find(vec.begin(), vec.end(), "tlh_DE"));
+ EXPECT_NE(vec[4], vec[5]);
+ EXPECT_NE(vec[4], vec[6]);
+ EXPECT_NE(vec[4], vec[7]);
+ EXPECT_NE(vec[5], vec[6]);
+ EXPECT_NE(vec[5], vec[7]);
+ EXPECT_NE(vec[6], vec[7]);
+
+ _config->Set("Acquire::Languages", "none");
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("none", vec[0]);
+ _config->Set("Acquire::Languages", "");
+
+ _config->Set("Dir::State::lists", "/non-existing-dir");
+ _config->Set("Acquire::Languages::1", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_TRUE(vec.empty());
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(2u, vec.size());
+ EXPECT_EQ("en", vec[0]);
+ EXPECT_EQ("de", vec[1]);
+
+ _config->Set("Acquire::Languages::1", "fr");
+ _config->Set("Acquire::Languages", "de_DE");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(false, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("de_DE", vec[0]);
+
+ _config->Set("Acquire::Languages", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("none", vec[0]);
+
+ _error->PushToStack();
+ _config->Set("Acquire::Languages", "");
+ //FIXME: Remove support for this deprecated setting
+ _config->Set("APT::Acquire::Translation", "ast_DE");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(2u, vec.size());
+ EXPECT_EQ("ast_DE", vec[0]);
+ EXPECT_EQ("en", vec[1]);
+ _config->Set("APT::Acquire::Translation", "none");
+ env[0] = "de_DE.UTF-8";
+ vec = APT::Configuration::getLanguages(true, false, env);
+ EXPECT_EQ(1u, vec.size());
+ EXPECT_EQ("en", vec[0]);
+
+ // discard the deprecation warning for APT::Acquire::Translation
+ if (_error->PendingError())
+ _error->MergeWithStack();
+ else
+ _error->RevertToStack();
+
+ EXPECT_EQ(0, system(std::string("rm -rf ").append(tempdir).c_str()));
+ _config->Clear();
+}
diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc
new file mode 100644
index 0000000..f002355
--- /dev/null
+++ b/test/libapt/getlistoffilesindir_test.cc
@@ -0,0 +1,114 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+#define P(x) tempdir + "/" + x
+
+TEST(FileUtlTest,GetListOfFilesInDir)
+{
+ std::string tempdir;
+ createTemporaryDirectory("getlistoffiles", tempdir);
+
+ createFile(tempdir, "anormalfile");
+ createFile(tempdir, "01yet-anothernormalfile");
+ createFile(tempdir, "anormalapt.conf");
+ createFile(tempdir, "01yet-anotherapt.conf");
+ createFile(tempdir, "anormalapt.list");
+ createFile(tempdir, "01yet-anotherapt.list");
+ createFile(tempdir, "wrongextension.wron");
+ createFile(tempdir, "wrong-extension.wron");
+ createFile(tempdir, "strangefile.");
+ createFile(tempdir, "s.t.r.a.n.g.e.f.i.l.e");
+ createFile(tempdir, ".hiddenfile");
+ createFile(tempdir, ".hiddenfile.conf");
+ createFile(tempdir, ".hiddenfile.list");
+ createFile(tempdir, "multi..dot");
+ createFile(tempdir, "multi.dot.conf");
+ createFile(tempdir, "multi.dot.list");
+ createFile(tempdir, "disabledfile.disabled");
+ createFile(tempdir, "disabledfile.conf.disabled");
+ createFile(tempdir, "disabledfile.list.disabled");
+ createFile(tempdir, "invälid.conf");
+ createFile(tempdir, "invalíd");
+ createFile(tempdir, "01invalíd");
+ createDirectory(tempdir, "invaliddir");
+ createDirectory(tempdir, "directory.conf");
+ createDirectory(tempdir, "directory.list");
+ createDirectory(tempdir, "directory.wron");
+ createDirectory(tempdir, "directory.list.disabled");
+ createLink(tempdir, "anormalfile", "linkedfile.list");
+ createLink(tempdir, "invaliddir", "linkeddir.list");
+ createLink(tempdir, "non-existing-file", "brokenlink.list");
+
+ // Files with no extension
+ _error->PushToStack();
+ std::vector<std::string> files = GetListOfFilesInDir(tempdir, "", true);
+ ASSERT_EQ(2u, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with no extension - should be the same as above
+ files = GetListOfFilesInDir(tempdir, "", true, true);
+ ASSERT_EQ(2u, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with impossible extension
+ files = GetListOfFilesInDir(tempdir, "impossible", true);
+ EXPECT_TRUE(files.empty());
+
+ // Files with impossible or no extension
+ files = GetListOfFilesInDir(tempdir, "impossible", true, true);
+ ASSERT_EQ(2u, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+
+ // Files with list extension - nothing more
+ files = GetListOfFilesInDir(tempdir, "list", true);
+ ASSERT_EQ(4u, files.size());
+ EXPECT_EQ(P("01yet-anotherapt.list"), files[0]);
+ EXPECT_EQ(P("anormalapt.list"), files[1]);
+ EXPECT_EQ(P("linkedfile.list"), files[2]);
+ EXPECT_EQ(P("multi.dot.list"), files[3]);
+
+ // Files with conf or no extension
+ files = GetListOfFilesInDir(tempdir, "conf", true, true);
+ ASSERT_EQ(5u, files.size());
+ EXPECT_EQ(P("01yet-anotherapt.conf"), files[0]);
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[1]);
+ EXPECT_EQ(P("anormalapt.conf"), files[2]);
+ EXPECT_EQ(P("anormalfile"), files[3]);
+ EXPECT_EQ(P("multi.dot.conf"), files[4]);
+
+ // Files with disabled extension - nothing more
+ files = GetListOfFilesInDir(tempdir, "disabled", true);
+ ASSERT_EQ(3u, files.size());
+ EXPECT_EQ(P("disabledfile.conf.disabled"), files[0]);
+ EXPECT_EQ(P("disabledfile.disabled"), files[1]);
+ EXPECT_EQ(P("disabledfile.list.disabled"), files[2]);
+
+ // Files with disabled or no extension
+ files = GetListOfFilesInDir(tempdir, "disabled", true, true);
+ ASSERT_EQ(5u, files.size());
+ EXPECT_EQ(P("01yet-anothernormalfile"), files[0]);
+ EXPECT_EQ(P("anormalfile"), files[1]);
+ EXPECT_EQ(P("disabledfile.conf.disabled"), files[2]);
+ EXPECT_EQ(P("disabledfile.disabled"), files[3]);
+ EXPECT_EQ(P("disabledfile.list.disabled"), files[4]);
+
+ // discard the unknown file extension messages
+ if (_error->PendingError())
+ _error->MergeWithStack();
+ else
+ _error->RevertToStack();
+ removeDirectory(tempdir);
+}
diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc
new file mode 100644
index 0000000..42e8355
--- /dev/null
+++ b/test/libapt/globalerror_test.cc
@@ -0,0 +1,169 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+
+#include <cerrno>
+#include <cstddef>
+#include <cstring>
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(GlobalErrorTest,BasicDiscard)
+{
+ GlobalError e;
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.empty(GlobalError::DEBUG));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+
+ std::string text;
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_TRUE(e.empty(GlobalError::DEBUG));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::FATAL));
+ e.Discard();
+
+ EXPECT_TRUE(e.empty());
+ EXPECT_FALSE(e.PendingError());
+}
+TEST(GlobalErrorTest,StackPushing)
+{
+ GlobalError e;
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::NOTICE));
+ e.PushToStack();
+ EXPECT_TRUE(e.empty(GlobalError::NOTICE));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Warning("%s Warning", "A"));
+ EXPECT_TRUE(e.empty(GlobalError::ERROR));
+ EXPECT_FALSE(e.PendingError());
+ e.RevertToStack();
+ EXPECT_FALSE(e.empty(GlobalError::ERROR));
+ EXPECT_TRUE(e.PendingError());
+
+ std::string text;
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_TRUE(e.empty());
+
+ EXPECT_FALSE(e.Notice("%s Notice", "A"));
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.empty(GlobalError::NOTICE));
+ e.PushToStack();
+ EXPECT_TRUE(e.empty(GlobalError::NOTICE));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.Warning("%s Warning", "A"));
+ EXPECT_TRUE(e.empty(GlobalError::ERROR));
+ EXPECT_FALSE(e.PendingError());
+ e.MergeWithStack();
+ EXPECT_FALSE(e.empty(GlobalError::ERROR));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_TRUE(e.PendingError());
+ EXPECT_EQ("A Notice", text);
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ("Something horrible happened 2 times", text);
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_FALSE(e.empty());
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("A Warning", text);
+ EXPECT_TRUE(e.empty());
+}
+TEST(GlobalErrorTest,Errno)
+{
+ GlobalError e;
+ std::string const textOfErrnoZero(strerror(0));
+ errno = 0;
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", "Something", "happened", 2));
+ EXPECT_FALSE(e.empty());
+ EXPECT_TRUE(e.PendingError());
+ std::string text;
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_FALSE(e.PendingError());
+ EXPECT_EQ(std::string("Something horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")"), text);
+ EXPECT_TRUE(e.empty());
+}
+TEST(GlobalErrorTest,LongMessage)
+{
+ GlobalError e;
+ std::string const textOfErrnoZero(strerror(0));
+ errno = 0;
+ std::string text, longText;
+ for (size_t i = 0; i < 500; ++i)
+ longText.append("a");
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2));
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ(longText + " horrible happened 2 times", text);
+
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2));
+ EXPECT_TRUE(e.PopMessage(text));
+ EXPECT_EQ(longText + " horrible happened 2 times - errno (0: " + textOfErrnoZero + ")", text);
+
+ EXPECT_FALSE(e.Error("%s horrible %s %d times", longText.c_str(), "happened", 2));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ(std::string("E: ").append(longText).append(" horrible happened 2 times\n"), out.str());
+
+ EXPECT_FALSE(e.Errno("errno", "%s horrible %s %d times", longText.c_str(), "happened", 2));
+ std::ostringstream out2;
+ e.DumpErrors(out2);
+ EXPECT_EQ(std::string("E: ").append(longText).append(" horrible happened 2 times - errno (0: ").append(textOfErrnoZero).append(")\n"), out2.str());
+}
+TEST(GlobalErrorTest,UTF8Message)
+{
+ GlobalError e;
+ std::string text;
+
+ EXPECT_FALSE(e.Warning("Репозиторий не обновлён и будут %d %s", 4, "test"));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("Репозиторий не обновлён и будут 4 test", text);
+
+ EXPECT_FALSE(e.Warning("Репозиторий не обновлён и будут %d %s", 4, "test"));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ("W: Репозиторий не обновлён и будут 4 test\n", out.str());
+
+ std::string longText;
+ for (size_t i = 0; i < 50; ++i)
+ longText.append("РезийбёбAZ");
+ EXPECT_FALSE(e.Warning("%s", longText.c_str()));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ(longText, text);
+}
+TEST(GlobalErrorTest,MultiLineMessage)
+{
+ GlobalError e;
+ std::string text;
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.", "Right"));
+ EXPECT_FALSE(e.PopMessage(text));
+ EXPECT_EQ("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\nRight?\rGood because I don't.", text);
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.", "Right"));
+ std::ostringstream out;
+ e.DumpErrors(out);
+ EXPECT_EQ("W: Sometimes one line isn't enough.\n You do know what I mean, right?\n Right?\n Good because I don't.\n", out.str());
+
+ EXPECT_FALSE(e.Warning("Sometimes one line isn't enough.\nYou do know what I mean, right?\r\n%s?\rGood because I don't.\n", "Right"));
+ std::ostringstream out2;
+ e.DumpErrors(out2);
+ EXPECT_EQ("W: Sometimes one line isn't enough.\n You do know what I mean, right?\n Right?\n Good because I don't.\n", out2.str());
+}
diff --git a/test/libapt/gtest_runner.cc b/test/libapt/gtest_runner.cc
new file mode 100644
index 0000000..09fc55d
--- /dev/null
+++ b/test/libapt/gtest_runner.cc
@@ -0,0 +1,28 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/error.h>
+#include <apt-pkg/init.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <gtest/gtest.h>
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ if (pkgInitSystem(*_config, _system) == false)
+ return 42;
+ int const result = RUN_ALL_TESTS();
+ if (_error->empty() == false)
+ {
+ std::cerr << "The test generated the following global messages:" << std::endl;
+ _error->DumpErrors(std::cerr);
+ // messages on the stack can't be right, error out
+ // even if we have no idea where this message came from
+ if (result == 0)
+ {
+ std::cerr << "All tests successful, but messages were generated, so still a failure!" << std::endl;
+ return 29;
+ }
+ }
+ return result;
+}
diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc
new file mode 100644
index 0000000..901150e
--- /dev/null
+++ b/test/libapt/hashsums_test.cc
@@ -0,0 +1,305 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/strutl.h>
+
+#include <cstdlib>
+#include <iostream>
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+template <class T> void Test(const char *In,const char *Out)
+{
+ T Sum;
+ Sum.Add(In);
+ equals(Sum.Result().Value(), Out);
+}
+
+
+
+static void getSummationString(char const * const type, std::string &sum)
+{
+ /* to compare our result with an independent source we call the specific binaries
+ and read their result back. We do this with a little trick by claiming that the
+ summation is a compressor – and open the 'compressed' file later on directly to
+ read out the summation sum calculated by it */
+ APT::Configuration::Compressor compress(type, ".ext", type, NULL, NULL, 99);
+
+ FileFd fd;
+ auto const file = createTemporaryFile("hashsums");
+ ASSERT_TRUE(fd.Open(file.Name(), FileFd::WriteOnly | FileFd::Empty, compress));
+ ASSERT_TRUE(fd.IsOpen());
+ FileFd input("/etc/os-release", FileFd::ReadOnly);
+ ASSERT_TRUE(input.IsOpen());
+ ASSERT_NE(0u, input.FileSize());
+ ASSERT_TRUE(CopyFile(input, fd));
+ ASSERT_TRUE(input.IsOpen());
+ ASSERT_TRUE(fd.IsOpen());
+ ASSERT_FALSE(fd.Failed());
+ input.Close();
+ fd.Close();
+ ASSERT_TRUE(fd.Open(file.Name(), FileFd::ReadOnly, FileFd::None));
+ ASSERT_TRUE(fd.IsOpen());
+ ASSERT_NE(0u, fd.FileSize());
+ ASSERT_FALSE(fd.Failed());
+ char readback[2000];
+ unsigned long long actual;
+ ASSERT_TRUE(fd.Read(readback, sizeof(readback)/sizeof(readback[0]), &actual));
+ actual -= 4;
+ readback[actual] = '\0';
+ sum = readback;
+}
+TEST(HashSumsTest, FileBased)
+{
+ std::string summation;
+
+ getSummationString("md5sum", summation);
+ HashString md5("MD5Sum", summation);
+ EXPECT_EQ(md5.HashValue(), summation);
+
+ getSummationString("sha1sum", summation);
+ HashString sha1("SHA1", summation);
+ EXPECT_EQ(sha1.HashValue(), summation);
+
+ getSummationString("sha256sum", summation);
+ HashString sha256("SHA256", summation);
+ EXPECT_EQ(sha256.HashValue(), summation);
+
+ getSummationString("sha512sum", summation);
+ HashString sha512("SHA512", summation);
+ EXPECT_EQ(sha512.HashValue(), summation);
+
+ FileFd fd("/etc/os-release", FileFd::ReadOnly);
+ EXPECT_TRUE(fd.IsOpen());
+ std::string FileSize;
+ strprintf(FileSize, "%llu", fd.FileSize());
+
+ {
+ Hashes hashes;
+ hashes.AddFD(fd.Fd());
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(5u, list.size());
+ EXPECT_EQ(md5.HashValue(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(sha1.HashValue(), list.find("SHA1")->HashValue());
+ EXPECT_EQ(sha256.HashValue(), list.find("SHA256")->HashValue());
+ EXPECT_EQ(sha512.HashValue(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ unsigned long long sz = fd.FileSize();
+ fd.Seek(0);
+ {
+ Hashes hashes;
+ hashes.AddFD(fd.Fd(), sz);
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(5u, list.size());
+ EXPECT_EQ(md5.HashValue(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(sha1.HashValue(), list.find("SHA1")->HashValue());
+ EXPECT_EQ(sha256.HashValue(), list.find("SHA256")->HashValue());
+ EXPECT_EQ(sha512.HashValue(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ fd.Seek(0);
+ {
+ Hashes hashes(Hashes::MD5SUM | Hashes::SHA512SUM);
+ hashes.AddFD(fd);
+ HashStringList list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(3u, list.size());
+ EXPECT_EQ(md5.HashValue(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(NULL, list.find("SHA256"));
+ EXPECT_EQ(sha512.HashValue(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ fd.Seek(0);
+ Hashes hashes2(list);
+ hashes2.AddFD(fd);
+ list = hashes2.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_EQ(3u, list.size());
+ EXPECT_EQ(md5.HashValue(), list.find("MD5Sum")->HashValue());
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(NULL, list.find("SHA256"));
+ EXPECT_EQ(sha512.HashValue(), list.find("SHA512")->HashValue());
+ EXPECT_EQ(FileSize, list.find("Checksum-FileSize")->HashValue());
+ }
+ fd.Seek(0);
+ {
+ Hashes MD5(Hashes::MD5SUM);
+ MD5.AddFD(fd.Fd());
+ EXPECT_EQ(md5, MD5.GetHashString(Hashes::MD5SUM));
+ }
+ fd.Seek(0);
+ {
+ Hashes SHA1(Hashes::SHA1SUM);
+ SHA1.AddFD(fd.Fd());
+ EXPECT_EQ(sha1, SHA1.GetHashString(Hashes::SHA1SUM));
+ }
+ fd.Seek(0);
+ {
+ Hashes SHA2(Hashes::SHA256SUM);
+ SHA2.AddFD(fd.Fd());
+ EXPECT_EQ(sha256, SHA2.GetHashString(Hashes::SHA256SUM));
+ }
+ fd.Seek(0);
+ {
+ Hashes SHA2(Hashes::SHA512SUM);
+ SHA2.AddFD(fd.Fd());
+ EXPECT_EQ(sha512, SHA2.GetHashString(Hashes::SHA512SUM));
+ }
+ fd.Close();
+
+ HashString sha2file("SHA512", sha512.HashValue());
+ EXPECT_TRUE(sha2file.VerifyFile("/etc/os-release"));
+ HashString sha2wrong("SHA512", "00000000000");
+ EXPECT_FALSE(sha2wrong.VerifyFile("/etc/os-release"));
+ EXPECT_EQ(sha2file, sha2file);
+ EXPECT_TRUE(sha2file == sha2file);
+ EXPECT_NE(sha2file, sha2wrong);
+ EXPECT_TRUE(sha2file != sha2wrong);
+
+ HashString sha2big("SHA256", sha256.HashValue());
+ EXPECT_TRUE(sha2big.VerifyFile("/etc/os-release"));
+ HashString sha2small("sha256:" + sha256.HashValue());
+ EXPECT_TRUE(sha2small.VerifyFile("/etc/os-release"));
+ EXPECT_EQ(sha2big, sha2small);
+ EXPECT_TRUE(sha2big == sha2small);
+ EXPECT_FALSE(sha2big != sha2small);
+
+ HashStringList hashes;
+ EXPECT_TRUE(hashes.empty());
+ EXPECT_TRUE(hashes.push_back(sha2file));
+ EXPECT_FALSE(hashes.empty());
+ EXPECT_EQ(1u, hashes.size());
+
+ HashStringList wrong;
+ EXPECT_TRUE(wrong.push_back(sha2wrong));
+ EXPECT_NE(wrong, hashes);
+ EXPECT_FALSE(wrong == hashes);
+ EXPECT_TRUE(wrong != hashes);
+
+ HashStringList similar;
+ EXPECT_TRUE(similar.push_back(sha2big));
+ EXPECT_NE(similar, hashes);
+ EXPECT_FALSE(similar == hashes);
+ EXPECT_TRUE(similar != hashes);
+
+ EXPECT_TRUE(hashes.push_back(sha2big));
+ EXPECT_EQ(2u, hashes.size());
+ EXPECT_TRUE(hashes.push_back(sha2small));
+ EXPECT_EQ(2u, hashes.size());
+ EXPECT_FALSE(hashes.push_back(sha2wrong));
+ EXPECT_EQ(2u, hashes.size());
+ EXPECT_TRUE(hashes.VerifyFile("/etc/os-release"));
+
+ EXPECT_EQ(similar, hashes);
+ EXPECT_TRUE(similar == hashes);
+ EXPECT_FALSE(similar != hashes);
+ similar.clear();
+ EXPECT_TRUE(similar.empty());
+ EXPECT_EQ(0u, similar.size());
+ EXPECT_NE(similar, hashes);
+ EXPECT_FALSE(similar == hashes);
+ EXPECT_TRUE(similar != hashes);
+}
+TEST(HashSumsTest, HashStringList)
+{
+ _config->Clear("Acquire::ForceHash");
+
+ HashStringList list;
+ EXPECT_TRUE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(0u, list.size());
+ EXPECT_EQ(NULL, list.find(NULL));
+ EXPECT_EQ(NULL, list.find(""));
+ EXPECT_EQ(NULL, list.find("MD5Sum"));
+ EXPECT_EQ(NULL, list.find("ROT26"));
+ EXPECT_EQ(NULL, list.find("SHA1"));
+ EXPECT_EQ(0u, list.FileSize());
+
+ // empty lists aren't equal
+ HashStringList list2;
+ EXPECT_FALSE(list == list2);
+ EXPECT_TRUE(list != list2);
+
+ // some hashes don't really contribute to usability
+ list.push_back(HashString("Checksum-FileSize", "29"));
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(1u, list.size());
+ EXPECT_EQ(29u, list.FileSize());
+ list.push_back(HashString("MD5Sum", "d41d8cd98f00b204e9800998ecf8427e"));
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(2u, list.size());
+ EXPECT_EQ(29u, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ list.push_back(HashString("SHA1", "cacecbd74968bc90ea3342767e6b94f46ddbcafc"));
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(3u, list.size());
+ EXPECT_EQ(29u, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("SHA1"));
+ list.push_back(HashString("SHA256", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"));
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(4u, list.size());
+ EXPECT_EQ(29u, list.FileSize());
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("SHA1"));
+ EXPECT_TRUE(NULL != list.find("SHA256"));
+
+ Hashes hashes;
+ hashes.Add("The quick brown fox jumps over the lazy dog");
+ list = hashes.GetHashStringList();
+ EXPECT_FALSE(list.empty());
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(5u, list.size());
+ EXPECT_TRUE(NULL != list.find(NULL));
+ EXPECT_TRUE(NULL != list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Set("Acquire::ForceHash", "MD5Sum");
+ EXPECT_FALSE(list.empty());
+ EXPECT_TRUE(list.usable());
+ EXPECT_EQ(5u, list.size());
+ EXPECT_TRUE(NULL != list.find(NULL));
+ EXPECT_TRUE(NULL != list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Set("Acquire::ForceHash", "ROT26");
+ EXPECT_FALSE(list.empty());
+ EXPECT_FALSE(list.usable());
+ EXPECT_EQ(5u, list.size());
+ EXPECT_TRUE(NULL == list.find(NULL));
+ EXPECT_TRUE(NULL == list.find(""));
+ EXPECT_TRUE(NULL != list.find("MD5Sum"));
+ EXPECT_TRUE(NULL != list.find("Checksum-FileSize"));
+ EXPECT_TRUE(NULL == list.find("ROT26"));
+
+ _config->Clear("Acquire::ForceHash");
+
+ list2.push_back(*list.find("MD5Sum"));
+ EXPECT_TRUE(list == list2);
+ EXPECT_FALSE(list != list2);
+
+ // introduce a mismatch to the list
+ list2.push_back(HashString("SHA1", "cacecbd74968bc90ea3342767e6b94f46ddbcafc"));
+ EXPECT_FALSE(list == list2);
+ EXPECT_TRUE(list != list2);
+
+ _config->Set("Acquire::ForceHash", "MD5Sum");
+ EXPECT_TRUE(list == list2);
+ EXPECT_FALSE(list != list2);
+
+ _config->Clear("Acquire::ForceHash");
+}
diff --git a/test/libapt/indexcopytosourcelist_test.cc b/test/libapt/indexcopytosourcelist_test.cc
new file mode 100644
index 0000000..7dbe973
--- /dev/null
+++ b/test/libapt/indexcopytosourcelist_test.cc
@@ -0,0 +1,109 @@
+#include <config.h>
+
+#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/indexcopy.h>
+
+#include <cstdio>
+#include <string>
+
+#include <gtest/gtest.h>
+
+class NoCopy : private IndexCopy {
+ public:
+ std::string ConvertToSourceList(std::string const &CD,std::string &&Path) {
+ IndexCopy::ConvertToSourceList(CD, Path);
+ return Path;
+ }
+ bool GetFile(std::string &/*Filename*/, unsigned long long &/*Size*/) APT_OVERRIDE { return false; }
+ bool RewriteEntry(FileFd & /*Target*/, std::string const &/*File*/) APT_OVERRIDE { return false; }
+ const char *GetFileName() APT_OVERRIDE { return NULL; }
+ const char *Type() APT_OVERRIDE { return NULL; }
+
+};
+
+TEST(IndexCopyTest, ConvertToSourceList)
+{
+ NoCopy ic;
+ std::string const CD("/media/cdrom/");
+
+ char const * Releases[] = { "unstable", "wheezy-updates", NULL };
+ char const * Components[] = { "main", "non-free", NULL };
+
+ for (char const ** Release = Releases; *Release != NULL; ++Release)
+ {
+ SCOPED_TRACE(std::string("Release ") + *Release);
+ for (char const ** Component = Components; *Component != NULL; ++Component)
+ {
+ SCOPED_TRACE(std::string("Component ") + *Component);
+ std::string const Path = std::string("dists/") + *Release + "/" + *Component + "/";
+ std::string const Binary = Path + "binary-";
+ std::string const A = Binary + "armel/";
+ std::string const B = Binary + "mips/";
+ std::string const C = Binary + "kfreebsd-mips/";
+ std::string const S = Path + "source/";
+ std::string const List = std::string(*Release) + " " + *Component;
+
+ {
+ SCOPED_TRACE("no archs configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "all");
+ _config->Set("APT::Architectures::", "all");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "mips");
+ _config->Set("APT::Architectures::", "mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("kfreebsd-mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "kfreebsd-mips");
+ _config->Set("APT::Architectures::", "kfreebsd-mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(A, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("armel configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(B, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+
+ {
+ SCOPED_TRACE("armel+mips configured");
+ _config->Clear("APT");
+ _config->Set("APT::Architecture", "armel");
+ _config->Set("APT::Architectures::", "armel");
+ _config->Set("APT::Architectures::", "mips");
+ APT::Configuration::getArchitectures(false);
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + A));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + B));
+ EXPECT_EQ(C, ic.ConvertToSourceList("/media/cdrom/", CD + C));
+ EXPECT_EQ(List, ic.ConvertToSourceList("/media/cdrom/", CD + S));
+ }
+ }
+ }
+}
diff --git a/test/libapt/install_progress_test.cc b/test/libapt/install_progress_test.cc
new file mode 100644
index 0000000..68101af
--- /dev/null
+++ b/test/libapt/install_progress_test.cc
@@ -0,0 +1,25 @@
+#include <config.h>
+
+#include <apt-pkg/install-progress.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(InstallProgressTest, FancyGetTextProgressStr)
+{
+ APT::Progress::PackageManagerFancy p;
+
+ EXPECT_EQ(60u, p.GetTextProgressStr(0.5, 60).size());
+ EXPECT_EQ("[#.]", p.GetTextProgressStr(0.5, 4));
+ EXPECT_EQ("[..........]", p.GetTextProgressStr(0.0, 12));
+ EXPECT_EQ("[#.........]", p.GetTextProgressStr(0.1, 12));
+ EXPECT_EQ("[####......]", p.GetTextProgressStr(0.4999, 12));
+ EXPECT_EQ("[#####.....]", p.GetTextProgressStr(0.5001, 12));
+ EXPECT_EQ("[#########.]", p.GetTextProgressStr(0.9001, 12));
+ EXPECT_EQ("[##########]", p.GetTextProgressStr(1.0, 12));
+
+ // deal with incorrect inputs gracefully (or should we die instead?)
+ EXPECT_EQ("[..........]", p.GetTextProgressStr(-1.0, 12));
+ EXPECT_EQ("[##########]", p.GetTextProgressStr(2.0, 12));
+}
diff --git a/test/libapt/json_test.cc b/test/libapt/json_test.cc
new file mode 100644
index 0000000..ee8f3ce
--- /dev/null
+++ b/test/libapt/json_test.cc
@@ -0,0 +1,69 @@
+#include <config.h>
+#include "../../apt-private/private-cachefile.cc"
+#include "../../apt-private/private-json-hooks.cc"
+#include <gtest/gtest.h>
+#include <string>
+
+TEST(JsonTest, JsonString)
+{
+ std::ostringstream os;
+
+ // Check for escaping backslash and quotation marks, and ensure that we do not change number formatting
+ JsonWriter(os).value("H al\"l\\o").value(17);
+
+ EXPECT_EQ("\"H al\\u0022l\\u005Co\"17", os.str());
+
+ for (int i = 0; i <= 0x1F; i++)
+ {
+ os.str("");
+
+ JsonWriter(os).encodeString(os, std::string("X") + char(i) + "Z");
+
+ std::string exp;
+ strprintf(exp, "\"X\\u%04XZ\"", i);
+
+ EXPECT_EQ(exp, os.str());
+ }
+}
+
+TEST(JsonTest, JsonObject)
+{
+ std::ostringstream os;
+
+ JsonWriter(os).beginObject().name("key").value("value").endObject();
+
+ EXPECT_EQ("{\"key\":\"value\"}", os.str());
+}
+
+TEST(JsonTest, JsonArrayAndValues)
+{
+ std::ostringstream os;
+
+ JsonWriter(os).beginArray().value(0).value("value").value(1).value(true).endArray();
+
+ EXPECT_EQ("[0,\"value\",1,true]", os.str());
+}
+TEST(JsonTest, JsonStackRegression)
+{
+ std::ostringstream os;
+
+ JsonWriter w(os);
+
+ // Nest those things deeply such that we transition states:
+ // object -> array -> object; -> array -> object
+ // Older versions never popped back and got stuck on array state.
+ w.beginObject();
+ w.name("a").beginArray().beginObject().endObject().endArray();
+ w.name("b").beginArray().beginObject().endObject().endArray();
+ w.endObject();
+
+ EXPECT_EQ("{\"a\":[{}],\"b\":[{}]}", os.str());
+}
+TEST(JsonTest, JsonNull)
+{
+ std::ostringstream os;
+
+ JsonWriter(os).value(nullptr);
+
+ EXPECT_EQ("null", os.str());
+}
diff --git a/test/libapt/openmaybeclearsignedfile_test.cc b/test/libapt/openmaybeclearsignedfile_test.cc
new file mode 100644
index 0000000..4db8967
--- /dev/null
+++ b/test/libapt/openmaybeclearsignedfile_test.cc
@@ -0,0 +1,364 @@
+#include <config.h>
+
+#include <apt-pkg/error.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/gpgv.h>
+
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+/* The test files are created with the 'Joe Sixpack' and 'Marvin Paranoid'
+ test key included in the integration testing framework */
+
+static void EXPECT_SUCCESSFUL_PARSE(std::string const &tempfile)
+{
+ FileFd fd;
+ EXPECT_TRUE(OpenMaybeClearSignedFile(tempfile, fd));
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "Test");
+ EXPECT_TRUE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,SimpleSignedFile)
+{
+ // Using c++11 raw-strings would be nifty, but travis doesn't support it…
+ auto const file = createTemporaryFile("simplesignedfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+
+TEST(OpenMaybeClearSignedFileTest,WhitespaceSignedFile)
+{
+ // no raw-string here to protect the whitespace from cleanup
+ auto const file = createTemporaryFile("simplesignedfile", "-----BEGIN PGP SIGNED MESSAGE----- \t \n"
+"Hash: SHA512 \n"
+" \n"
+"Test \n"
+"-----BEGIN PGP SIGNATURE----- \n"
+" \n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt \n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l \n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg \n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k \n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx \n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns \n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq \n"
+"=TB1F \n"
+"-----END PGP SIGNATURE-----");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+
+TEST(OpenMaybeClearSignedFileTest,SignedFileWithContentHeaders)
+{
+ auto const file = createTemporaryFile("headerssignedfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Version: 0.8.15~exp1\n"
+"Hash: SHA512\n"
+"Comment: I love you!\n"
+"X-Expires: never\n"
+"Multilines: no\n"
+" yes\n"
+" maybe\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+
+TEST(OpenMaybeClearSignedFileTest,SignedFileWithTwoSignatures)
+{
+ auto const file = createTemporaryFile("doublesignedfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFHBAEBCgAxFiEE3mauypFRr6GHfsMd6FJdR1KBROIFAlhT/yYTHG1hcnZpbkBl\n"
+"eGFtcGxlLm9yZwAKCRDoUl1HUoFE4qq3B/459MSk3xCW30wc5+ul5ZxTSg6eLYPJ\n"
+"tfVNYi90/ZxRrYQAN+EWozEIZcxoMYp8Ans3++irkjPbHs4NsesmFKt2W5meFl4V\n"
+"oUzYrOh5y5GlDeF7ok5g9atQe8BojjBics+g1IBYcnaMU+ywONmlixa03IPGfxV5\n"
+"oTx02Xvlns20i6HRc0WFtft5q1hXo4EIlVc9O0u902SVEEkeuHF3+bCcXrNLPBJA\n"
+"+8dxmH5+i89f/kVqURrdHdEuA1tsTNyb2C+lvRONh21H8QRRTU/iUQSzV6vZvof5\n"
+"ASc9hsAZRG0xHuRU0F94V/XrkWw8QYAobJ/yxvs4L0EuA4optbSqawDB\n"
+"=CP8j\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+
+
+static void EXPECT_FAILED_PARSE(std::string const &tempfile, std::string const &error)
+{
+ EXPECT_TRUE(_error->empty());
+ FileFd fd;
+ EXPECT_FALSE(OpenMaybeClearSignedFile(tempfile, fd));
+ EXPECT_FALSE(_error->empty());
+ EXPECT_FALSE(fd.IsOpen());
+ ASSERT_TRUE(_error->PendingError());
+
+ std::string msg;
+ EXPECT_TRUE(_error->PopMessage(msg));
+ EXPECT_EQ(msg, error);
+}
+
+TEST(OpenMaybeClearSignedFileTest,TwoSimpleSignedFile)
+{
+ // read only the first message
+ auto const file = createTemporaryFile("twosimplesignedfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----");
+ EXPECT_TRUE(_error->empty());
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ // technically they are signed, but we just want one message
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' contains unsigned lines.");
+}
+
+TEST(OpenMaybeClearSignedFileTest,UnsignedFile)
+{
+ auto const file = createTemporaryFile("unsignedfile", "Test");
+ EXPECT_FALSE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+
+TEST(OpenMaybeClearSignedFileTest,GarbageTop)
+{
+ auto const file = createTemporaryFile("garbagetop", "Garbage\n"
+"-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_FALSE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' does not start with a signed message block.");
+}
+
+TEST(OpenMaybeClearSignedFileTest,GarbageHeader)
+{
+ auto const file = createTemporaryFile("garbageheader", "-----BEGIN PGP SIGNED MESSAGE----- Garbage\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_FALSE(StartsWithGPGClearTextSignature(file.Name()));
+ // beware: the file will be successfully opened as unsigned file
+ FileFd fd;
+ EXPECT_TRUE(OpenMaybeClearSignedFile(file.Name(), fd));
+ EXPECT_TRUE(fd.IsOpen());
+ char buffer[100];
+ EXPECT_TRUE(fd.ReadLine(buffer, sizeof(buffer)));
+ EXPECT_STREQ(buffer, "-----BEGIN PGP SIGNED MESSAGE----- Garbage\n");
+ EXPECT_FALSE(fd.Eof());
+}
+
+TEST(OpenMaybeClearSignedFileTest,GarbageBottom)
+{
+ auto const file = createTemporaryFile("garbagebottom", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n"
+"Garbage");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' contains unsigned lines.");
+}
+
+TEST(OpenMaybeClearSignedFileTest,BogusNoSig)
+{
+ auto const file = createTemporaryFile("bogusnosig", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Splitting of clearsigned file " + file.Name() + " failed as it doesn't contain all expected parts");
+}
+
+TEST(OpenMaybeClearSignedFileTest,BogusSigStart)
+{
+ auto const file = createTemporaryFile("bogusnosig", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Signature in file " + file.Name() + " wasn't closed");
+}
+
+TEST(OpenMaybeClearSignedFileTest,DashedSignedFile)
+{
+ auto const file = createTemporaryFile("dashedsignedfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"- Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_SUCCESSFUL_PARSE(file.Name());
+}
+TEST(OpenMaybeClearSignedFileTest,StrangeDashArmorFile)
+{
+ auto const file = createTemporaryFile("strangedashfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"-Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' contains unexpected line starting with a dash (armor)");
+}
+TEST(OpenMaybeClearSignedFileTest,StrangeDashMsgFile)
+{
+ auto const file = createTemporaryFile("strangedashfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"-Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"X/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' contains unexpected line starting with a dash (msg)");
+}
+TEST(OpenMaybeClearSignedFileTest,StrangeDashSigFile)
+{
+ auto const file = createTemporaryFile("strangedashfile", "-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA512\n"
+"\n"
+"Test\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQFEBAEBCgAuFiEENKjp0Y2zIPNn6OqgWpDRQdusja4FAlhT7+kQHGpvZUBleGFt\n"
+"cGxlLm9yZwAKCRBakNFB26yNrjvEB/9/e3jA1l0fvPafx9LEXcH8CLpUFQK7ra9l\n"
+"3M4YAH4JKQlTG1be7ixruBRlCTh3YiSs66fKMeJeUYoxA2HPhvbGFEjQFAxunEYg\n"
+"-/LBKv1mQWa+Q34P5GBjK8kQdLCN+yJAiUErmWNQG3GPninrxsC9tY5jcWvHeP1k\n"
+"V7N3MLnNqzXaCJM24mnKidC5IDadUdQ8qC8c3rjUexQ8vBz0eucH56jbqV5oOcvx\n"
+"pjlW965dCPIf3OI8q6J7bIOjyY+u/PTcVlqPq3TUz/ti6RkVbKpLH0D4ll3lUTns\n"
+"JQt/+gJCPxHUJphy8sccBKhW29CLELJIIafvU30E1nWn9szh2Xjq\n"
+"=TB1F\n"
+"-----END PGP SIGNATURE-----\n");
+ EXPECT_TRUE(StartsWithGPGClearTextSignature(file.Name()));
+ EXPECT_FAILED_PARSE(file.Name(), "Clearsigned file '" + file.Name() + "' contains unexpected line starting with a dash (sig)");
+}
diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc
new file mode 100644
index 0000000..f641c8c
--- /dev/null
+++ b/test/libapt/parsedepends_test.cc
@@ -0,0 +1,280 @@
+#include <config.h>
+
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/deblistparser.h>
+#include <apt-pkg/pkgcache.h>
+
+#include <cstring>
+#include <string>
+
+#include <gtest/gtest.h>
+
+static void parseDependency(bool const StripMultiArch, bool const ParseArchFlags, bool const ParseRestrictionsList, std::string Arch)
+{
+ std::string Package;
+ std::string Version;
+ unsigned int Op = 5;
+ unsigned int Null = 0;
+ // The tests are made for amd64. Specify a different arch here to check if
+ // they still work.
+ _config->Set("APT::Architecture",Arch);
+ _config->Set("APT::Build-Profiles","stage1");
+
+ const char* Depends =
+ "debhelper:any (>= 5.0), "
+ "libdb-dev:any, "
+ "gettext:native (<= 0.12), "
+ "libcurl4-gnutls-dev:native | libcurl3-gnutls-dev (>> 7.15.5), "
+ "docbook-xml, "
+ "apt (>= 0.7.25), "
+ "not-for-me [ !amd64 ], "
+ "only-for-me [ amd64 ], "
+ "any-for-me [ any ], "
+ "not-for-darwin [ !darwin-any ], "
+ "cpu-for-me [ any-amd64 ], "
+ "os-for-me [ linux-any ], "
+ "libc-for-me [ gnu-linux-any ], "
+ "libc-not-for-me [ musl-linux-any ], "
+ "cpu-not-for-me [ any-armel ], "
+ "os-not-for-me [ kfreebsd-any ], "
+ "not-in-stage1 <!stage1>, "
+ "not-stage1-and-not-nodoc <!nodoc !stage1>, "
+ "not-stage1-or-not-nodoc <!nodoc> <!stage1>, "
+ "unknown-profile <unknown stage1>, "
+ "overlord-dev:any (= 7.15.3~) | overlord-dev:native (>> 7.15.5), "
+ ;
+
+ // Stripping MultiArch is currently the default setting to not confuse
+ // non-MultiArch capable users of the library with "strange" extensions.
+ const char* Start = Depends;
+ const char* End = Depends + strlen(Depends);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("debhelper", Package);
+ else
+ EXPECT_EQ("debhelper:any", Package);
+ EXPECT_EQ("5.0", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::GreaterEq, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("libdb-dev", Package);
+ else
+ EXPECT_EQ("libdb-dev:any", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("gettext", Package);
+ else
+ EXPECT_EQ("gettext:native", Package);
+ EXPECT_EQ("0.12", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::LessEq, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("libcurl4-gnutls-dev", Package);
+ else
+ EXPECT_EQ("libcurl4-gnutls-dev:native", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Or, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("libcurl3-gnutls-dev", Package);
+ EXPECT_EQ("7.15.5", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Greater, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("docbook-xml", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("apt", Package);
+ EXPECT_EQ("0.7.25", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::GreaterEq, Op);
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("only-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("any-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("not-for-darwin", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("cpu-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("os-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("libc-for-me", Package);
+ EXPECT_EQ("", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::NoOp, Op);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // libc-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // cpu-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseArchFlags == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // os-not-for-me
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-in-stage1
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // not-stage1-and-not-nodoc
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("not-stage1-or-not-nodoc", Package);
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ if (ParseRestrictionsList == true) {
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ EXPECT_EQ("", Package); // unknown-profile
+ } else {
+ EXPECT_EQ(true, 0 == debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64"));
+ Start = strstr(Start, ",");
+ Start++;
+ }
+
+ Start = debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("overlord-dev", Package);
+ else
+ EXPECT_EQ("overlord-dev:any", Package);
+ EXPECT_EQ("7.15.3~", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Equals | pkgCache::Dep::Or, Op);
+
+ debListParser::ParseDepends(Start, End, Package, Version, Op, ParseArchFlags, StripMultiArch, ParseRestrictionsList, "amd64");
+ if (StripMultiArch == true)
+ EXPECT_EQ("overlord-dev", Package);
+ else
+ EXPECT_EQ("overlord-dev:native", Package);
+ EXPECT_EQ("7.15.5", Version);
+ EXPECT_EQ(Null | pkgCache::Dep::Greater, Op);
+}
+
+// FIXME: This testcase is too big/complex
+TEST(ParseDependsTest, Everything)
+{
+ bool StripMultiArch = true;
+ bool ParseArchFlags = false;
+ bool ParseRestrictionsList = false;
+ unsigned short runner = 0;
+
+test:
+ {
+ SCOPED_TRACE(std::string("StripMultiArch: ") + (StripMultiArch ? "true" : "false"));
+ SCOPED_TRACE(std::string("ParseArchFlags: ") + (ParseArchFlags ? "true" : "false"));
+ SCOPED_TRACE(std::string("ParseRestrictionsList: ") + (ParseRestrictionsList ? "true" : "false"));
+ parseDependency(StripMultiArch, ParseArchFlags, ParseRestrictionsList, "kfreebsd-i386");
+ parseDependency(StripMultiArch, ParseArchFlags, ParseRestrictionsList, "amd64");
+ }
+ if (StripMultiArch == false) {
+ if (ParseArchFlags == false)
+ ParseRestrictionsList = !ParseRestrictionsList;
+ ParseArchFlags = !ParseArchFlags;
+ }
+ StripMultiArch = !StripMultiArch;
+
+ runner++;
+ if (runner < 8)
+ goto test; // this is the prove: tests are really evil ;)
+}
diff --git a/test/libapt/pattern_test.cc b/test/libapt/pattern_test.cc
new file mode 100644
index 0000000..55bc4bd
--- /dev/null
+++ b/test/libapt/pattern_test.cc
@@ -0,0 +1,224 @@
+/*
+ * cachefilter-patterns.h - Pattern parser and additional patterns as matchers
+ *
+ * Copyright (c) 2019 Canonical Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <config.h>
+#include <apt-pkg/cachefilter-patterns.h>
+#include <apt-pkg/cachefilter.h>
+
+#include <gtest/gtest.h>
+
+using namespace APT::Internal;
+
+#define EXPECT_EXCEPTION(exp, exc, msg) \
+ caught = false; \
+ try \
+ { \
+ exp; \
+ } \
+ catch (exc & e) \
+ { \
+ caught = true; \
+ EXPECT_TRUE(e.message.find(msg) != std::string::npos) << msg << " not in " << e.message; \
+ }; \
+ EXPECT_TRUE(caught) << #exp "should have thrown an exception"
+
+TEST(TreeParserTest, ParseInvalid)
+{
+ bool caught = false;
+
+ // Not a valid pattern: Reject
+ EXPECT_EXCEPTION(PatternTreeParser("?").parse(), PatternTreeParser::Error, "Pattern must have a term");
+ EXPECT_EXCEPTION(PatternTreeParser("?AB?").parse(), PatternTreeParser::Error, "Pattern must have a term");
+ EXPECT_EXCEPTION(PatternTreeParser("~").parse(), PatternTreeParser::Error, "Unknown short pattern");
+
+ // Not a pattern at all: Report nullptr
+ EXPECT_EQ(PatternTreeParser("A?").parse(), nullptr);
+}
+
+TEST(TreeParserTest, ParseWord)
+{
+ auto node = PatternTreeParser("?word(word)").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ ASSERT_EQ(patternNode->arguments.size(), 1u);
+ auto wordNode = dynamic_cast<PatternTreeParser::WordNode *>(patternNode->arguments[0].get());
+
+ EXPECT_EQ(patternNode->arguments[0].get(), wordNode);
+ EXPECT_EQ(wordNode->word, "word");
+}
+
+TEST(TreeParserTest, ParseQuotedWord)
+{
+ auto node = PatternTreeParser("?word(\"a word\")").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ ASSERT_EQ(patternNode->arguments.size(), 1u);
+ auto wordNode = dynamic_cast<PatternTreeParser::WordNode *>(patternNode->arguments[0].get());
+
+ EXPECT_EQ(patternNode->arguments[0].get(), wordNode);
+ EXPECT_EQ(wordNode->word, "a word");
+}
+
+TEST(TreeParserTest, ParsePattern)
+{
+ auto node = PatternTreeParser("?hello").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_TRUE(patternNode->arguments.empty());
+ EXPECT_FALSE(patternNode->haveArgumentList);
+}
+
+TEST(TreeParserTest, ParseWithEmptyArgs)
+{
+ auto node = PatternTreeParser("?hello()").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_TRUE(patternNode->arguments.empty());
+ EXPECT_TRUE(patternNode->haveArgumentList);
+}
+
+TEST(TreeParserTest, ParseWithOneArgs)
+{
+ auto node = PatternTreeParser("?hello(foo)").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_EQ(1u, patternNode->arguments.size());
+}
+
+TEST(TreeParserTest, ParseWithManyArgs)
+{
+ auto node = PatternTreeParser("?hello(foo,bar)").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_EQ(2u, patternNode->arguments.size());
+}
+
+TEST(TreeParserTest, ParseWithManyArgsWithSpaces)
+{
+ auto node = PatternTreeParser("?hello (foo, bar)").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_EQ(2u, patternNode->arguments.size());
+}
+
+TEST(TreeParserTest, ParseWithManyArgsWithSpacesWithTrailingComma)
+{
+ auto node = PatternTreeParser("?hello (foo, bar,)").parseTop();
+ auto patternNode = dynamic_cast<PatternTreeParser::PatternNode *>(node.get());
+
+ EXPECT_EQ(node.get(), patternNode);
+ EXPECT_EQ(patternNode->term, "?hello");
+ EXPECT_EQ(2u, patternNode->arguments.size());
+}
+
+// Helper
+static bool samePattern(const std::unique_ptr<PatternTreeParser::Node> &a, const std::unique_ptr<PatternTreeParser::Node> &b)
+{
+ auto pa = dynamic_cast<const PatternTreeParser::PatternNode *>(a.get());
+ auto pb = dynamic_cast<const PatternTreeParser::PatternNode *>(b.get());
+
+ if (pa && pb)
+ {
+ if (pa->term != pb->term || pa->haveArgumentList != pb->haveArgumentList || pa->arguments.size() != pb->arguments.size())
+ return false;
+
+ for (size_t i = 0; i < pa->arguments.size(); i++)
+ {
+ if (!samePattern(pa->arguments[i], pb->arguments[i]))
+ return false;
+ }
+ return true;
+ }
+
+ auto wa = dynamic_cast<const PatternTreeParser::WordNode *>(a.get());
+ auto wb = dynamic_cast<const PatternTreeParser::WordNode *>(b.get());
+ if (wa && wb)
+ return wa->word == wb->word && wa->quoted == wb->quoted;
+
+ return false;
+}
+
+#define EXPECT_PATTERN_EQ(shrt, lng) \
+ EXPECT_TRUE(samePattern(PatternTreeParser(shrt).parseTop(), PatternTreeParser(lng).parseTop()))
+#define EXPECT_PATTERN_EQ_ATOMIC(shrt, lng) \
+ EXPECT_TRUE(PatternTreeParser(shrt).parseTop()); \
+ caught = false; \
+ try \
+ { \
+ PatternTreeParser(shrt "XXX").parseTop(); \
+ } \
+ catch (PatternTreeParser::Error & e) \
+ { \
+ caught = true; \
+ }; \
+ EXPECT_TRUE(caught) << shrt "XXX should have thrown an exception"; \
+ EXPECT_PATTERN_EQ(shrt, lng)
+
+TEST(TreeParserTest, ParseShortPattern)
+{
+ bool caught;
+ EXPECT_PATTERN_EQ("~ramd64", "?architecture(amd64)");
+ EXPECT_PATTERN_EQ("~AanArchive", "?archive(anArchive)");
+ EXPECT_PATTERN_EQ_ATOMIC("~M", "?automatic");
+ EXPECT_PATTERN_EQ_ATOMIC("~b", "?broken");
+ EXPECT_PATTERN_EQ_ATOMIC("~c", "?config-files");
+ EXPECT_PATTERN_EQ_ATOMIC("~E", "?essential");
+ EXPECT_PATTERN_EQ_ATOMIC("~F", "?false");
+ EXPECT_PATTERN_EQ_ATOMIC("~g", "?garbage");
+ EXPECT_PATTERN_EQ_ATOMIC("~i", "?installed");
+ EXPECT_PATTERN_EQ("~napt", "?name(apt)");
+ EXPECT_PATTERN_EQ_ATOMIC("~o", "?obsolete");
+ EXPECT_PATTERN_EQ("~Obar", "?origin(bar)");
+ EXPECT_PATTERN_EQ("~sfoo", "?section(foo)");
+ EXPECT_PATTERN_EQ("~esourcename", "?source-package(sourcename)");
+ EXPECT_PATTERN_EQ_ATOMIC("~T", "?true");
+ EXPECT_PATTERN_EQ_ATOMIC("~U", "?upgradable");
+ EXPECT_PATTERN_EQ("~Vverstr", "?version(verstr)");
+ EXPECT_PATTERN_EQ_ATOMIC("~v", "?virtual");
+ EXPECT_PATTERN_EQ("!?foo", "?not(?foo)");
+
+ caught = false;
+ try
+ {
+ PatternTreeParser("!x").parseTop();
+ }
+ catch (PatternTreeParser::Error &e)
+ {
+ caught = true;
+ };
+ EXPECT_TRUE(caught) << "!X should have thrown an exception";
+
+ EXPECT_PATTERN_EQ("?a?b", "?and(?a, ?b)");
+ EXPECT_PATTERN_EQ("~T~F", "?and(?true, ?false)");
+ EXPECT_PATTERN_EQ("~T ~F", "?and(?true, ?false)");
+ EXPECT_PATTERN_EQ("~T !~F", "?and(?true, ?not(?false))");
+ EXPECT_PATTERN_EQ("!~F ~T", "?and(?not(?false), ?true)");
+ EXPECT_PATTERN_EQ("!~F~T", "?and(?not(?false), ?true)");
+
+ EXPECT_PATTERN_EQ("!~F~T | ~T", "?or(?and(?not(?false), ?true), ?true)");
+ EXPECT_PATTERN_EQ("~ramd64|~rall", "?or(?architecture(amd64), ?architecture(all))");
+ EXPECT_PATTERN_EQ("~ramd64 | ~rall", "?or(?architecture(amd64), ?architecture(all))");
+ EXPECT_PATTERN_EQ("~ramd64?name(foo)", "?and(?architecture(amd64), ?name(foo))");
+
+ EXPECT_PATTERN_EQ("(?A|?B)?C", "?and(?or(?A, ?B), ?C)");
+ EXPECT_PATTERN_EQ("?A|?B?C", "?or(?A, ?and(?B, ?C))");
+ EXPECT_PATTERN_EQ("?A|(?B?C)", "?or(?A, ?and(?B, ?C))");
+ EXPECT_PATTERN_EQ("(?B?C)|?A", "?or(?and(?B, ?C), ?A)");
+ EXPECT_PATTERN_EQ("~napt~nfoo", "?and(?name(apt),?name(foo))");
+ EXPECT_PATTERN_EQ("~napt!~nfoo", "?and(?name(apt),?not(?name(foo)))");
+}
diff --git a/test/libapt/priority_test.cc b/test/libapt/priority_test.cc
new file mode 100644
index 0000000..af7932a
--- /dev/null
+++ b/test/libapt/priority_test.cc
@@ -0,0 +1,16 @@
+#include <config.h>
+#include <apt-pkg/pkgcache.h>
+#include <gtest/gtest.h>
+#include <string>
+
+using std::string;
+
+// Tests for Bug#807523
+TEST(PriorityTest, PriorityPrinting)
+{
+ EXPECT_EQ("required", string(pkgCache::Priority(pkgCache::State::Required)));
+ EXPECT_EQ("important", string(pkgCache::Priority(pkgCache::State::Important)));
+ EXPECT_EQ("standard", string(pkgCache::Priority(pkgCache::State::Standard)));
+ EXPECT_EQ("optional", string(pkgCache::Priority(pkgCache::State::Optional)));
+ EXPECT_EQ("extra", string(pkgCache::Priority(pkgCache::State::Extra)));
+}
diff --git a/test/libapt/sourcelist_test.cc b/test/libapt/sourcelist_test.cc
new file mode 100644
index 0000000..f6a1a91
--- /dev/null
+++ b/test/libapt/sourcelist_test.cc
@@ -0,0 +1,33 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/sourcelist.h>
+
+#include <cstdlib>
+#include <cstring>
+#include <string>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(SourceListTest,ParseFileDeb822)
+{
+ auto const file = createTemporaryFile("parsefiledeb822.XXXXXX.sources",
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: stable\n"
+ "Components: main\n"
+ "Description: short\n"
+ " long description that can be very long\n"
+ "\n"
+ "Types: deb\n"
+ "URIs: http://ftp.debian.org/debian\n"
+ "Suites: unstable\n"
+ "Components: main non-free\n");
+
+ pkgSourceList sources;
+ EXPECT_TRUE(sources.Read(file.Name()));
+ EXPECT_EQ(2u, sources.size());
+}
diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc
new file mode 100644
index 0000000..f042579
--- /dev/null
+++ b/test/libapt/srvrecs_test.cc
@@ -0,0 +1,85 @@
+#include <config.h>
+
+#include <apt-pkg/srvrec.h>
+#include <apt-pkg/strutl.h>
+
+#include <algorithm>
+#include <iostream>
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(SrvRecTest, PopFromSrvRecs)
+{
+ std::vector<SrvRec> Meep;
+ Meep.emplace_back("foo", 20, 0, 80);
+ Meep.emplace_back("bar", 20, 0, 80);
+ Meep.emplace_back("baz", 30, 0, 80);
+
+ EXPECT_EQ(Meep.size(), 3u);
+ SrvRec const result = PopFromSrvRecs(Meep);
+ // ensure that pop removed one element
+ EXPECT_EQ(Meep.size(), 2u);
+ EXPECT_NE(result.target, "baz");
+
+ SrvRec const result2 = PopFromSrvRecs(Meep);
+ EXPECT_NE(result.target, result2.target);
+ EXPECT_NE(result2.target, "baz");
+ EXPECT_EQ(Meep.size(), 1u);
+
+ SrvRec const result3 = PopFromSrvRecs(Meep);
+ EXPECT_EQ(result3.target, "baz");
+ EXPECT_TRUE(Meep.empty());
+}
+
+TEST(SrvRecTest,Randomness)
+{
+ constexpr unsigned int testLength = 100;
+ std::vector<SrvRec> base1;
+ std::vector<SrvRec> base2;
+ std::vector<SrvRec> base3;
+ for (unsigned int i = 0; i < testLength; ++i)
+ {
+ std::string name;
+ strprintf(name, "foo%d", i);
+ base1.emplace_back(name, 20, 0, 80);
+ base2.emplace_back(name, 20, 0, 80);
+ base3.emplace_back(name, 30, 0, 80);
+ }
+ EXPECT_EQ(testLength, base1.size());
+ EXPECT_EQ(testLength, base2.size());
+ EXPECT_EQ(testLength, base3.size());
+ std::move(base3.begin(), base3.end(), std::back_inserter(base2));
+ EXPECT_EQ(testLength*2, base2.size());
+
+ std::vector<SrvRec> first_pull;
+ auto const startingClock = clock();
+ for (unsigned int i = 0; i < testLength; ++i)
+ first_pull.push_back(PopFromSrvRecs(base1));
+ EXPECT_TRUE(base1.empty());
+ EXPECT_FALSE(first_pull.empty());
+ EXPECT_EQ(testLength, first_pull.size());
+
+ // busy-wait for a cpu-clock change as we use it as "random" value
+ if (startingClock != -1)
+ for (int i = 0; i < 100000; ++i)
+ if (startingClock != clock())
+ break;
+
+ std::vector<SrvRec> second_pull;
+ for (unsigned int i = 0; i < testLength; ++i)
+ second_pull.push_back(PopFromSrvRecs(base2));
+ EXPECT_FALSE(base2.empty());
+ EXPECT_FALSE(second_pull.empty());
+ EXPECT_EQ(testLength, second_pull.size());
+
+ EXPECT_EQ(first_pull.size(), second_pull.size());
+ EXPECT_TRUE(std::all_of(first_pull.begin(), first_pull.end(), [](SrvRec const &R) { return R.priority == 20; }));
+ EXPECT_TRUE(std::all_of(second_pull.begin(), second_pull.end(), [](SrvRec const &R) { return R.priority == 20; }));
+ if (startingClock != -1 && startingClock != clock())
+ {
+ EXPECT_FALSE(std::equal(first_pull.begin(), first_pull.end(), second_pull.begin()));
+ }
+
+ EXPECT_TRUE(std::all_of(base2.begin(), base2.end(), [](SrvRec const &R) { return R.priority == 30; }));
+}
diff --git a/test/libapt/stringview_test.cc b/test/libapt/stringview_test.cc
new file mode 100644
index 0000000..9cfaa3b
--- /dev/null
+++ b/test/libapt/stringview_test.cc
@@ -0,0 +1,95 @@
+
+#include <config.h>
+#include <apt-pkg/string_view.h>
+#include <string>
+
+#include <type_traits>
+
+#include <gtest/gtest.h>
+
+TEST(StringViewTest,EmptyString)
+{
+ constexpr APT::StringView defString;
+ static_assert( 0 == defString.length(), "def right size");
+
+ APT::StringView strString{std::string{}};
+ EXPECT_EQ(0u, strString.length());
+
+ constexpr char const * const charp = "";
+ constexpr APT::StringView charpString{charp, 0};
+ static_assert( 0 == charpString.length(), "charp right size");
+
+ APT::StringView charp2String{charp};
+ EXPECT_EQ(0u, strString.length());
+
+ const APT::StringView charaString{""};
+ EXPECT_EQ(0u, charaString.length());
+
+ EXPECT_TRUE(APT::StringView("") == "");
+ EXPECT_FALSE(APT::StringView("") != "");
+}
+
+TEST(StringViewTest,FooString)
+{
+ constexpr APT::StringView defString("fooGARBAGE", 3);
+ static_assert( 3 == defString.length(), "def right size");
+ EXPECT_EQ(0, defString.to_string().compare(0, defString.length(), defString.data(), 3));
+
+ APT::StringView strString{std::string{"foo"}};
+ EXPECT_EQ(3u, strString.length());
+ EXPECT_EQ(0, strString.to_string().compare(0, strString.length(), strString.data(), 3));
+
+ constexpr char const * const charp = "fooGARBAGE";
+ constexpr APT::StringView charpString{charp, 3};
+ EXPECT_EQ(3u, charpString.length());
+ EXPECT_EQ(0, charpString.to_string().compare(0, charpString.length(), charpString.data(), 3));
+
+ char * charp2 = strdup("foo");
+ APT::StringView charp2String{charp2};
+ EXPECT_EQ(3u, charp2String.length());
+ EXPECT_EQ(0, charp2String.to_string().compare(0, charp2String.length(), charp2String.data(), 3));
+ free(charp2);
+
+ const APT::StringView charaString{"foo"};
+ EXPECT_EQ(3u, charaString.length());
+ EXPECT_EQ(0, charaString.to_string().compare(0, charaString.length(), charaString.data(), 3));
+
+ EXPECT_TRUE(APT::StringView("foo") == "foo");
+ EXPECT_FALSE(APT::StringView("foo") != "foo");
+}
+
+TEST(StringViewTest,SubStr)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().substr(6), defString.substr(6).to_string());
+ EXPECT_EQ(defString.to_string().substr(0,5), defString.substr(0,5).to_string());
+ EXPECT_EQ(defString.to_string().substr(6,5), defString.substr(6,5).to_string());
+}
+
+TEST(StringViewTest,Find)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().find('l'), defString.find('l'));
+ EXPECT_EQ(defString.to_string().find('X'), defString.find('X'));
+ EXPECT_EQ(defString.to_string().find('e',3), defString.find('e',3));
+ EXPECT_EQ(defString.to_string().find('l',6), defString.find('l',6));
+ EXPECT_EQ(defString.to_string().find('l',11), defString.find('l',11));
+
+ EXPECT_EQ(defString.to_string().find("l"), defString.find("l"));
+ EXPECT_EQ(defString.to_string().find("ll"), defString.find("ll"));
+ EXPECT_EQ(defString.to_string().find("lo"), defString.find("lo"));
+ EXPECT_EQ(defString.to_string().find("ll", 1), defString.find("ll", 1));
+ EXPECT_EQ(defString.to_string().find("ll", 6), defString.find("ll", 6));
+ EXPECT_EQ(defString.to_string().find("or"), defString.find("or"));
+ EXPECT_EQ(defString.to_string().find("od"), defString.find("od"));
+}
+
+TEST(StringViewTest,RFind)
+{
+ const APT::StringView defString("Hello World!");
+ EXPECT_EQ(defString.to_string().rfind('l'), defString.rfind('l'));
+ EXPECT_EQ(defString.to_string().rfind('X'), defString.rfind('X'));
+ EXPECT_EQ(defString.to_string().rfind('e',3), defString.rfind('e',3));
+ EXPECT_EQ(defString.to_string().rfind('l',6), defString.rfind('l',6));
+ EXPECT_EQ(defString.to_string().rfind('l',11), defString.rfind('l',11));
+}
diff --git a/test/libapt/strutil_test.cc b/test/libapt/strutil_test.cc
new file mode 100644
index 0000000..469de44
--- /dev/null
+++ b/test/libapt/strutil_test.cc
@@ -0,0 +1,446 @@
+#include <config.h>
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/string_view.h>
+#include <apt-pkg/strutl.h>
+#include <limits>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(StrUtilTest,DeEscapeString)
+{
+ // nothing special
+ EXPECT_EQ("", DeEscapeString(""));
+ EXPECT_EQ("foobar", DeEscapeString("foobar"));
+ // hex and octal
+ EXPECT_EQ("foo bar\nbaz", DeEscapeString("foo\\040bar\\x0abaz"));
+ EXPECT_EQ("foo ", DeEscapeString("foo\\040"));
+ EXPECT_EQ("\nbaz", DeEscapeString("\\x0abaz"));
+ EXPECT_EQ("/media/Ubuntu 11.04 amd64", DeEscapeString("/media/Ubuntu\\04011.04\\040amd64"));
+ // double slashes
+ EXPECT_EQ("foo\\ x", DeEscapeString("foo\\\\ x"));
+ EXPECT_EQ("\\foo\\", DeEscapeString("\\\\foo\\\\"));
+
+ // FIXME: the input is bad, the output as well, but we have no indicator for it
+ EXPECT_EQ("aa", DeEscapeString("aa\\x"));
+ EXPECT_EQ("aa0", DeEscapeString("aa\\x0"));
+ EXPECT_EQ("aa", DeEscapeString("aa\\0"));
+ EXPECT_EQ("aaa", DeEscapeString("aa\\0a"));
+}
+TEST(StrUtilTest,StringStrip)
+{
+ EXPECT_EQ("", APT::String::Strip(""));
+ EXPECT_EQ("foobar", APT::String::Strip("foobar"));
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar"));
+
+ EXPECT_EQ("", APT::String::Strip(" "));
+ EXPECT_EQ("", APT::String::Strip(" \r\n \t "));
+
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar "));
+ EXPECT_EQ("foo bar", APT::String::Strip("foo bar \r\n \t "));
+ EXPECT_EQ("foo bar", APT::String::Strip("\r\n \t foo bar"));
+ EXPECT_EQ("bar foo", APT::String::Strip("\r\n \t bar foo \r\n \t "));
+ EXPECT_EQ("bar \t\r\n foo", APT::String::Strip("\r\n \t bar \t\r\n foo \r\n \t "));
+}
+TEST(StrUtilTest,StringSplitBasic)
+{
+ std::vector<std::string> result = StringSplit("", "");
+ EXPECT_TRUE(result.empty());
+
+ result = StringSplit("abc", "");
+ EXPECT_TRUE(result.empty());
+
+ result = StringSplit("", "abc");
+ EXPECT_EQ(result.size(), 1u);
+
+ result = StringSplit("abc", "b");
+ ASSERT_EQ(result.size(), 2u);
+ EXPECT_EQ(result[0], "a");
+ EXPECT_EQ(result[1], "c");
+
+ result = StringSplit("abc", "abc");
+ ASSERT_EQ(result.size(), 2u);
+ EXPECT_EQ(result[0], "");
+ EXPECT_EQ(result[1], "");
+}
+TEST(StrUtilTest,StringSplitDpkgStatus)
+{
+ std::string const input = "status: libnet1:amd64: unpacked";
+ std::vector<std::string> result = StringSplit(input, "xxx");
+ ASSERT_EQ(result.size(), 1u);
+ EXPECT_EQ(result[0], input);
+
+ result = StringSplit(input, "");
+ EXPECT_TRUE(result.empty());
+
+ result = StringSplit(input, ": ");
+ ASSERT_EQ(result.size(), 3u);
+ EXPECT_EQ(result[0], "status");
+ EXPECT_EQ(result[1], "libnet1:amd64");
+ EXPECT_EQ(result[2], "unpacked");
+
+ result = StringSplit("x:y:z", ":", 2);
+ ASSERT_EQ(result.size(), 2u);
+ EXPECT_EQ(result[0], "x");
+ EXPECT_EQ(result[1], "y:z");
+}
+TEST(StrUtilTest,EndsWith)
+{
+ using APT::String::Endswith;
+ EXPECT_TRUE(Endswith("abcd", "d"));
+ EXPECT_TRUE(Endswith("abcd", "cd"));
+ EXPECT_TRUE(Endswith("abcd", "abcd"));
+ EXPECT_FALSE(Endswith("abcd", "x"));
+ EXPECT_FALSE(Endswith("abcd", "abcndefg"));
+}
+TEST(StrUtilTest,StartsWith)
+{
+ using APT::String::Startswith;
+ EXPECT_TRUE(Startswith("abcd", "a"));
+ EXPECT_TRUE(Startswith("abcd", "ab"));
+ EXPECT_TRUE(Startswith("abcd", "abcd"));
+ EXPECT_FALSE(Startswith("abcd", "x"));
+ EXPECT_FALSE(Startswith("abcd", "abcndefg"));
+}
+TEST(StrUtilTest,TimeToStr)
+{
+ EXPECT_EQ("0s", TimeToStr(0));
+ EXPECT_EQ("42s", TimeToStr(42));
+ EXPECT_EQ("9min 21s", TimeToStr((9*60) + 21));
+ EXPECT_EQ("20min 42s", TimeToStr((20*60) + 42));
+ EXPECT_EQ("10h 42min 21s", TimeToStr((10*3600) + (42*60) + 21));
+ EXPECT_EQ("10h 42min 21s", TimeToStr((10*3600) + (42*60) + 21));
+ EXPECT_EQ("1988d 3h 29min 7s", TimeToStr((1988*86400) + (3*3600) + (29*60) + 7));
+
+ EXPECT_EQ("59s", TimeToStr(59));
+ EXPECT_EQ("60s", TimeToStr(60));
+ EXPECT_EQ("1min 1s", TimeToStr(61));
+ EXPECT_EQ("59min 59s", TimeToStr(3599));
+ EXPECT_EQ("60min 0s", TimeToStr(3600));
+ EXPECT_EQ("1h 0min 1s", TimeToStr(3601));
+ EXPECT_EQ("1h 1min 0s", TimeToStr(3660));
+ EXPECT_EQ("23h 59min 59s", TimeToStr(86399));
+ EXPECT_EQ("24h 0min 0s", TimeToStr(86400));
+ EXPECT_EQ("1d 0h 0min 1s", TimeToStr(86401));
+ EXPECT_EQ("1d 0h 1min 0s", TimeToStr(86460));
+}
+TEST(StrUtilTest,SubstVar)
+{
+ EXPECT_EQ("", SubstVar("", "fails", "passes"));
+ EXPECT_EQ("test ", SubstVar("test fails", "fails", ""));
+ EXPECT_EQ("test passes", SubstVar("test passes", "", "fails"));
+
+ EXPECT_EQ("test passes", SubstVar("test passes", "fails", "passes"));
+ EXPECT_EQ("test passes", SubstVar("test fails", "fails", "passes"));
+
+ EXPECT_EQ("starts with", SubstVar("beginnt with", "beginnt", "starts"));
+ EXPECT_EQ("beginnt with", SubstVar("starts with", "starts", "beginnt"));
+ EXPECT_EQ("is in middle", SubstVar("is in der middle", "in der", "in"));
+ EXPECT_EQ("is in der middle", SubstVar("is in middle", "in", "in der"));
+ EXPECT_EQ("does end", SubstVar("does enden", "enden", "end"));
+ EXPECT_EQ("does enden", SubstVar("does end", "end", "enden"));
+
+ EXPECT_EQ("abc", SubstVar("abc", "d", "a"));
+ EXPECT_EQ("abc", SubstVar("abd", "d", "c"));
+ EXPECT_EQ("abc", SubstVar("adc", "d", "b"));
+ EXPECT_EQ("abc", SubstVar("dbc", "d", "a"));
+
+ EXPECT_EQ("b", SubstVar("b", "aa", "a"));
+ EXPECT_EQ("bb", SubstVar("bb", "aa", "a"));
+ EXPECT_EQ("bbb", SubstVar("bbb", "aa", "a"));
+
+ EXPECT_EQ("aa", SubstVar("aaaa", "aa", "a"));
+ EXPECT_EQ("aaaa", SubstVar("aa", "a", "aa"));
+ EXPECT_EQ("aaaa", SubstVar("aaaa", "a", "a"));
+ EXPECT_EQ("a a a a ", SubstVar("aaaa", "a", "a "));
+
+ EXPECT_EQ(" bb bb bb bb ", SubstVar(" a a a a ", "a", "bb"));
+ EXPECT_EQ(" bb bb bb bb ", SubstVar(" aaa aaa aaa aaa ", "aaa", "bb"));
+ EXPECT_EQ(" bb a bb a bb a bb ", SubstVar(" aaa a aaa a aaa a aaa ", "aaa", "bb"));
+
+}
+TEST(StrUtilTest,Base64Encode)
+{
+ EXPECT_EQ("QWxhZGRpbjpvcGVuIHNlc2FtZQ==", Base64Encode("Aladdin:open sesame"));
+ EXPECT_EQ("cGxlYXN1cmUu", Base64Encode("pleasure."));
+ EXPECT_EQ("bGVhc3VyZS4=", Base64Encode("leasure."));
+ EXPECT_EQ("ZWFzdXJlLg==", Base64Encode("easure."));
+ EXPECT_EQ("YXN1cmUu", Base64Encode("asure."));
+ EXPECT_EQ("c3VyZS4=", Base64Encode("sure."));
+ EXPECT_EQ("dXJlLg==", Base64Encode("ure."));
+ EXPECT_EQ("cmUu", Base64Encode("re."));
+ EXPECT_EQ("ZS4=", Base64Encode("e."));
+ EXPECT_EQ("Lg==", Base64Encode("."));
+ EXPECT_EQ("", Base64Encode(""));
+ EXPECT_EQ("IA==", Base64Encode("\x20"));
+ EXPECT_EQ("/w==", Base64Encode("\xff"));
+ EXPECT_EQ("/A==", Base64Encode("\xfc"));
+ EXPECT_EQ("//8=", Base64Encode("\xff\xff"));
+}
+static void ReadMessagesTestWithNewLine(char const * const nl, char const * const ab)
+{
+ SCOPED_TRACE(SubstVar(SubstVar(nl, "\n", "n"), "\r", "r") + " # " + ab);
+ FileFd fd;
+ std::string pkgA = "Package: pkgA\n"
+ "Version: 1\n"
+ "Size: 100\n"
+ "Description: aaa\n"
+ " aaa";
+ std::string pkgB = "Package: pkgB\n"
+ "Version: 1\n"
+ "Flag: no\n"
+ "Description: bbb";
+ std::string pkgC = "Package: pkgC\n"
+ "Version: 2\n"
+ "Flag: yes\n"
+ "Description:\n"
+ " ccc";
+
+ openTemporaryFile("readmessage", fd, (pkgA + nl + pkgB + nl + pkgC + nl).c_str());
+ std::vector<std::string> list;
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(3u, list.size());
+ EXPECT_EQ(pkgA, list[0]);
+ EXPECT_EQ(pkgB, list[1]);
+ EXPECT_EQ(pkgC, list[2]);
+
+ size_t const msgsize = 63990;
+ openTemporaryFile("readmessage", fd);
+ for (size_t j = 0; j < msgsize; ++j)
+ fd.Write(ab, strlen(ab));
+ for (size_t i = 0; i < 21; ++i)
+ {
+ std::string msg;
+ strprintf(msg, "msgsize=%zu i=%zu", msgsize, i);
+ SCOPED_TRACE(msg);
+ fd.Seek((msgsize + (i - 1)) * strlen(ab));
+ fd.Write(ab, strlen(ab));
+ fd.Write(nl, strlen(nl));
+ fd.Seek(0);
+ list.clear();
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(1u, list.size());
+ EXPECT_EQ((msgsize + i) * strlen(ab), list[0].length());
+ EXPECT_EQ(std::string::npos, list[0].find_first_not_of(ab));
+ }
+
+ list.clear();
+ fd.Write(pkgA.c_str(), pkgA.length());
+ fd.Write(nl, strlen(nl));
+ fd.Seek(0);
+ EXPECT_TRUE(ReadMessages(fd.Fd(), list));
+ EXPECT_EQ(2u, list.size());
+ EXPECT_EQ((msgsize + 20) * strlen(ab), list[0].length());
+ EXPECT_EQ(std::string::npos, list[0].find_first_not_of(ab));
+ EXPECT_EQ(pkgA, list[1]);
+
+
+ fd.Close();
+}
+TEST(StrUtilTest,ReadMessages)
+{
+ ReadMessagesTestWithNewLine("\n\n", "a");
+ ReadMessagesTestWithNewLine("\r\n\r\n", "a");
+ ReadMessagesTestWithNewLine("\n\n", "ab");
+ ReadMessagesTestWithNewLine("\r\n\r\n", "ab");
+}
+TEST(StrUtilTest,QuoteString)
+{
+ EXPECT_EQ("", QuoteString("", ""));
+ EXPECT_EQ("K%c3%b6ln", QuoteString("Köln", ""));
+ EXPECT_EQ("Köln", DeQuoteString(QuoteString("Köln", "")));
+ EXPECT_EQ("Köln", DeQuoteString(DeQuoteString(QuoteString(QuoteString("Köln", ""), ""))));
+ EXPECT_EQ("~-_$#|u%c3%a4%c3%b6%c5%a6%e2%84%a2%e2%85%9e%c2%b1%c3%86%e1%ba%9e%c2%aa%c3%9f", QuoteString("~-_$#|uäöŦ™⅞±Æẞªß", ""));
+ EXPECT_EQ("~-_$#|uäöŦ™⅞±Æẞªß", DeQuoteString(QuoteString("~-_$#|uäöŦ™⅞±Æẞªß", "")));
+ EXPECT_EQ("%45ltvill%65%2d%45rbach", QuoteString("Eltville-Erbach", "E-Ae"));
+ EXPECT_EQ("Eltville-Erbach", DeQuoteString(QuoteString("Eltville-Erbach", "")));
+}
+
+static void EXPECT_STRTONUM(APT::StringView const str, bool const success, unsigned long const expected, unsigned const base)
+{
+ SCOPED_TRACE(std::string(str.data(), str.length()));
+ SCOPED_TRACE(base);
+ unsigned long N1 = 1000;
+ unsigned long long N2 = 1000;
+ if (not success)
+ {
+ EXPECT_FALSE(StrToNum(str.data(), N1, str.length(), base));
+ EXPECT_FALSE(StrToNum(str.data(), N2, str.length(), base));
+ return;
+ }
+ EXPECT_TRUE(StrToNum(str.data(), N1, str.length(), base));
+ EXPECT_EQ(expected, N1);
+
+ EXPECT_TRUE(StrToNum(str.data(), N2, str.length(), base));
+ EXPECT_EQ(expected, N2);
+}
+TEST(StrUtilTest,StrToNum)
+{
+ EXPECT_STRTONUM("", true, 0, 10);
+ EXPECT_STRTONUM(" ", true, 0, 10);
+ EXPECT_STRTONUM("0", true, 0, 10);
+ EXPECT_STRTONUM("1", true, 1, 10);
+ EXPECT_STRTONUM(" 1 ", true, 1, 10);
+ EXPECT_STRTONUM("1", true, 1, 8);
+ EXPECT_STRTONUM("10", true, 10, 10);
+ EXPECT_STRTONUM("10", true, 8, 8);
+ EXPECT_STRTONUM("010", true, 8, 8);
+ EXPECT_STRTONUM(" 010 ", true, 8, 8);
+ EXPECT_STRTONUM("-1", false, 0, 10);
+ EXPECT_STRTONUM(" -1 ", false, 0, 10);
+ EXPECT_STRTONUM("11", true, 3, 2);
+
+ unsigned long long bigN = 0;
+ unsigned long smallN = 0;
+ auto bigLimit = std::to_string(std::numeric_limits<unsigned long long>::max());
+ if (std::numeric_limits<unsigned long>::max() < std::numeric_limits<unsigned long long>::max())
+ {
+ EXPECT_TRUE(StrToNum(bigLimit.c_str(), bigN, bigLimit.length(), 10));
+ EXPECT_EQ(std::numeric_limits<unsigned long long>::max(), bigN);
+ EXPECT_FALSE(StrToNum(bigLimit.c_str(), smallN, bigLimit.length(), 10));
+ }
+ bigLimit.append("0");
+ EXPECT_FALSE(StrToNum(bigLimit.c_str(), bigN, bigLimit.length(), 10));
+ EXPECT_FALSE(StrToNum(bigLimit.c_str(), smallN, bigLimit.length(), 10));
+
+ auto const smallLimit = std::to_string(std::numeric_limits<unsigned long>::max());
+ EXPECT_TRUE(StrToNum(smallLimit.c_str(), bigN, smallLimit.length(), 10));
+ EXPECT_EQ(std::numeric_limits<unsigned long>::max(), bigN);
+ EXPECT_TRUE(StrToNum(smallLimit.c_str(), smallN, smallLimit.length(), 10));
+ EXPECT_EQ(std::numeric_limits<unsigned long>::max(), smallN);
+}
+
+TEST(StrUtilTest,RFC1123StrToTime)
+{
+ {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 6 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 6 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 8:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 -0000", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 +0000", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 6-Nov-94 08:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sunday, 06-Nov-94 8:49:37 GMT", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 6 08:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 06 08:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ } {
+ time_t t;
+ EXPECT_TRUE(RFC1123StrToTime("Sun Nov 6 8:49:37 1994", t));
+ EXPECT_EQ(784111777, t);
+ }
+ time_t t;
+ EXPECT_FALSE(RFC1123StrToTime("So, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime(", 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Son, 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun: 06 Nov 1994 08:49:37 UTC", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 08:49:37 GMT+1", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sun, 06 Nov 1994 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06 Nov 1994 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sonntag, 06 Nov 1994 08:49:37 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("domingo Nov 6 08:49:37 1994", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday: 06-Nov-94 08:49:37 GMT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 GMT+1", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 EDT", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 -0100", t));
+ EXPECT_FALSE(RFC1123StrToTime("Sunday, 06-Nov-94 08:49:37 -0.1", t));
+}
+TEST(StrUtilTest, LookupTag)
+{
+ EXPECT_EQ("", LookupTag("", "Field", ""));
+ EXPECT_EQ("", LookupTag("", "Field", nullptr));
+ EXPECT_EQ("default", LookupTag("", "Field", "default"));
+ EXPECT_EQ("default", LookupTag("Field1: yes", "Field", "default"));
+ EXPECT_EQ("default", LookupTag("Fiel: yes", "Field", "default"));
+ EXPECT_EQ("default", LookupTag("Fiel d: yes", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field: foo", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field: foo\n", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("\nField: foo\n", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field:foo", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field:foo\n", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("\nField:foo\n", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field:\tfoo\n", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field: foo \t", "Field", "default"));
+ EXPECT_EQ("foo", LookupTag("Field: foo \t\n", "Field", "default"));
+ EXPECT_EQ("Field : yes", LookupTag("Field: Field : yes \t\n", "Field", "default"));
+ EXPECT_EQ("Field : yes", LookupTag("Field:\n Field : yes \t\n", "Field", "default"));
+ EXPECT_EQ("Field : yes", LookupTag("Foo: bar\nField: Field : yes \t\n", "Field", "default"));
+ EXPECT_EQ("line1\nline2", LookupTag("Multi: line1\n line2", "Multi", "default"));
+ EXPECT_EQ("line1\nline2", LookupTag("Multi: line1\n line2\n", "Multi", "default"));
+ EXPECT_EQ("line1\nline2", LookupTag("Multi:\n line1\n line2\n", "Multi", "default"));
+ EXPECT_EQ("line1\n\nline2", LookupTag("Multi:\n line1\n .\n line2\n", "Multi", "default"));
+ EXPECT_EQ("line1\na\nline2", LookupTag("Multi:\n line1\n a\n line2\n", "Multi", "default"));
+ EXPECT_EQ("line1\nfoo\nline2", LookupTag("Multi:\n line1\n foo\n line2\n", "Multi", "default"));
+ EXPECT_EQ("line1\n line2", LookupTag("Multi: line1\n line2", "Multi", "default"));
+ EXPECT_EQ(" line1\n \t line2", LookupTag("Multi:\t \n line1\n \t line2\n", "Multi", "default"));
+ EXPECT_EQ(" line1\n\n\n \t line2", LookupTag("Multi:\t \n line1\n .\n . \n \t line2\n", "Multi", "default"));
+
+ std::string const msg =
+ "Field1: Value1\nField2:Value2\nField3:\t Value3\n"
+ "Multi-Field1: Line1\n Line2\nMulti-Field2:\n Line1\n Line2\n"
+ "Field4: Value4\nField5:Value5";
+ EXPECT_EQ("Value1", LookupTag(msg, "Field1", ""));
+ EXPECT_EQ("Value2", LookupTag(msg, "Field2", ""));
+ EXPECT_EQ("Value3", LookupTag(msg, "Field3", ""));
+ EXPECT_EQ("Line1\nLine2", LookupTag(msg, "Multi-Field1", ""));
+ EXPECT_EQ("Line1\nLine2", LookupTag(msg, "Multi-Field2", ""));
+ EXPECT_EQ("Value4", LookupTag(msg, "Field4", ""));
+ EXPECT_EQ("Value5", LookupTag(msg, "Field5", ""));
+}
+
+TEST(StrUtilTest, DisplayLength)
+{
+ EXPECT_EQ(0, APT::String::DisplayLength(""));
+ EXPECT_EQ(1, APT::String::DisplayLength("a"));
+ EXPECT_EQ(3, APT::String::DisplayLength("apt"));
+ EXPECT_EQ(1, APT::String::DisplayLength("@"));
+ EXPECT_EQ(3, APT::String::DisplayLength("き"));
+
+ EXPECT_EQ(1, APT::String::DisplayLength("$"));
+ EXPECT_EQ(2, APT::String::DisplayLength("¢"));
+ EXPECT_EQ(3, APT::String::DisplayLength("ह"));
+ EXPECT_EQ(3, APT::String::DisplayLength("€"));
+ EXPECT_EQ(3, APT::String::DisplayLength("한"));
+ EXPECT_EQ(4, APT::String::DisplayLength("𐍈"));
+ EXPECT_EQ(16, APT::String::DisplayLength("𐍈한€ह¢$"));
+}
diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc
new file mode 100644
index 0000000..51a574f
--- /dev/null
+++ b/test/libapt/tagfile_test.cc
@@ -0,0 +1,345 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+
+#include <cstdlib>
+#include <cstring>
+#include <sstream>
+#include <string>
+#include <unistd.h>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+TEST(TagFileTest,SingleField)
+{
+ FileFd fd;
+ openTemporaryFile("singlefield", fd, "FieldA-12345678: the value of the field");
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ ASSERT_TRUE(tfile.Step(section));
+
+ // It has one field
+ EXPECT_EQ(1u, section.Count());
+ // ... and it is called FieldA-12345678
+ EXPECT_TRUE(section.Exists("FieldA-12345678"));
+ // its value is correct
+ EXPECT_EQ("the value of the field", section.FindS("FieldA-12345678"));
+ // A non-existent field has an empty string as value
+ EXPECT_EQ("", section.FindS("FieldB-12345678"));
+ // ... and Exists does not lie about missing fields...
+ EXPECT_FALSE(section.Exists("FieldB-12345678"));
+ // There is only one section in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+
+ // Now we scan an empty section to test reset
+ ASSERT_TRUE(section.Scan("\n\n", 2, true));
+ EXPECT_EQ(0u, section.Count());
+ EXPECT_FALSE(section.Exists("FieldA-12345678"));
+ EXPECT_FALSE(section.Exists("FieldB-12345678"));
+
+ openTemporaryFile("emptyfile", fd);
+ ASSERT_FALSE(tfile.Step(section));
+ EXPECT_EQ(0u, section.Count());
+}
+
+TEST(TagFileTest,MultipleSections)
+{
+ FileFd fd;
+ openTemporaryFile("bigsection", fd, "Package: pkgA\n"
+ "Version: 1\n"
+ "Size: 100\n"
+ "Description: aaa\n"
+ " aaa\n"
+ "\n"
+ "Package: pkgB\n"
+ "Version: 1\n"
+ "Flag: no\n"
+ "Description: bbb\n"
+ "\n"
+ "Package: pkgC\n"
+ "Version: 2\n"
+ "Flag: yes\n"
+ "Description:\n"
+ " ccc\n"
+ );
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ EXPECT_FALSE(section.Exists("Version"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4u, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("Size"));
+ EXPECT_FALSE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgA", section.FindS("Package"));
+ EXPECT_EQ("1", section.FindS("Version"));
+ EXPECT_EQ(1u, section.FindULL("Version"));
+ EXPECT_EQ(100u, section.FindULL("Size"));
+ unsigned long Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1u, Flags);
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0u, Flags);
+ EXPECT_EQ("aaa\n aaa", section.FindS("Description"));
+
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4u, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("Size"));
+ EXPECT_TRUE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgB", section.FindS("Package"));
+ EXPECT_EQ("1", section.FindS("Version"));
+ EXPECT_EQ(1u, section.FindULL("Version"));
+ EXPECT_EQ(0u, section.FindULL("Size"));
+ Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0u, Flags);
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(0u, Flags);
+ EXPECT_EQ("bbb", section.FindS("Description"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_EQ(4u, section.Count());
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("Size"));
+ EXPECT_TRUE(section.Exists("Flag"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("pkgC", section.FindS("Package"));
+ EXPECT_EQ("2", section.FindS("Version"));
+ EXPECT_EQ(2u, section.FindULL("Version"));
+ Flags = 0;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1u, Flags);
+ Flags = 1;
+ EXPECT_TRUE(section.FindFlag("Flag", Flags, 1));
+ EXPECT_EQ(1u, Flags);
+ EXPECT_EQ("ccc", section.FindS("Description"));
+
+ // There is no section left in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+}
+
+TEST(TagFileTest,BigSection)
+{
+ size_t const count = 500;
+ std::stringstream content;
+ for (size_t i = 0; i < count; ++i)
+ content << "Field-" << i << ": " << (2000 + i) << std::endl;
+
+ FileFd fd;
+ openTemporaryFile("bigsection", fd, content.str().c_str());
+
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ EXPECT_TRUE(tfile.Step(section));
+
+ EXPECT_EQ(count, section.Count());
+ for (size_t i = 0; i < count; ++i)
+ {
+ std::stringstream name;
+ name << "Field-" << i;
+ EXPECT_TRUE(section.Exists(name.str().c_str())) << name.str() << " does not exist";
+ EXPECT_EQ((i + 2000), section.FindULL(name.str().c_str()));
+ }
+
+ // There is only one section in this tag file
+ EXPECT_FALSE(tfile.Step(section));
+}
+
+TEST(TagFileTest, PickedUpFromPreviousCall)
+{
+ size_t const count = 500;
+ std::stringstream contentstream;
+ for (size_t i = 0; i < count; ++i)
+ contentstream << "Field-" << i << ": " << (2000 + i) << std::endl;
+ contentstream << std::endl << std::endl;
+ std::string content = contentstream.str();
+
+ pkgTagSection section;
+ EXPECT_FALSE(section.Scan(content.c_str(), content.size()/2));
+ EXPECT_NE(0u, section.Count());
+ EXPECT_NE(count, section.Count());
+ EXPECT_TRUE(section.Scan(content.c_str(), content.size(), false));
+ EXPECT_EQ(count, section.Count());
+
+ for (size_t i = 0; i < count; ++i)
+ {
+ std::stringstream name;
+ name << "Field-" << i;
+ EXPECT_TRUE(section.Exists(name.str().c_str())) << name.str() << " does not exist";
+ EXPECT_EQ((i + 2000), section.FindULL(name.str().c_str()));
+ }
+}
+
+TEST(TagFileTest, SpacesEverywhere)
+{
+ std::string content =
+ "Package: pkgA\n"
+ "Package: pkgB\n"
+ "NoSpaces:yes\n"
+ "NoValue:\n"
+ "TagSpaces\t :yes\n"
+ "ValueSpaces: \tyes\n"
+ "BothSpaces \t:\t yes\n"
+ "TrailingSpaces: yes\t \n"
+ "Naming Space: yes\n"
+ "Naming Spaces: yes\n"
+ "Package : pkgC \n"
+ "Multi-Colon::yes:\n"
+ "\n\n";
+
+ pkgTagSection section;
+ EXPECT_TRUE(section.Scan(content.c_str(), content.size()));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("NoSpaces"));
+ EXPECT_TRUE(section.Exists("NoValue"));
+ EXPECT_TRUE(section.Exists("TagSpaces"));
+ EXPECT_TRUE(section.Exists("ValueSpaces"));
+ EXPECT_TRUE(section.Exists("BothSpaces"));
+ EXPECT_TRUE(section.Exists("TrailingSpaces"));
+ EXPECT_TRUE(section.Exists("Naming Space"));
+ EXPECT_TRUE(section.Exists("Naming Spaces"));
+ EXPECT_TRUE(section.Exists("Multi-Colon"));
+ EXPECT_EQ("pkgC", section.FindS("Package"));
+ EXPECT_EQ("yes", section.FindS("NoSpaces"));
+ EXPECT_EQ("", section.FindS("NoValue"));
+ EXPECT_EQ("yes", section.FindS("TagSpaces"));
+ EXPECT_EQ("yes", section.FindS("ValueSpaces"));
+ EXPECT_EQ("yes", section.FindS("BothSpaces"));
+ EXPECT_EQ("yes", section.FindS("TrailingSpaces"));
+ EXPECT_EQ("yes", section.FindS("Naming Space"));
+ EXPECT_EQ("yes", section.FindS("Naming Spaces"));
+ EXPECT_EQ(":yes:", section.FindS("Multi-Colon"));
+ // overridden values are still present, but not really accessible
+ EXPECT_EQ(12u, section.Count());
+}
+
+TEST(TagFileTest, Comments)
+{
+ FileFd fd;
+ openTemporaryFile("commentfile", fd, "# Leading comments should be ignored.\n"
+"\n"
+"# A wild second comment appears!\n"
+"\n"
+"Source: foo\n"
+"#Package: foo\n"
+"Section: bar\n"
+"#Section: overridden\n"
+"Priority: optional\n"
+"Build-Depends: debhelper,\n"
+"# apt-utils, (temporarily disabled)\n"
+" apt\n"
+"\n"
+"# Comments in the middle shouldn't result in extra blank paragraphs either.\n"
+"\n"
+"# Ditto.\n"
+"\n"
+"# A comment at the top of a paragraph should be ignored.\n"
+"Package: foo\n"
+"Architecture: any\n"
+"Description: An awesome package\n"
+" # This should still appear in the result.\n"
+"# this one shouldn't\n"
+" Blah, blah, blah. # but this again.\n"
+"# A comment at the end of a paragraph should be ignored.\n"
+"\n"
+"# Trailing comments shouldn't cause extra blank paragraphs."
+ );
+
+ pkgTagFile tfile(&fd, pkgTagFile::SUPPORT_COMMENTS, 1);
+ pkgTagSection section;
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_FALSE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("Source"));
+ EXPECT_EQ("foo", section.FindS("Source"));
+ EXPECT_TRUE(section.Exists("Section"));
+ EXPECT_EQ("bar", section.FindS("Section"));
+ EXPECT_TRUE(section.Exists("Priority"));
+ EXPECT_EQ("optional", section.FindS("Priority"));
+ EXPECT_TRUE(section.Exists("Build-Depends"));
+ EXPECT_EQ("debhelper,\n apt", section.FindS("Build-Depends"));
+
+ EXPECT_TRUE(tfile.Step(section));
+ EXPECT_FALSE(section.Exists("Source"));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_EQ("foo", section.FindS("Package"));
+ EXPECT_FALSE(section.Exists("Section"));
+ EXPECT_TRUE(section.Exists("Architecture"));
+ EXPECT_EQ("any", section.FindS("Architecture"));
+ EXPECT_FALSE(section.Exists("Build-Depends"));
+ EXPECT_TRUE(section.Exists("Description"));
+ EXPECT_EQ("An awesome package\n # This should still appear in the result.\n Blah, blah, blah. # but this again.", section.FindS("Description"));
+
+ EXPECT_FALSE(tfile.Step(section));
+}
+
+TEST(TagFileTest, EmptyTagName)
+{
+ FileFd fd;
+ openTemporaryFile("emptytagname", fd, "0:\n"
+"PACKAGE:0\n"
+"\n"
+":\n"
+"PACKAGE:\n"
+"\n"
+"PACKAGE:\n"
+":\n"
+"\n"
+"PACKAGE:\n"
+":\n"
+"Version:1\n"
+"\n"
+"PACKAGE::\n"
+ );
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("0", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists("0"));
+ EXPECT_EQ("", section.FindS("0"));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(3u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_EQ("1", section.FindS("Version"));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(1u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ(":", section.FindS("PACKAGE"));
+
+ EXPECT_FALSE(tfile.Step(section));
+}
diff --git a/test/libapt/tagsection_test.cc b/test/libapt/tagsection_test.cc
new file mode 100644
index 0000000..80cecca
--- /dev/null
+++ b/test/libapt/tagsection_test.cc
@@ -0,0 +1,232 @@
+#include <config.h>
+
+#include <apt-pkg/fileutl.h>
+#include <apt-pkg/tagfile.h>
+
+#include <sstream>
+#include <string>
+
+#include <gtest/gtest.h>
+
+#include "file-helpers.h"
+
+std::string packageValue = "aaaa";
+std::string typoValue = "aa\n"
+ " .\n"
+ " cc";
+std::string typoRawValue = "\n " + typoValue;
+std::string overrideValue = "1";
+
+static void EXPECT_SECTION_WITH_ALL_CONTENT(pkgTagSection const &section)
+{
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoA"));
+ EXPECT_EQ(typoRawValue, section.FindRawS("TypoA"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4u, section.Count());
+}
+
+static void setupTestcaseStart(FileFd &fd, pkgTagSection &section, std::string &content)
+{
+ openTemporaryFile("writesection", fd);
+ content = "Package: " + packageValue + "\n"
+ "TypoA:\n " + typoValue + "\n"
+ "Override: " + overrideValue + "\n"
+ "Override-Backup: " + overrideValue + "\n"
+ "\n";
+ EXPECT_TRUE(section.Scan(content.c_str(), content.length(), true));
+ EXPECT_SECTION_WITH_ALL_CONTENT(section);
+}
+TEST(TagSectionTest,WriteUnmodified)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ EXPECT_TRUE(section.Write(fd));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_SECTION_WITH_ALL_CONTENT(section);
+}
+TEST(TagSectionTest,WriteUnmodifiedOrder)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_SECTION_WITH_ALL_CONTENT(section);
+}
+TEST(TagSectionTest,WriteUnmodifiedOrderReversed)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Override", "TypoA", "Package", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_SECTION_WITH_ALL_CONTENT(section);
+}
+TEST(TagSectionTest,WriteUnmodifiedOrderNotAll)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ char const * const order[] = { "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_SECTION_WITH_ALL_CONTENT(section);
+}
+TEST(TagSectionTest,WriteNoOrderRename)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rename("TypoA", "TypoB"));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoB"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4u, section.Count());
+}
+TEST(TagSectionTest,WriteNoOrderRemove)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Remove("TypoA"));
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", ""));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_FALSE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(2u, section.Count());
+}
+TEST(TagSectionTest,WriteNoOrderRewrite)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", "42"));
+ EXPECT_TRUE(section.Write(fd, NULL, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(42, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4u, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRename)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rename("TypoA", "TypoB"));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_TRUE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(typoValue, section.FindS("TypoB"));
+ EXPECT_EQ(1, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4u, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRemove)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Remove("TypoA"));
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", ""));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_FALSE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_FALSE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(2u, section.Count());
+}
+TEST(TagSectionTest,WriteOrderRewrite)
+{
+ FileFd fd;
+ pkgTagSection section;
+ std::string content;
+ setupTestcaseStart(fd, section, content);
+ std::vector<pkgTagSection::Tag> rewrite;
+ rewrite.push_back(pkgTagSection::Tag::Rewrite("Override", "42"));
+ char const * const order[] = { "Package", "TypoA", "Override", NULL };
+ EXPECT_TRUE(section.Write(fd, order, rewrite));
+ EXPECT_TRUE(fd.Seek(0));
+ pkgTagFile tfile(&fd);
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_TRUE(section.Exists("Package"));
+ EXPECT_TRUE(section.Exists("TypoA"));
+ EXPECT_FALSE(section.Exists("TypoB"));
+ EXPECT_TRUE(section.Exists("Override"));
+ EXPECT_TRUE(section.Exists("Override-Backup"));
+ EXPECT_EQ(packageValue, section.FindS("Package"));
+ EXPECT_EQ(42, section.FindI("Override"));
+ EXPECT_EQ(1, section.FindI("Override-Backup"));
+ EXPECT_EQ(4u, section.Count());
+}
diff --git a/test/libapt/teestream_test.cc b/test/libapt/teestream_test.cc
new file mode 100644
index 0000000..a897e08
--- /dev/null
+++ b/test/libapt/teestream_test.cc
@@ -0,0 +1,39 @@
+#include <config.h>
+
+#include "../interactive-helper/teestream.h"
+#include <fstream>
+#include <sstream>
+#include <string>
+
+#include <gtest/gtest.h>
+
+TEST(TeeStreamTest,TwoStringSinks)
+{
+ std::ostringstream one, two;
+ basic_teeostream<char> tee(one, two);
+ tee << "This is the " << 1 << '.' << " Test, we expect: " << std::boolalpha << true << "\n";
+ std::string okay("This is the 1. Test, we expect: true\n");
+ EXPECT_EQ(okay, one.str());
+ EXPECT_EQ(okay, two.str());
+ EXPECT_EQ(one.str(), two.str());
+}
+
+TEST(TeeStreamTest,DevNullSink1)
+{
+ std::ostringstream one;
+ std::fstream two("/dev/null");
+ basic_teeostream<char> tee(one, two);
+ tee << "This is the " << 2 << '.' << " Test, we expect: " << std::boolalpha << false << "\n";
+ std::string okay("This is the 2. Test, we expect: false\n");
+ EXPECT_EQ(okay, one.str());
+}
+
+TEST(TeeStreamTest,DevNullSink2)
+{
+ std::ostringstream one;
+ std::fstream two("/dev/null");
+ basic_teeostream<char> tee(two, one);
+ tee << "This is the " << 3 << '.' << " Test, we expect: " << std::boolalpha << false << "\n";
+ std::string okay("This is the 3. Test, we expect: false\n");
+ EXPECT_EQ(okay, one.str());
+}
diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc
new file mode 100644
index 0000000..519de49
--- /dev/null
+++ b/test/libapt/uri_test.cc
@@ -0,0 +1,216 @@
+#include <config.h>
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/proxy.h>
+#include <apt-pkg/strutl.h>
+#include <gtest/gtest.h>
+#include <string>
+
+TEST(URITest, BasicHTTP)
+{
+ URI U("http://www.debian.org:90/temp/test");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(90u, U.Port);
+ EXPECT_EQ("www.debian.org", U.Host);
+ EXPECT_EQ("/temp/test", U.Path);
+ EXPECT_EQ("http://www.debian.org:90/temp/test", (std::string)U);
+ EXPECT_EQ("http://www.debian.org:90", URI::SiteOnly(U));
+ EXPECT_EQ("http://www.debian.org:90/temp/test", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://www.debian.org:90/temp/test", URI::NoUserPassword(U));
+ // Login data
+ U = URI("http://jgg:foo@ualberta.ca/blah");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("jgg", U.User);
+ EXPECT_EQ("foo", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("ualberta.ca", U.Host);
+ EXPECT_EQ("/blah", U.Path);
+ EXPECT_EQ("http://jgg:foo@ualberta.ca/blah", (std::string)U);
+ EXPECT_EQ("http://ualberta.ca", URI::SiteOnly(U));
+ EXPECT_EQ("http://ualberta.ca/blah", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://ualberta.ca/blah", URI::NoUserPassword(U));
+ // just a user
+ U = URI("https://apt@example.org/blah");
+ EXPECT_EQ("https", U.Access);
+ EXPECT_EQ("apt", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("example.org", U.Host);
+ EXPECT_EQ("/blah", U.Path);
+ EXPECT_EQ("https://apt@example.org/blah", (std::string)U);
+ EXPECT_EQ("https://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("https://example.org/blah", URI::ArchiveOnly(U));
+ EXPECT_EQ("https://example.org/blah", URI::NoUserPassword(U));
+}
+TEST(URITest, SingeSlashFile)
+{
+ URI U("file:/usr/bin/foo");
+ EXPECT_EQ("file", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("", U.Host);
+ EXPECT_EQ("/usr/bin/foo", U.Path);
+ EXPECT_EQ("file:/usr/bin/foo", (std::string)U);
+ EXPECT_EQ("file:", URI::SiteOnly(U));
+ EXPECT_EQ("file:/usr/bin/foo", URI::ArchiveOnly(U));
+ EXPECT_EQ("file:/usr/bin/foo", URI::NoUserPassword(U));
+}
+TEST(URITest, BasicCDROM)
+{
+ URI U("cdrom:Moo Cow Rom:/debian");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("Moo Cow Rom", U.Host);
+ EXPECT_EQ("/debian", U.Path);
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", (std::string)U);
+ EXPECT_EQ("cdrom://Moo Cow Rom", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://Moo Cow Rom/debian", URI::NoUserPassword(U));
+}
+TEST(URITest, RelativeGzip)
+{
+ URI U("gzip:./bar/cow");
+ EXPECT_EQ("gzip", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ(".", U.Host);
+ EXPECT_EQ("/bar/cow", U.Path);
+ EXPECT_EQ("gzip://./bar/cow", (std::string)U);
+ EXPECT_EQ("gzip://.", URI::SiteOnly(U));
+ EXPECT_EQ("gzip://./bar/cow", URI::ArchiveOnly(U));
+ EXPECT_EQ("gzip://./bar/cow", URI::NoUserPassword(U));
+}
+TEST(URITest, NoSlashFTP)
+{
+ URI U("ftp:ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb");
+ EXPECT_EQ("ftp", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("ftp.fr.debian.org", U.Host);
+ EXPECT_EQ("/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", U.Path);
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", (std::string)U);
+ EXPECT_EQ("ftp://ftp.fr.debian.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://ftp.fr.debian.org/debian/pool/main/x/xtel/xtel_3.2.1-15_i386.deb", URI::NoUserPassword(U));
+}
+TEST(URITest, RFC2732)
+{
+ URI U("http://[1080::8:800:200C:417A]/foo");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("1080::8:800:200C:417A", U.Host);
+ EXPECT_EQ("/foo", U.Path);
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", (std::string)U);
+ EXPECT_EQ("http://[1080::8:800:200C:417A]", URI::SiteOnly(U));
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[1080::8:800:200C:417A]/foo", URI::NoUserPassword(U));
+ // with port
+ U = URI("http://[::FFFF:129.144.52.38]:80/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(80u, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38]:80/index.html", URI::NoUserPassword(U));
+ // extra colon
+ U = URI("http://[::FFFF:129.144.52.38:]:80/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(80u, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38:", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]:80/index.html", URI::NoUserPassword(U));
+ // extra colon port
+ U = URI("http://[::FFFF:129.144.52.38:]/index.html");
+ EXPECT_EQ("http", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("::FFFF:129.144.52.38:", U.Host);
+ EXPECT_EQ("/index.html", U.Path);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", (std::string)U);
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]", URI::SiteOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", URI::ArchiveOnly(U));
+ EXPECT_EQ("http://[::FFFF:129.144.52.38:]/index.html", URI::NoUserPassword(U));
+ // My Evil Corruption of RFC 2732 to handle CDROM names!
+ // Fun for the whole family! */
+ U = URI("cdrom:[The Debian 1.2 disk, 1/2 R1:6]/debian/");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("The Debian 1.2 disk, 1/2 R1:6", U.Host);
+ EXPECT_EQ("/debian/", U.Path);
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian/", (std::string)U);
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://[The Debian 1.2 disk, 1/2 R1:6]/debian/", URI::NoUserPassword(U));
+ // no brackets
+ U = URI("cdrom:Foo Bar Cow/debian/");
+ EXPECT_EQ("cdrom", U.Access);
+ EXPECT_EQ("", U.User);
+ EXPECT_EQ("", U.Password);
+ EXPECT_EQ(0u, U.Port);
+ EXPECT_EQ("Foo Bar Cow", U.Host);
+ EXPECT_EQ("/debian/", U.Path);
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian/", (std::string)U);
+ EXPECT_EQ("cdrom://Foo Bar Cow", URI::SiteOnly(U));
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian", URI::ArchiveOnly(U));
+ EXPECT_EQ("cdrom://Foo Bar Cow/debian/", URI::NoUserPassword(U));
+ // percent encoded password
+ U = URI("ftp://foo:b%40r@example.org");
+ EXPECT_EQ("foo", U.User);
+ EXPECT_EQ("b@r", U.Password);
+ EXPECT_EQ("ftp://foo:b%40r@example.org/", (std::string) U);
+ EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
+ // percent encoded user
+ U = URI("ftp://f%40o:bar@example.org");
+ EXPECT_EQ("f@o", U.User);
+ EXPECT_EQ("bar", U.Password);
+ EXPECT_EQ("ftp://f%40o:bar@example.org/", (std::string) U);
+ EXPECT_EQ("ftp://example.org", URI::SiteOnly(U));
+ EXPECT_EQ("ftp://example.org", URI::ArchiveOnly(U));
+ EXPECT_EQ("ftp://example.org/", URI::NoUserPassword(U));
+}
+TEST(URITest, AutoProxyTest)
+{
+ URI u0("http://www.debian.org:90/temp/test");
+ URI u1("http://www.debian.org:91/temp/test");
+
+ _config->Set("Acquire::http::Proxy-Auto-Detect", "./apt-proxy-script");
+
+ // Scenario 0: Autodetecting a simple proxy
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 1: Proxy stays the same if it is already set
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com");
+
+ // Scenario 2: Reading with stderr output works fine
+ _config->Clear("Acquire::http::proxy::www.debian.org");
+ AutoDetectProxy(u1);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+
+ // Scenario 1 again: Proxy stays the same if it is already set
+ AutoDetectProxy(u0);
+ EXPECT_EQ(_config->Find("Acquire::http::proxy::www.debian.org", ""), "http://example.com/foo");
+}
diff --git a/test/thread-safety/not-thread-safe.sh b/test/thread-safety/not-thread-safe.sh
new file mode 100755
index 0000000..f86ef39
--- /dev/null
+++ b/test/thread-safety/not-thread-safe.sh
@@ -0,0 +1,7 @@
+git grep -p --color -n -E "$(grep -v ^# test/thread-safety/thread-check.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/index.html'
+git grep -p --color -n -E "$(grep ^# test/thread-safety/thread-check.txt | cut -f2 -d# | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/portable.html'
+
+git grep -p --color -n -E "$(grep -v ^# test/thread-safety/thread-check-internal.txt | sed 's/(.*/\\\\ *\\\\(/' | xargs | tr ' ' '|')" \
+ apt-inst/ apt-pkg/ | ansi2html | ssh alioth.debian.org 'cat > /home/groups/apt/htdocs/not-thread-safe/internal.html'
diff --git a/test/thread-safety/thread-check-internal.txt b/test/thread-safety/thread-check-internal.txt
new file mode 100644
index 0000000..c55985f
--- /dev/null
+++ b/test/thread-safety/thread-check-internal.txt
@@ -0,0 +1,3 @@
+CndSet()
+Set()
+Clear()
diff --git a/test/thread-safety/thread-check.txt b/test/thread-safety/thread-check.txt
new file mode 100644
index 0000000..ed00965
--- /dev/null
+++ b/test/thread-safety/thread-check.txt
@@ -0,0 +1,91 @@
+asctime()
+basename()
+catgets()
+crypt()
+ctermid() if passed a non-NULL argument
+ctime()
+dbm_clearerr()
+dbm_close()
+dbm_delete()
+dbm_error()
+dbm_fetch()
+dbm_firstkey()
+dbm_nextkey()
+dbm_open()
+dbm_store()
+dirname()
+dlerror()
+drand48()
+ecvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+encrypt()
+endgrent()
+endpwent()
+endutxent()
+fcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+ftw()
+gcvt() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+getc_unlocked()
+getchar_unlocked()
+getdate()
+#getenv()
+getgrent()
+getgrgid()
+getgrnam()
+gethostbyaddr() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+gethostbyname() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
+gethostent()
+getlogin()
+getnetbyaddr()
+getnetbyname()
+getnetent()
+getopt()
+getprotobyname()
+getprotobynumber()
+getprotoent()
+getpwent()
+getpwnam()
+getpwuid()
+getservbyname()
+getservbyport()
+getservent()
+getutxent()
+getutxid()
+getutxline()
+gmtime()
+hcreate()
+hdestroy()
+hsearch()
+inet_ntoa()
+l64a()
+lgamma()
+lgammaf()
+lgammal()
+localeconv()
+localtime()
+lrand48()
+mrand48()
+nftw()
+#nl_langinfo()
+ptsname()
+putc_unlocked()
+putchar_unlocked()
+putenv()
+pututxline()
+rand()
+#readdir()
+setenv()
+setgrent()
+setkey()
+setpwent()
+setutxent()
+#strerror()
+strsignal() [Added in POSIX.1-2008]
+strtok()
+#system() [Added in POSIX.1-2008]
+tmpnam() if passed a non-NULL argument
+ttyname()
+unsetenv()
+wcrtomb() if its final argument is NULL
+wcsrtombs() if its final argument is NULL
+wcstombs()
+wctomb()